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"
}