Skip to content

Create



POST /api/v1/aggs_to_metric/add

Overview

Create a Generate Metrics rule

Body Request Parameters

Parameter Type Required Description
extend json Y Additional information
Allow empty: False
jsonScript json Y Rule configuration
Allow empty: False
jsonScript.type string Y Type
Example: rumToMetric
Allow empty: False
Allow empty string: False
Allowed values: ['logToMetric', 'rumToMetric', 'apmToMetric', 'metricToMetric', 'securityToMetric', 'dialingToMetric']
jsonScript.query json Y DQL query-related information
Allow empty: False
jsonScript.metricInfo json Y Metric configuration information
Allow empty: False
jsonScript.metricInfo.every string Y Frequency, supports integers with units; selectable from 1m~59m or 1h~24h, cron is not supported
Example: 5m
Allow empty string: False
jsonScript.metricInfo.metric string Y Measurement name
Example: cpu
Allow empty string: False
jsonScript.metricInfo.metricField string Y Metric name
Example: load5s
Allow empty string: False
jsonScript.metricInfo.unit string Unit
Example: load5s
Allow empty string: True
jsonScript.metricInfo.desc string Description
Example: xxx
Allow empty string: True
jsonScript.metricInfo.delaySeconds integer Data wait window, in seconds; supported values: 0/60/120/180/300/600/900/1200/1800, default 0 means no delay
Example: 60
Allowed values: [0, 60, 120, 180, 300, 600, 900, 1200, 1800]
skipRepeatNameCheck boolean Whether to skip the duplicate-name check for the measurement and metric; default false. false performs the duplicate-name check, true skips it
Example: false
Allow empty: False

Additional Parameter Notes

Request parameter description.

1. Parameters in jsonScript

Parameter type Required Description
type String Required Data source type, enum type
query Json Required Query information
metricInfo Json Required Measurement configuration information

2. Description of the jsonScript.type values

key Description
rumToMetric RUM Generate Metrics
apmToMetric APM Generate Metrics
logToMetric Logging Generate Metrics
metricToMetric Metric Generate Metrics
securityToMetric Security Check Generate Metrics

3. Description of jsonScript.metricInfo

Parameter type Required Description
every String Required Frequency, supports integers with units; selectable from 1m~59m or 1h~24h, cron is not supported
metric String Required Measurement name
metricField String Required Metric name
unit String Unit
desc String Description
delaySeconds Integer Data wait window, in seconds; supported values: 0, 60, 120, 180, 300, 600, 900, 1200, 1800, default 0 means no delay

3.1 Description of the jsonScript.metricInfo.unit unit

Unit format: custom/[\"unit type\",\"unit\"], example: custom/[\"time\",\"ms\"]
Custom unit format: custom/[\"custom\",\"custom unit\"], example: custom/[\"custom\",\"tt\"]
For standard unit types, refer to Unit Description


4. Description of jsonScript.query

Parameter type Required Description
q String Required Query statement
qtype String Query syntax type, dql/promql
qmode String Query type; selector mode: selectorQuery, manual mode: customQuery; this field affects how the query is echoed in the frontend

5. Parameters in extend

Parameter type Required Description
filters Array[dict] Filter condition list for non-Logging types
groupBy Array[str] Grouping information
funcName string Required Aggregation function (required when qmode is in selector mode; used for frontend display); allowed values: ("count", "avg", "max", "sum", "min", "count_distinct", "distribution", "p75", "p95", "p99")
fieldKey string Required Aggregation field (required when qmode is in selector mode; used for frontend display)
index string Index name for Logging types
source string This field has different meanings for different types: Logging types: source; APM types: service; RUM types: app_id; Metric types: measurement; Security Check: category
filterString string Filter condition for Logging types; the raw filter string; example: 'host:hangzhou123 -service:coredns internal:true'

Note: All fields in the extend object are used only for frontend display. The actual query statement for generating metrics is based on the query information configured in jsonScript.query. When using Distribution in selector mode, pass distribution to extend.funcName, and use histogram_auto(<field>) in jsonScript.query.q.


6. Main structure of extend.filters

Parameter type Required Description
condition string Relationship with the previous filter condition; allowed values: and, or; default: and
name string Field name to be filtered
op string Operator; allowed values: =, !=, match, not match
values array List of values
values[#] string/int/boolean Can be of string, number, or boolean type. When comparing data, a specific element is selected from values for comparison based on the characteristics of operation. For example, when operation is =, only values[0] participates in the operation

6.1 extend.filters example:

[
  {
      "name": "A",
      "condition": "and",
      "op": "match",
      "values": ["error"]
  },
  {
      "name": "tagC",
      "condition": "and",
      "op": "=",
      "values": ["ok"]
  }
]

7. Overall structure example:

    {
      "extend": {
        "filters": [],
        "groupBy": ["host_ip"],
        "funcName": "count",
        "fieldKey": "*",
        "index": "default",
        "source": "*",
        "filterString": "host:hangzhou123 region:guanzhou"
      },
      "jsonScript": {
        "type": "logToMetric",
        "metricInfo": {
          "every": "1m",
          "metric": "test",
          "metricField": "001-test",
          "unit": "custom/[\"timeStamp\",\"ms\"]",
          "desc": "",
          "delaySeconds": 60
        },
        "query": {
          "q": "L('default')::RE(`.*`):(count(`*`)) { `host`='hangzhou123' and `region`='guanzhou'  } BY `host_ip`",
          "qtype": "dql"
        }
      }
    }

Request Example

curl 'https://openapi.guance.com/api/v1/aggs_to_metric/add' \
-H 'DF-API-KEY: <DF-API-KEY>' \
-H 'Content-Type: application/json;charset=UTF-8' \
--data-raw '{"extend":{"filters":[],"groupBy":["host_ip"],"funcName":"count","fieldKey":"*","index":"default","source":"*","filterString":"host:hangzhou123 region:guanzhou"},"jsonScript":{"type":"logToMetric","metricInfo":{"every":"1m","metric":"test","metricField":"001-test","unit":"custom/[\"timeStamp\",\"ms\"]","desc":"","delaySeconds":60},"query":{"q":"L('default')::RE(`.*`):(count(`*`)) { `host`='hangzhou123' and `region`='guanzhou'  } BY `host_ip`","qtype":"dql"}}}' \
--compressed

Response

{
    "code": 200,
    "content": {
        "workspaceUUID": "wksp_xxxx",
        "monitorUUID": "",
        "updator": null,
        "type": "aggs",
        "refKey": "",
        "secret": null,
        "jsonScript": {
            "type": "logToMetric",
            "metricInfo": {
                "every": "1m",
                "metric": "test",
                "metricField": "001-test",
                "unit": "custom/[\"timeStamp\",\"ms\"]",
                "desc": "",
                "delaySeconds": 60
            },
            "query": {
                "q": "L('default')::RE(`.*`):(count(`*`)) { `host`='hangzhou123' and `region`='guanzhou'  } BY `host_ip`",
                "qtype": "dql"
            }
        },
        "crontabInfo": {
            "id": "cron-4VdviPep3oHc",
            "crontab": null
        },
        "extend": {
            "filters": [],
            "groupBy": [
                "host_ip"
            ],
            "funcName": "count",
            "fieldKey": "*",
            "index": "default",
            "source": "*",
            "filterString": "host:hangzhou123 region:guanzhou"
        },
        "createdWay": "manual",
        "isLocked": false,
        "openPermissionSet": false,
        "permissionSet": [],
        "id": null,
        "uuid": "rul_xxxx",
        "status": 0,
        "creator": "acnt_xxxx",
        "createAt": 1734594428,
        "deleteAt": -1,
        "updateAt": null,
        "__operation_info": {
            "uuid": "rul_xxxx"
        }
    },
    "errorCode": "",
    "message": "",
    "success": true,
    "traceId": "1111139030457458757"
} 

Feedback

Is this page helpful?