수정¶
POST /api/v1/aggs_to_metric/{rule_uuid}/modify
개요¶
메트릭 생성 규칙 수정
경로 매개변수¶
| 매개변수명 | 유형 | 필수 | 설명 |
|---|---|---|---|
| rule_uuid | string | Y | 메트릭 생성 ID |
Body 요청 매개변수¶
| 매개변수명 | 유형 | 필수 | 설명 |
|---|---|---|---|
| extend | json | Y | 추가 정보 빈 값 허용: False |
| jsonScript | json | Y | 규칙 구성 빈 값 허용: False |
| jsonScript.type | string | Y | 유형 예: rumToMetric 빈 값 허용: False 빈 문자열 허용: False 可选值: ['logToMetric', 'rumToMetric', 'apmToMetric', 'metricToMetric', 'securityToMetric', 'dialingToMetric'] |
| jsonScript.query | json | Y | DQL 조회 관련 정보 빈 값 허용: False |
| jsonScript.metricInfo | json | Y | 메트릭 구성 정보 빈 값 허용: False |
| jsonScript.metricInfo.every | string | Y | 빈도, 단위가 포함된 정수 지원; 1m~59m 또는 1h~24h 선택 가능, cron 미지원 예: 5m 빈 문자열 허용: False |
| jsonScript.metricInfo.metric | string | Y | 메저먼트명 예: cpu 빈 문자열 허용: False |
| jsonScript.metricInfo.metricField | string | Y | 메트릭명 예: load5s 빈 문자열 허용: False |
| jsonScript.metricInfo.unit | string | 단위 예: load5s 빈 문자열 허용: True |
|
| jsonScript.metricInfo.desc | string | 설명 예: xxx 빈 문자열 허용: True |
|
| jsonScript.metricInfo.delaySeconds | integer | 예약 작업 트리거 후 지연 실행 시간(초), 기본값 0은 지연 없음 예: 60 $minValue: 0 $maxValue: 86400 |
|
| skipRepeatNameCheck | boolean | 메저먼트 메트릭 중복 이름 검사 건너뛰기 여부, 기본값 false, false는 중복 이름 검사, true는 중복 이름 검사 건너뛰기 예: false 빈 값 허용: False |
매개변수 추가 설명¶
데이터 설명.
1. **jsonScript의 매개변수 설명
| 매개변수명 | 유형 | 필수 | 설명 |
|---|---|---|---|
| type | String | 필수 | 데이터 소스 유형, 열거형 |
| query | Json | 필수 | 조회 정보 |
| metricInfo | Json | 필수 | 메저먼트 구성 정보 |
2. 검사 유형 jsonScript.type 설명
| key | 설명 |
|---|---|
| rumToMetric | RUM 메트릭 생성 |
| apmToMetric | APM 메트릭 생성 |
| logToMetric | Logging 메트릭 생성 |
| metricToMetric | Metric 메트릭 생성 |
| securityToMetric | 보안 점검 메트릭 생성 |
3. 검사 유형 jsonScript.metricInfo 설명
| 매개변수명 | 유형 | 필수 | 설명 |
|---|---|---|---|
| every | String | 필수 | 빈도, 단위가 포함된 정수 지원; 1m~59m 또는 1h~24h 선택 가능, cron 미지원 |
| metric | String | 필수 | 메저먼트명 |
| metricField | String | 필수 | 메트릭명 |
| unit | String | 단위 | |
| desc | String | 설명 | |
| delaySeconds | Integer | 예약 작업 트리거 후 지연 실행 시간(초), 기본값 0은 지연 없음 |
3.1 검사 유형 jsonScript.metricInfo.unit 단위 설명
단위 형식: custom/["단위 유형","단위"], 예: custom/["time","ms"]
사용자 정의 단위 형식: custom/["custom","사용자 정의 단위"], 예: custom/["custom","tt"]
표준 단위 유형은 단위 설명 을 참조하세요.
4. 검사 유형 jsonScript.query 설명
| 매개변수명 | 유형 | 필수 | 설명 |
|---|---|---|---|
| q | String | 필수 | 쿼리문 |
| qtype | String | 쿼리 구문 유형, dql/promql | |
| qmode | String | 쿼리 유형, 선택 상자: selectorQuery, 직접 입력: customQuery, 이 필드는 프론트엔드 쿼리 표시 스타일에 영향을 줌 |
5. **extend의 매개변수 설명
| 매개변수명 | 유형 | 필수 | 설명 |
|---|---|---|---|
| filters | Array[dict] | 비로그 유형의 필터 조건 목록 | |
| groupBy | Array[str] | 그룹화 정보 | |
| funcName | string | 필수 | 집계 함수, 열거 값("count", "avg", "max", "sum", "min", "count_distinct", "p75", "p95", "p99") |
| fieldKey | string | 필수 | 집계 필드 |
| index | string | 로그 유형의 인덱스명 | |
| source | string | 이 필드는 유형에 따라 다른 의미를 가짐: 로그 유형: source, APM 유형: service, RUM 유형: app_id, 메트릭 유형: 메저먼트, 보안 점검: category | |
| filterString | string | 로그 유형의 필터 조건, 원시 필터 문자열, 예: 'host:hangzhou123 -service:coredns internal:true' |
참고:
extend 필드의 모든 필드는 프론트엔드 표시용으로만 사용되며, 실제 메트릭 생성 쿼리문은 jsonScript.query에 구성된 조회 정보를 기준으로 합니다.
6. extend.filters의 본문 구조 설명
| 매개변수명 | 유형 | 필수 | 설명 |
|---|---|---|---|
| condition | string | 이전 필터 조건과의 관계, 선택 값: and, or; 기본값: and |
|
| name | string | 필터링할 필드명 | |
| op | string | 연산자, 선택 값: =, !=, match, not match |
|
| values | array | 값 목록 | |
| values[#] | string/int/boolean | 문자열/숫자/부울 유형 가능, operation의 특성에 따라 values에서 특정 요소를 가져와 비교합니다. 예를 들어 operation이 =인 경우 values[0]만 연산에 사용됩니다. |
6.1 extend.filters 예시:
[
{
"name": "A",
"condition": "and",
"op": "match",
"values": ["error"]
},
{
"name": "tagC",
"condition": "and",
"op": "=",
"values": ["ok"]
}
]
7. **전체 구조 예시:
{
"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"
}
}
}
요청 예시¶
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
응답¶
{
"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"
}