Modify Aggregation to Metric¶
POST /api/v1/aggs_to_metric/{rule_uuid}/modify
Overview¶
Modify the aggregation to metric rule
Route Parameters¶
Parameter Name | Type | Required | Description |
---|---|---|---|
rule_uuid | string | Y | ID of the aggregation to metric rule |
Body Request Parameters¶
Parameter Name | Type | Required | Description |
---|---|---|---|
extend | json | Y | Additional information Allow null: False |
jsonScript | json | Y | Rule configuration Allow null: False |
jsonScript.type | string | Y | Type Example: rumToMetric Allow null: False Allow empty string: False Possible values: ['logToMetric', 'rumToMetric', 'apmToMetric', 'metricToMetric', 'securityToMetric'] |
jsonScript.query | json | Y | DQL query related information Allow null: False |
jsonScript.metricInfo | json | Y | Metric configuration information Allow null: 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 |
Additional Parameter Explanation¶
Data explanation.
1. **jsonScript
parameter description
Parameter Name | Type | Required | Description |
---|---|---|---|
type | String | Required | Data source type, enum type |
query | Json | Required | Query information |
metricInfo | Json | Required | Measurement configuration information |
2. Explanation of jsonScript.type
types
Key | Description |
---|---|
rumToMetric | RUM generated metrics |
apmToMetric | APM generated metrics |
logToMetric | Logging generated metrics |
metricToMetric | Metric generated metrics |
securityToMetric | Security Check generated metrics |
3. Explanation of jsonScript.metricInfo
types
Parameter Name | Type | Required | Description |
---|---|---|---|
every | String | Required | Frequency, options 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 Explanation of units in jsonScript.metricInfo.unit
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 Documentation
4. Explanation of jsonScript.query
types
Parameter Name | Type | Required | Description |
---|---|---|---|
q | String | Required | Query statement |
qtype | String | Query syntax type, dql/promql | |
qmode | String | Query type, selector: selectorQuery , manual: customQuery, this field affects the front-end query echo style |
5. **extend
parameter description
Parameter Name | Type | Required | Description |
---|---|---|---|
filters | Array[dict] | Filter condition 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 represents different meanings for different types: log type: source, APM type: service, RUM type: app_id, Metrics type: measurement, Security Check: category | |
filterString | string | Filter condition for log types, original filter string, example: 'host:hangzhou123 -service:coredns internal:true' |
Note:
All fields in the extend
field are only used for front-end display and actual metric generation query statements follow the query information configured in jsonScript.query
6. Structure explanation of extend.filters
Parameter Name | Type | Required | Description |
---|---|---|---|
condition | string | Relationship with the previous filter condition, options:and , or ; default value: and |
|
name | string | Field name to be filtered | |
op | string | Operator, options: = , != , match , not match |
|
values | array | Value list | |
values[#] | string/int/boolean | Can be string/number/boolean, during data comparison it will select specific elements from values based on the characteristics of operation , for example, if operation is = , only values[0] participates in the operation |
6.1 Example of extend.filters
:
[
{
"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"
}