생성¶
POST /api/v1/aggs_to_metric/add
개요¶
메트릭 생성 규칙 생성
본문 요청 매개변수¶
| 매개변수 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
| 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/120/180/300/600/900/1200/1800 지원, 기본값 0은 지연 없음 예: 60 선택 값: [0, 60, 120, 180, 300, 600, 900, 1200, 1800] |
|
| 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, 60, 120, 180, 300, 600, 900, 1200, 1800 지원, 기본값 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 | 필수 | 집계 함수(qmode가 선택 상자 모드일 때 필수, 프런트엔드 표시용), 열거 값("count", "avg", "max", "sum", "min", "count_distinct", "distribution", "p75", "p95", "p99") |
| fieldKey | string | 필수 | 집계 필드(qmode가 선택 상자 모드일 때 필수, 프런트엔드 표시용) |
| index | string | 로그 유형의 인덱스 이름 | |
| source | string | 이 필드는 유형에 따라 다른 의미를 나타냄: 로그 유형: 소스 source, APM 유형: 서비스 service, RUM 유형: 애플리케이션 app_id, 메트릭 유형: 메저먼트, 보안 점검: 카테고리 category | |
| filterString | string | 로그 유형의 필터 조건, 원시 필터 문자열, 예: 'host:hangzhou123 -service:coredns internal:true' |
참고:
extend 필드의 모든 필드는 프런트엔드 표시용으로만 사용되며, 실제 메트릭 생성 쿼리문은 jsonScript.query에 구성된 쿼리 정보를 기준으로 합니다.
선택 상자 모드에서 Distribution을 사용하는 경우 extend.funcName에 distribution을 전달하고, jsonScript.query.q에는 histogram_auto(<field>)를 사용합니다.
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/add' \
-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"
}