Skip to content

Modify



POST /api/v1/aggs_to_metric/{rule_uuid}/modify

Overview

Modify the metric generation rule

Route Parameters

Parameter Name Type Required Description
rule_uuid string Y The ID of the aggregation metric

Body Request Parameters

Parameter Name 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
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
skipRepeatNameCheck boolean Whether to skip the duplicate name check for measurement and metric, default false, false to perform duplicate name check, true to skip duplicate name check
Example: false
Allow empty: False

Parameter Additional Description

Data Description.

1. **Parameter Description in jsonScript

Parameter Name Type Required Description
type String Required The type of data source, enum type
query Json Required Query information
metricInfo Json Required Measurement configuration information

2. Check Type jsonScript.type Description

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

3. Check Type jsonScript.metricInfo Description

Parameter Name Type Required Description
every String Required Frequency, optional 1m, 5m, 15m, unit is (minutes/m)
metric String Required Measurement name
metricField String Required Metric name
unit String Unit
desc String Description

3.1 Check Type jsonScript.metricInfo.unit Unit Description

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


4. Check Type jsonScript.query Description

Parameter Name Type Required Description
q String Required Query statement
qtype String Query syntax type, dql/promql
qmode String Query type, selector: selectorQuery, custom: customQuery, this field affects the query display style in the frontend

5. **Parameter Description in extend

Parameter Name Type Required Description
filters Array[dict] Filter conditions list for non-log types
groupBy Array[str] Grouping information
funcName string Required Aggregation function, enum values("count", "avg", "max", "sum", "min", "count_distinct", "p75", "p95", "p99")
fieldKey string Required Aggregation field
index string Index name for log types
source string This field has different meanings for different types: log type: source, APM type: service, RUM type: app_id, metric type: measurement, security check: category
filterString string Filter conditions for log types, original filter string, example: 'host:hangzhou123 -service:coredns internal:true'

Note: All fields in the extend field are only used for frontend display, the actual metric generation query statement is based on the query information configured in jsonScript.query


6. Main Structure Description of extend.filters

Parameter Name Type Required Description
condition string The relationship with the previous filter condition, allowed values:and, or; default: and
name string The field name to be filtered
op string Operator, allowed values: =, !=, match, not match
values array Value list
values[#] string/int/boolean Can be string/number/boolean type, when comparing data, specific elements from values will be taken 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": ""
        },
        "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/objc_cfg/rul_xxxx/create' \
-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":""},"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": ""
            },
            "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? ×