Skip to content

Modify



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

Overview

Modify an aggregation-to-metric rule.

Route Parameters

Parameter Name Type Required Description
rule_uuid string Y The ID of the aggregation-to-metric rule.

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, supports integers with units; options 1m~59m or 1h~24h, cron 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 Delay execution seconds after the scheduled task is triggered, default 0 means no delay.
Example: 60
$minValue: 0
$maxValue: 86400
skipRepeatNameCheck boolean Whether to skip duplicate name detection for measurement/metric, default false, false performs duplicate detection, true skips duplicate detection.
Example: false
Allow empty: False

Parameter Supplementary Description

Data Description.

1. **Parameter description in jsonScript

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

2. Description of check type jsonScript.type

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

3. Description of check type jsonScript.metricInfo

Parameter Name type Required Description
every String Required Frequency, supports integers with units; options 1m~59m or 1h~24h, cron not supported
metric String Required Measurement name
metricField String Required Metric name
unit String Unit
desc String Description
delaySeconds Integer Delay execution seconds after the scheduled task is triggered, default 0 means no delay

3.1 Description of unit for check type 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 Description


4. Description of check type jsonScript.query

Parameter Name type Required Description
q String Required Query statement
qtype String Query syntax type, dql/promql
qmode String Query type, dropdown: selectorQuery , manual: customQuery, this field affects the query display style on the frontend

5. **Parameter description in extend

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, enumeration values("count", "avg", "max", "sum", "min", "count_distinct", "p75", "p95", "p99")
fieldKey string Required Aggregation field
index string Index name for log type
source string This field represents different meanings for different types: log type: source, APM type: service, RUM type: app_id, metric type: measurement, Security Check: category
filterString string Filter condition for log type, original filter string, example: 'host:hangzhou123 -service:coredns internal:true'

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


6. Main structure description of extend.filters

Parameter Name type Required Description
condition string Relationship with the previous filter condition, allowed values:and, or; default: and
name string Field name to filter
op string Operator, allowed values: =, !=, match, not match
values array Value list
values[#] string/int/boolean Can be string/numeric/boolean type, during data comparison, 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 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": "",
          "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/rul_xxxx/modify' \
-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? ×