생성¶
POST /api/v1/checker/add
개요¶
모니터를 생성합니다.
Body 요청 매개변수¶
| 매개변수명 | 유형 | 필수 | 설명 |
|---|---|---|---|
| configVersion | integer | V2 수정 시 필수인 현재 구성 버전, 만료 시 409를 반환하며, 이전 버전 OpenAPI에서는 이 필드를 요구하지 않음 $minValue: 1 |
|
| generationId | string | Front AI가 새로 생성하거나 다시 생성한 후보 자격 증명으로, 생성 인터페이스의 응답 헤더에서 전달됨 |
|
| queryType | string | extend.querylist가 전달되지 않은 경우 사용 및 검증되는 DQL 프론트엔드 반영 모드입니다. simple은 Studio가 구문을 분석하여 단순 모드 필드를 주입함을 의미하고, dql은 DQL 텍스트 모드를 의미하며, 기본값은 dql입니다. extend.querylist를 명시적으로 전달하면 원본 그대로 우선 사용되며 queryType의 주입 의미는 무시됩니다. simple 변환에 실패하면 자동으로 dql로 대체되며 jsonScript.targets에서 실제 실행되는 DQL은 변경되지 않습니다. 빈 값 허용: False 예시: simple |
|
| type | string | 모니터 유형, 기본값 trigger, trigger: 일반 모니터, aiMonitor: AI 의미론 모니터, smartMonitor: 지능형 모니터링 빈 값 허용: False 예시: smartMonitor |
|
| status | integer | 모니터 상태 필드, 0 활성 상태, 2 비활성 상태, 기본값 활성 상태, (2025-02-19 업데이트에서 추가) 빈 값 허용: False 허용 값: [0, 2] |
|
| extend | json | 추가 정보 (인시던트 관련 필드 및 프론트엔드 반영에 사용되는 일부 필드) 빈 값 허용: True |
|
| alertPolicyUUIDs | array | 알림 정책 UUID 빈 값 허용: False |
|
| dashboardUUID | string | 연결된 대시보드 id 빈 값 허용: False |
|
| tags | array | 필터링에 사용되는 태그 이름 빈 값 허용: False 예시: ['xx', 'yy'] |
|
| secret | string | Webhook 주소 중간 부분의 고유 식별자 secret(일반적으로 임의의 uuid를 사용하여 워크스페이스 내에서 고유함을 보장) 빈 값 허용: False 예시: secret_xxxxx |
|
| jsonScript | json | 규칙 구성 빈 값 허용: False |
|
| jsonScript.targetWorkspaceUUID | string | 대상 워크스페이스, 워크스페이스 간 쿼리, 임계값 감지 유형만 지원 (2025-08-13 업데이트에서 추가) 빈 값 허용: False 빈 문자열 허용: False |
|
| jsonScript.type | string | Y | 검사 방법 유형 예시: simpleCheck 빈 값 허용: False |
| jsonScript.windowDql | string | window dql 빈 값 허용: False |
|
| jsonScript.title | string | Y | event의 제목 생성 예시: 모니터: {{monitor_name}} 검사기: {{monitor_checker_name}} 트리거 값: {{M1}} 빈 값 허용: False 빈 문자열 허용: True 최대 길이: 256 |
| jsonScript.message | string | event 내용 예시: status: {{status}}, title: {{title}} 빈 값 허용: False 빈 문자열 허용: True |
|
| jsonScript.recoverTitle | string | 복구 이벤트 제목 템플릿 출력 예시: 모니터: {{monitor_name}} 검사기: {{monitor_checker_name}} 트리거 값: {{M1}} 빈 값 허용: False 빈 문자열 허용: True |
|
| jsonScript.recoverMessage | string | 복구 이벤트 정보 템플릿 출력 예시: status: {{status}}, title: {{title}} 빈 값 허용: False 빈 문자열 허용: True |
|
| jsonScript.noDataTitle | string | 무데이터 이벤트 제목 템플릿 출력 예시: 모니터: {{monitor_name}} 검사기: {{monitor_checker_name}} 트리거 값: {{M1}} 빈 값 허용: False 빈 문자열 허용: True |
|
| jsonScript.noDataMessage | string | 무데이터 이벤트 정보 템플릿 출력 예시: status: {{status}}, title: {{title}} 빈 값 허용: False 빈 문자열 허용: True |
|
| jsonScript.openNotificationMessage | boolean | 이벤트 알림 콘텐츠 활성화 여부, 기본값 비활성화(이벤트 내용을 알림 콘텐츠로 사용) 예시: False 빈 값 허용: False |
|
| jsonScript.notificationMessage | string | 이벤트 알림 콘텐츠 예시: 모니터: {{monitor_name}} 검사기: {{monitor_checker_name}} 트리거 값: {{M1}} 빈 값 허용: False 빈 문자열 허용: True |
|
| jsonScript.openNoDataNotificationMessage | boolean | 데이터 단절 이벤트 알림 콘텐츠 활성화 여부, 기본값 비활성화(데이터 단절 이벤트 내용을 알림 콘텐츠로 사용) 예시: False 빈 값 허용: False |
|
| jsonScript.noDataNotificationMessage | string | 데이터 단절 이벤트 알림 콘텐츠 예시: status: {{status}}, title: {{title}} 빈 값 허용: False 빈 문자열 허용: True |
|
| jsonScript.noDataRecoverTitle | string | 무데이터 복구 업로드 이벤트 제목 템플릿 출력 예시: 모니터: {{monitor_name}} 검사기: {{monitor_checker_name}} 트리거 값: {{M1}} 빈 값 허용: False 빈 문자열 허용: True |
|
| jsonScript.noDataRecoverMessage | string | 무데이터 복구 업로드 이벤트 정보 템플릿 출력 예시: status: {{status}}, title: {{title}} 빈 값 허용: False 빈 문자열 허용: True |
|
| jsonScript.every | string | 검사 빈도 예시: 1m 빈 값 허용: False |
|
| jsonScript.customCrontab | string | 사용자 정의 감지 빈도 예시: 0 */12 * * * 빈 값 허용: False |
|
| jsonScript.delaySeconds | integer | 일반 모니터 데이터 대기 창, 단위 초, 0은 대기하지 않음을 의미, 지능형 모니터링에서는 이 구성을 지원하지 않음 예시: 60 빈 값 허용: False 허용 값: [0, 60, 120, 180, 300, 600, 900, 1800] |
|
| jsonScript.interval | integer | 쿼리 구간, 즉 한 번의 쿼리에 대한 시간 범위 시차 예시: 60 빈 값 허용: False |
|
| jsonScript.range | integer | 고급 감지, 급변 감지의 range 매개변수, 단위 s 예시: 3600 빈 값 허용: False |
|
| jsonScript.range_2 | integer | 고급 감지, 급변 감지의 range_2 매개변수, 단위 s, 특별 설명 (-1은 직전 기간 대비를 의미, 0은 periodBefore 필드 사용을 의미) 예시: 600 빈 값 허용: False |
|
| jsonScript.periodBefore | integer | 고급 감지, 급변 감지의 (어제/한 시간 전) 매개변수, 단위 s 예시: 600 빈 값 허용: False |
|
| jsonScript.recoverNeedPeriodCount | integer | 이상 발생 후 몇 개의 검사 주기가 지난 뒤 복구 이벤트를 생성할지 지정. 감지 빈도가 사용자 정의 customCrontab이면 이 필드는 시간 길이(단위 s)를 나타내고, 그렇지 않으면 감지 빈도 횟수를 나타냄 예시: 60 빈 값 허용: False |
|
| jsonScript.noDataInterval | integer | 얼마 동안 데이터가 없으면 무데이터 이벤트를 생성할지 예시: 60 빈 값 허용: False |
|
| jsonScript.noDataAction | string | 무데이터 처리 작업 빈 값 허용: False 허용 값: ['none', 'checkAs0', 'noDataEvent', 'fatalEvent', 'criticalEvent', 'errorEvent', 'warningEvent', 'okEvent', 'noData', 'recover'] |
|
| jsonScript.checkFuncs | array | 검사 함수 정보 목록 예시: [{'funcId': 'xxx', 'kwargs': {}}] 빈 값 허용: False |
|
| jsonScript.groupBy | array | 트리거 차원 예시: ['성별'] 빈 값 허용: False |
|
| jsonScript.targets | array | 검사 대상 예시: [{'dql': 'M:: 士兵信息:(AVG(潜力值)) [::auto] by 性别', 'alias': 'M1'}] 빈 값 허용: False |
|
| jsonScript.checkerOpt | json | 검사 조건 설정 빈 값 허용: False |
|
| jsonScript.checkerOpt.yamlConfig | string | V2 전체 소스 YAML 텍스트, 최대 256KiB, JSON 객체가 아니며 Markdown 펜스를 포함하지 않음 |
|
| jsonScript.checkerOpt.disableLargeScaleEventProtect | boolean | 대규모 이벤트 보호 비활성화 여부, 기본값 false 예시: True |
|
| jsonScript.checkerOpt.script | string | 프로그래밍 가능 모니터링의 스크립트 콘텐츠 빈 값 허용: False 빈 문자열 허용: True |
|
| jsonScript.checkerOpt.rules | array | 트리거 조건 목록 예시: [{'status': 'warning', 'conditions': [{'operands': [60], 'operator': '>', 'alias': 'M1'}], 'conditionLogic': 'and', 'matchTimes': 10}] 빈 값 허용: False |
|
| jsonScript.checkerOpt.openOkConditions | boolean | 단계별 복구 활성화, 기본값 비활성화 false 예시: True |
|
| jsonScript.checkerOpt.openMatchTimes | boolean | 연속 트리거 판정 활성화, 기본값 비활성화 false 예시: True |
|
| jsonScript.checkerOpt.infoEvent | boolean | 지속적으로 정상 상태일 때 info 이벤트를 생성할지 여부, 기본값 false 예시: True |
|
| jsonScript.checkerOpt.infoEventCondition | json | 정보 이벤트 생성 조건, 임계값 모니터만 지원, 빈 객체는 무조건 생성을 의미 예시: {'alias': 'M1', 'operator': '>=', 'operands': [60]} 빈 값 허용: False |
|
| jsonScript.checkerOpt.infoEventCondition.alias | string | 판단 객체 별칭 |
|
| jsonScript.checkerOpt.infoEventCondition.operator | string | 판단 연산자 |
|
| jsonScript.checkerOpt.infoEventCondition.operands | array | 판단 피연산자 목록 |
|
| jsonScript.checkerOpt.diffMode | string | 고급 감지 중 급변 감지의 차이 모드, 열거형 값, value, percent 예시: value 허용 값: ['value', 'percent'] |
|
| jsonScript.checkerOpt.direction | string | 고급 감지 중 급변 감지, 구간 감지의 트리거 조건 방향 예시: up 허용 값: ['up', 'down', 'both'] |
|
| jsonScript.checkerOpt.eps | float | 거리 매개변수, 허용 범위: 0 ~ 3.0 예시: 0.5 |
|
| jsonScript.checkerOpt.threshold | json | 급변 감지의 트리거 전제 조건 설정 빈 값 허용: False |
|
| jsonScript.checkerOpt.threshold.status | boolean | Y | 급변 감지, 트리거 전제 조건 활성화 여부, 예시: True |
| jsonScript.checkerOpt.threshold.operator | string | Y | 급변 감지, 트리거 전제 조건 연산자 예시: |
| jsonScript.checkerOpt.threshold.value | float | Y | 급변 감지, 트리거 전제 조건 감지 값 예시: 90 빈 값 허용: True |
| jsonScript.checkerOpt.combineExpr | string | 조합 모니터링, 조합 방식 예시: A && B 빈 문자열 허용: False |
|
| jsonScript.checkerOpt.ignoreNodata | boolean | 조합 모니터링, 무데이터 결과 무시 여부 (true는 무시가 필요함을 의미), 예시: True |
|
| jsonScript.checkerOpt.confidenceInterval | integer | 구간 감지 V2 추가 매개변수, 신뢰 구간 범위 값 1-100, 예시: 10 |
|
| jsonScript.checkerOpt.category | string | AI 모니터링 카테고리 메타데이터 빈 값 허용: False |
|
| jsonScript.checkerOpt.userPrompt | string | AI 사용자 프롬프트, 전달 시 비어 있을 수 없으며 최대 20000자 빈 값 허용: False 빈 문자열 허용: True 최대 길이: 20000 |
|
| jsonScript.checkerOpt.systemPrompt | string | AI 시스템 프롬프트, 전달 시 비어 있을 수 없으며 최대 20000자 빈 값 허용: False 빈 문자열 허용: True 최대 길이: 20000 |
|
| jsonScript.checkerOpt.mentions | array | DQL 참조 목록, 각 항목은 type=dql, namespace, datasource를 포함해야 하며 index는 선택 사항으로 로그 선택 시 입력, 직렬화 후 최대 20000자 빈 값 허용: False |
|
| jsonScript.checkerOpt.mentions[*] | None | ||
| jsonScript.checkerOpt.mentions[*].type | string | Y | 데이터 소스 유형 허용 값: ['dql'] |
| jsonScript.checkerOpt.mentions[*].namespace | string | Y | DQL 네임스페이스 빈 문자열 허용: False |
| jsonScript.checkerOpt.mentions[*].index | string | DQL 인덱스, 로그 선택 시 입력 빈 문자열 허용: False |
|
| jsonScript.checkerOpt.mentions[*].datasource | string | Y | DQL 데이터 소스 빈 문자열 허용: False |
| jsonScript.checkerOpt.model | string | 이번 감지에 사용되는 모델 빈 값 허용: False |
|
| jsonScript.checkerOpt.contextWindowLimit | integer | 컨텍스트 창 Token 제한, 0보다 커야 함 빈 값 허용: False $minValue: 1 |
|
| jsonScript.checkerOpt.maxChatRounds | integer | 최대 대화 라운드 수, 1보다 크거나 같아야 함 빈 값 허용: False $minValue: 1 |
|
| jsonScript.checkerOpt.maxDQLQueries | integer | 최대 DQL 쿼리 횟수, 0보다 크거나 같아야 함 빈 값 허용: False $minValue: 0 |
|
| jsonScript.checkerOpt.creditSoftBudget | number | 단일 감지 Credit 소프트 예산, 0보다 커야 함 빈 값 허용: False |
|
| jsonScript.channels | array | 채널 UUID 목록 예시: ['이름1', '이름2'] 빈 값 허용: False |
|
| jsonScript.atAccounts | array | 정상 감지에서 @되는 계정 UUID 목록 예시: ['xx1', 'xx2'] 빈 값 허용: False |
|
| jsonScript.atNoDataAccounts | array | 무데이터 상황에서 @되는 계정 UUID 목록 예시: ['xx1', 'xx2'] 빈 값 허용: False |
|
| jsonScript.subUri | string | OuterEventChecker의 Webhook 주소 접미사, 생성 시 필수, 고유하지 않아도 됨 예시: datakit/push 빈 값 허용: False |
|
| jsonScript.isChangeEvent | boolean | OuterEventChecker를 변경 이벤트로 처리할지 여부, 기본값 false, 기존 규칙에 필드가 없으면 false로 처리 예시: False 빈 값 허용: False |
|
| jsonScript.disableCheckEndTime | boolean | 종료 시간 제한 비활성화 여부 예시: True 빈 값 허용: False |
|
| jsonScript.eventChartEnable | boolean | 이벤트 차트 활성화 여부, 기본값 비활성화(참고: 기본 스토리지 엔진 logging이 doris인 경우에만 적용됨) 예시: False 빈 값 허용: False |
|
| jsonScript.eventCharts | array | 이벤트 차트 목록 예시: True 빈 값 허용: False |
|
| jsonScript.eventCharts[*] | None | ||
| jsonScript.eventCharts[*].dql | string | 이벤트 차트의 쿼리문 예시: M:: cpu:(avg(load5s)) BY host 빈 값 허용: False |
|
| openPermissionSet | boolean | 사용자 정의 권한 구성 활성화, (기본값 false: 비활성화), 활성화 후 이 규칙의 작업 권한은 permissionSet에 따름 빈 값 허용: False |
|
| permissionSet | array | 작업 권한 구성, 구성 가능(역할(소유자 제외), 구성원 uuid, 팀 uuid) 예시: ['wsAdmin', 'acnt_xxxx', 'group_yyyy'] 빈 값 허용: False |
매개변수 추가 설명¶
지능형 모니터링 V2는 외부 type=smartMonitor, jsonScript.type=smartMonitorV2Check 및 checkerOpt.yamlConfig를 사용합니다. 고정적으로 10분마다 실행되며 쿼리는 YAML에서만 가져옵니다. 수정에서는 DQL, 기존 임계값 구성 및 기존 알고리즘 공개 매개변수만 허용됩니다. 규칙 집합, 알고리즘 유형, 차원, 시간 및 템플릿은 수정할 수 없습니다. extend.smartMonitor는 출처, 프롬프트 및 서버 측 구성 버전을 저장합니다. Front는 이전 버전의 생성/가져오기/편집을 거부하며, 기존 인스턴스는 여전히 삭제 및 시작/중지할 수 있습니다. OpenAPI의 이전 버전 기능은 호환성을 유지합니다.
데이터 설명.
jsonScript 매개변수 설명
1. 검사 유형 jsonScript.type 설명
| 키 | 설명 |
|---|---|
| simpleCheck | 임계값 감지 |
| seniorMutationsCheck | 급변 감지 |
| seniorRangeCheck | 구간 감지 |
| seniorRangeV2Check | 구간 감지 V2 |
| outlierCheck | 이상치 감지 |
| loggingCheck | 로그 감지 |
| processCheck | 프로세스 이상 감지 |
| objectSurvivalCheck | 인프라 생존 감지 |
| objectSurvivalV2Check | 인프라 생존 감지 V2, doris 워크스페이스만 지원 |
| objectChangeCheck | 인프라 변경 감지 |
| apmCheck | APM 메트릭 감지 |
| rumCheck | RUM 메트릭 감지 |
| securityCheck | 보안 점검 이상 감지 |
| cloudDialCheck | 신서틱 테스트 이상 탐지 |
| networkCheck | 네트워크 데이터 감지 |
| OuterEventChecker | 외부 이벤트 감지 |
| smartHostCheck | 지능형 모니터링, 호스트 지능형 감지 |
| smartLogCheck | 지능형 모니터링, 로그 지능형 감지 |
| smartApmCheck | 지능형 모니터링, 애플리케이션 지능형 감지 |
| smartRumCheck | 지능형 모니터링, 사용자 접속 지능형 감지 |
| smartKubeCheck | 지능형 모니터링, Kubernetes 지능형 감지 |
| smartCloudBillingCheck | 지능형 모니터링, 클라우드 청구 지능형 감지 |
| combinedCheck | 조합 모니터링 |
| programmableCheck | 프로그래밍 가능 모니터 |
| aiMonitor | AI 의미론 모니터, 독립적인 Rule.type=aiMonitor로 저장되며 Func 예약 작업에 의해 실행됨 |
2. 서비스가 종료된 검사 유형 jsonScript.type 설명
| 키 | 설명 |
|---|---|
| seniorCheck | 고급 검사, 서비스 종료 |
| mutationsCheck | 급변 검사, 서비스 종료, seniorMutationsCheck로 업데이트됨 |
| waterLevelCheck | 수위 검사, 서비스 종료 |
| rangeCheck | 구간 검사, 서비스 종료, seniorRangeCheck로 업데이트됨 |
3. 트리거 조건 비교 연산자 설명(checkerOpt.rules의 매개변수 설명)
| 매개변수명 | type | 필수 | 설명 |
|---|---|---|---|
| conditions | Array[Dict] | 필수 | 조건 |
| conditions[#].alias | String | 필수 | 감지 객체 별칭, 즉 위 targets[#].alias |
| conditions[#].operator | String | 필수 | 연산자. = , > , < 등 |
| conditions[#].operands | Array[Any] | 필수 | 피연산자 배열. (between, in 등 연산자는 여러 피연산자가 필요) |
| conditionLogic | string | 필수 | 조건 간 로직. and, or |
| status | string | 필수 | 조건 충족 시 출력되는 event의 status. event의 status와 동일한 값 사용 |
| direction | string | 【구간/수위/급변 매개변수】 감지 방향, 값: "up", "down", "both" | |
| periodNum | integer | 【구간/수위/급변 매개변수】 최근 데이터 포인트 수만 감지 | |
| checkPercent | integer | 【구간 매개변수】 이상 비율 임계값, 값: 1 ~ 100 | |
| checkCount | integer | 【수위/급변 매개변수】 연속 이상 포인트 수 | |
| strength | integer | 【수위/급변 매개변수】 감지 강도, 값: 1=약, 2=중, 3=강 | |
| matchTimes | integer | 연속 트리거 구성을 활성화한(checkerOpt.openMatchTimes) 연속 트리거 구성 횟수 [1,10] | |
| okConditions | Array[Dict] | 복구 조건 | |
| okConditions[#].alias | String | 감지 객체 별칭, 즉 위 targets[#].alias | |
| okConditions[#].operator | String | 연산자. = , > , < 등 | |
| okConditions[#].operands | Array[Any] | 피연산자 배열. (between, in 등 연산자는 여러 피연산자가 필요) |
4. 단순/로그/수위/급변/구간 검사 jsonScript.type in (simpleCheck, loggingCheck, waterLevelCheck, mutationsCheck, rangeCheck, securityCheck) 매개변수 정보
| 매개변수명 | type | 필수 | 설명 |
|---|---|---|---|
| title | string | Y | 장애 이벤트 제목 템플릿 출력 |
| message | string | N | 장애 이벤트 정보 템플릿 출력 |
| recoverTitle | string | N | 복구 이벤트 제목 템플릿 출력 |
| recoverMessage | string | N | 복구 이벤트 정보 템플릿 출력 |
| noDataTitle | string | N | 무데이터 이벤트 제목 템플릿 출력 |
| noDataMessage | string | N | 무데이터 이벤트 정보 템플릿 출력 |
| noDataRecoverTitle | string | N | 무데이터 복구 업로드 이벤트 제목 템플릿 출력 |
| noDataRecoverMessage | string | N | 무데이터 복구 업로드 이벤트 정보 템플릿 출력 |
| openNotificationMessage | boolean | N | 이벤트 알림 콘텐츠 활성화 여부 |
| notificationMessage | string | N | 이벤트 알림 콘텐츠 |
| openNoDataNotificationMessage | string | N | 데이터 단절 이벤트 알림 콘텐츠 활성화 여부 |
| noDataNotificationMessage | string | N | 데이터 단절 이벤트 알림 콘텐츠 |
| name | string | Y | 규칙 이름 |
| type | string | Y | 규칙 유형 |
| every | string | Y | 검사 빈도, 단위 (1m/1h/1d) |
| customCrontab | string | N | 사용자 정의 검사 빈도의 crontab |
| delaySeconds | integer | N | 데이터 대기 창, 단위 초, 0, 60, 120, 180, 300, 600, 900, 1800 지원, 기본값 0 |
| interval | integer | Y | 데이터 시간 범위의 시차, 즉 time_range의 시차, 단위: 초 |
| recoverNeedPeriodCount | integer | Y | 지정된 검사 주기 횟수를 초과한 후 복구 이벤트 생성, 감지 빈도가 사용자 정의 customCrontab이면 이 필드는 시간 길이(단위 s)를 나타내고, 그렇지 않으면 감지 빈도 횟수를 나타냄 |
| noDataInterval | integer | N | 얼마 동안 데이터가 없으면 무데이터 이벤트 생성 |
| noDataAction | string | N | 무데이터 처리 작업 |
| targets | array | Y | 단순 검사의 검사 대상 목록 |
| targets[*].dql | string | Y | DQL 쿼리문 |
| targets[*].alias | string | Y | 별칭 |
| targets[*].monitorCheckerId | string | Y | 조합 모니터링, 모니터 ID (rul_xxxxx) |
| checkerOpt | json | N | 검사 구성, 선택 사항 |
| checkerOpt.rules | array | Y | 검사 규칙 목록 |
| checkerOpt.openMatchTimes | boolean | N | 연속 트리거 판정 활성화 여부, 기본값 비활성화 false |
| checkerOpt.openOkConditions | boolean | N | 복구 조건 구성 활성화, 기본값 비활성화 false |
| checkerOpt.disableLargeScaleEventProtect | boolean | N | 대규모 이벤트 보호 비활성화 여부, 기본값 false |
일반 simpleCheck의 jsonScript.targets는 실제 실행 대상이며, 대상 alias는 고유해야 하고 검사 조건의 참조와 일치해야 합니다. 편집 또는 반영에 필요한 여러 쿼리 노드는 extend.querylist에 배치해야 합니다. combinedCheck는 조합 모니터링의 기존 다중 대상 의미에 따라 처리됩니다.
5. jsonScript.noDataAction 매개변수 정보
| 매개변수명 | 설명 |
|---|---|
| none | 작업 없음([무데이터 관련 처리 비활성화]와 동일) |
| checkAs0 | 쿼리 결과를 0으로 간주 |
| noDataEvent | 복구 이벤트(noData) 트리거 |
| fatalEvent | 치명적 이벤트(fatal) 트리거 |
| criticalEvent | 긴급 이벤트(crtical) 트리거 |
| errorEvent | 중요 이벤트(error) 트리거 |
| warningEvent | 경고 이벤트(warning) 트리거 |
| okEvent | 복구 이벤트(ok) 트리거 |
| noData | 무데이터 이벤트 생성, 이 매개변수는 2024-04-10에 서비스가 종료되었으며, 기능 로직은 noDataEvent와 동일하므로 바로 noDataEvent로 교체할 수 있음 |
| recover | 복구 이벤트 트리거, 이 매개변수는 2024-04-10에 서비스가 종료되었으며, 기능 로직은 okEvent와 동일하므로 바로 okEvent로 교체할 수 있음 |
6. 고급 검사 jsonScript.type in (seniorCheck) 매개변수 정보
| 매개변수명 | type | 필수 | 설명 |
|---|---|---|---|
| title | string | Y | 장애 이벤트 제목 템플릿 출력 |
| message | string | N | 장애 이벤트 정보 템플릿 출력 |
| recoverTitle | string | N | 복구 이벤트 제목 템플릿 출력 |
| recoverMessage | string | N | 복구 이벤트 정보 템플릿 출력 |
| noDataTitle | string | N | 무데이터 이벤트 제목 템플릿 출력 |
| noDataMessage | string | N | 무데이터 이벤트 정보 템플릿 출력 |
| noDataRecoverTitle | string | N | 무데이터 복구 업로드 이벤트 제목 템플릿 출력 |
| noDataRecoverMessage | string | N | 무데이터 복구 업로드 이벤트 정보 템플릿 출력 |
| type | string | Y | 규칙 유형 |
| every | string | Y | 검사 빈도, 단위 (1m/1h/1d) |
| customCrontab | string | N | 사용자 정의 검사 빈도의 crontab |
| delaySeconds | integer | N | 데이터 대기 창, 단위 초, 0, 60, 120, 180, 300, 600, 900, 1800 지원, 기본값 0 |
| checkFuncs | array | Y | 고급 검사 함수 목록, 요소가 정확히 하나만 있어야 함에 유의 |
| checkFuncs[#].funcId | string | Y | 함수 ID, 【외부 함수】목록 인터페이스를 통해 funcTags=monitorType|custom의 사용자 정의 검사 함수 목록을 가져올 수 있음 |
| checkFuncs[#].kwargs | json | N | 해당 고급 함수에 필요한 매개변수 데이터 |
7. 급변 검사 seniorMutationsCheck 매개변수 설명
| 매개변수명 | type | 필수 | 설명 |
|---|---|---|---|
| jsonScript.range | integer | N | 감지 메트릭의 Result 시간 구간 1 |
| jsonScript.range_2 | integer | N | 감지 메트릭의 Result 시간 구간 2, 특별 설명: (-1은 직전 기간 대비를 의미, 0은 periodBefore 필드 사용을 의미) |
| jsonScript.periodBefore | integer | N | jsonScript.range_2가 0일 때, 이 필드는 (어제/한 시간 전)을 나타냄 |
| jsonScript.checkerOpt.diffMode | string | N | 급변 감지의 차이 모드 (차이: value, 차이 비율: percent) |
| jsonScript.checkerOpt.threshold.status | boolean | N | 급변 감지의 트리거 전제 조건 설정, 활성화/비활성화 |
| jsonScript.checkerOpt.threshold.operator | string | N | 급변 감지의 트리거 전제 조건 설정, 연산자 |
| jsonScript.checkerOpt.threshold.value | float | N | 급변 감지의 트리거 전제 조건 설정, 감지 값 |
8. 조합 모니터링 관련 필드 매개변수 설명
| 매개변수명 | type | 필수 | 설명 |
|---|---|---|---|
| jsonScript.checkerOpt.combineExpr | string | Y | 조합 방식, 예: A && B |
| jsonScript.checkerOpt.ignoreNodata | boolean | N | 무데이터 결과 무시 여부 (true는 무시가 필요함을 의미) |
9. 외부 이벤트 감지 jsonScript.type in (OuterEventChecker) 관련 필드 매개변수 설명
| 매개변수명 | type | 필수 | 설명 |
|---|---|---|---|
| secret | string | N | 이벤트가 속한 모니터를 식별하는 데 사용되며 전역적으로 고유함. 생성 시 생략하면 Studio가 생성하며 Import는 이전 값을 재사용하지 않음. |
| jsonScript.subUri | string | Y | Webhook 주소 접미사, 생성 시 필수, 고유하지 않아도 됨. |
| jsonScript.isChangeEvent | boolean | N | 변경 이벤트로 처리할지 여부, 기본값 false, 기존 규칙에 이 필드가 없어도 false로 처리. |
AI 의미론 모니터 jsonScript.type=aiMonitor 매개변수 설명
AI 의미론 모니터는 독립적인 Rule.type=aiMonitor 유형으로, checker의 생성, 수정, 시작/중지, 삭제 인터페이스와 지능형 모니터의 권한 및 수명 주기 로직을 재사용합니다. 태그는 독립적인 AiCheckerRefTagObject 연결 유형을 사용합니다. Studio가 이를 위해 Func 예약 작업을 생성/수정하며 고정적으로 guance__api.ai_monitor를 호출합니다.
| 매개변수명 | type | 필수 | 설명 |
|---|---|---|---|
| jsonScript.title | string | Y | 모니터 이름, 기존 checker 요청 필드를 사용하며 Func checker_opt.name으로 전달됨 |
| jsonScript.every | string | Y | 검사 빈도, 기존 s/m/h 주기 형식을 지원하며 30분 이상을 권장 |
| jsonScript.customCrontab | string | N | 사용자 정의 Cron 표현식, 기존 checker 검증을 사용 |
| jsonScript.checkerOpt.userPrompt | string | Y | AI 사용자 프롬프트, 앞뒤 공백 제거 후 비어 있을 수 없으며 최대 20000자 |
| jsonScript.checkerOpt.systemPrompt | string | N | AI 시스템 프롬프트, 앞뒤 공백 제거 후 비어 있을 수 없으며 최대 20000자 |
| jsonScript.checkerOpt.category | string | N | AI 모니터링 카테고리 메타데이터 |
| jsonScript.checkerOpt.infoEvent | boolean | N | 정보 이벤트 생성 여부, 기본값 false |
| jsonScript.checkerOpt.mentions | array | N | DQL 참조 목록, 기본값 [], 직렬화 후 최대 20000자, 각 항목의 type은 dql로 고정되며 비어 있지 않은 namespace, datasource가 필수, 로그 선택 시 index 입력 |
| jsonScript.checkerOpt.model | string | N | 모델 식별자, 기본값은 Func가 기본 모델을 사용 |
| jsonScript.checkerOpt.contextWindowLimit | integer | N | 컨텍스트 창 상한, 0보다 커야 함 |
| jsonScript.checkerOpt.maxChatRounds | integer | N | 최대 대화 라운드 수, 1보다 크거나 같아야 함 |
| jsonScript.checkerOpt.maxDQLQueries | integer | N | 최대 DQL 쿼리 수, 0보다 크거나 같아야 함 |
| jsonScript.checkerOpt.creditSoftBudget | number | N | AI 소프트 크레딧, 0보다 커야 함 |
Func 입력 매개변수의 checker_opt.id는 Studio가 Rule UUID로 채웁니다. workspace_agent_api_key는 현재 사이트 접두사가 붙은 워크스페이스 AI 공통 시스템 AK를 사용합니다. 워크스페이스 Token 교체 시 workspace_token만 업데이트되며 이 내장 AK는 교체되지 않습니다. 데이터 지연은 일반 모니터의 delaySeconds가 아닌 Func의 CUSTOM_DB_DATA_DELAY를 사용합니다.
10. disableCheckEndTime 필드 설명
Guance에서 업로드된 데이터에 대한 처리 로직에는 추가 쓰기, 업데이트 덮어쓰기 두 가지 모드가 있습니다. 이 두 가지 데이터 특성에 따라 모니터링은 감지를 차별화해야 합니다. 이 차이는 모니터, 지능형 모니터링, 지능형 점검 등 모든 모듈에 적용됩니다. 덮어쓰기 업데이트 메커니즘을 사용하는 모든 데이터 유형으로 모니터 감지를 구성할 때, 모니터 실행 delay 1분으로 인해 업데이트 모드 데이터가 고정된 시간 범위를 벗어나는 현상을 방지하기 위해 이러한 모니터 유형의 감지 구간은 종료 시간을 지정하지 않습니다. 관련 모니터 유형: 임계값 감지, 급변 감지, 구간 감지, 이상치 감지, 프로세스 이상 감지, 인프라 생존 감지, RUM 메트릭 감지(일부 메트릭, 아래 표 참조)
| 데이터 유형 | Namespace | 쓰기 모드 |
|---|---|---|
| 메트릭 | M | 추가 |
| 이벤트 | E | 추가 |
| 미복구 이벤트 | UE | 덮어쓰기 |
| 인프라-객체 | O | 덮어쓰기 |
| 인프라-사용자 정의 객체 | CO | 덮어쓰기 |
| 인프라-객체 히스토리 | OH | 추가 |
| 인프라-사용자 정의 객체 히스토리 | COH | 추가 |
| 로그 / 신서틱 모니터링 / CI 시각화 | L | 추가 |
| 애플리케이션 성능 모니터링(APM)-트레이스 | T | 추가 |
| APM-프로파일 | P | 추가 |
| 실제 사용자 모니터링(RUM)-세션 | R::session | 덮어쓰기 |
| RUM-뷰 | R::view | 덮어쓰기 |
| RUM-리소스 | R::resource | 추가 |
| RUM-긴 작업 | R::long_task | 추가 |
| RUM-액션 | R::action | 추가 |
| RUM-오류 | R::error | 추가 |
| 보안 점검 | S |
쓰기 모드가 덮어쓰기인 모든 데이터 유형은 disableCheckEndTime을 true로 지정해야 합니다.
11. 구간 감지 V2 버전 관련 매개변수 필드 설명
| 매개변수명 | type | 필수 | 설명 |
|---|---|---|---|
| jsonScript.checkerOpt.confidenceInterval | integer | Y | 신뢰 구간 범위, 값 1-100% |
12. 모니터 작업 권한 구성 매개변수 설명
| 매개변수명 | type | 설명 |
|---|---|---|
| openPermissionSet | boolean | 사용자 정의 권한 구성 활성화 여부, 기본값 false |
| permissionSet | array | 작업 권한 구성 |
permissionSet, openPermissionSet 필드 설명(2024-06-26 업데이트에서 추가된 필드): openPermissionSet을 활성화하면 워크스페이스 소유자와 permissionSet 구성에 포함된 역할, 팀, 구성원만 편집/활성화/비활성화/삭제를 수행할 수 있습니다. openPermissionSet을 비활성화하면(기본값) 삭제/활성화/비활성화/편집 권한은 기존 인터페이스의 편집/활성화/비활성화/삭제 권한을 따릅니다.
permissionSet 필드는 역할 UUID(wsAdmin, general, readOnly, role_xxxxx), 팀 UUID(group_yyyy), 구성원 UUID(acnt_xxx)를 구성할 수 있습니다. permissionSet 필드 예시:
13. 인시던트 연결 구성 설명
| 매개변수명 | type | 설명 |
|---|---|---|
| extend.isNeedCreateIssue | boolean | 인시던트 연결 여부, 기본값 연결 안 함 |
| extend.issueDfStatus | array | 5가지 유형 선택 가능(fatal, critical, error, warning, nodata), issueDfStatus가 존재할 때: 모니터가 생성한 이벤트의 df_status가 issueDfStatus에 포함된 경우에만 Issue를 생성하며, issueDfStatus가 없으면 모두 Issue를 생성 |
| extend.issueLevelUUID | string | Issue 등급 UUID |
| extend.manager | array | Issue 생성 시 담당자 정보(이메일/워크스페이스 구성원/팀), 예시: ["xxx@guance.com","acnt_yyyy", "group_"] |
| extend.needRecoverIssue | boolean | 이벤트 복구 시 issue를 동기적으로 종료할지 여부, 기본값 false |
| jsonScript.channels | string | isNeedCreateIssue가 true일 때 이 필드는 필수. issue 채널 정보, 예시: ["chan_xxx", "chan_yyy"] |
14. DQL 반영 모드 queryType 설명
extend.querylist가 전달되지 않은 경우 queryType은 자동 주입을 제어하는 외부 선택 필드로, simple과 dql만 지원하며 미전달 시 기본값은 dql입니다. simple을 전달하면 Studio는 로컬 DQL 파서를 사용하여 jsonScript.targets에서 단순 모드 필드를 구문 분석하고 주입합니다. 구문 분석 또는 변환에 실패하면 자동으로 DQL 텍스트 모드로 대체됩니다. extend.querylist를 명시적으로 전달하면 호출자 구조를 그대로 유지하고 queryType의 주입 의미는 무시됩니다.
요청 예시¶
curl 'https://openapi.guance.com/api/v1/checker/add' \
-H 'DF-API-KEY: <DF-API-KEY>' \
-H 'Content-Type: application/json;charset=UTF-8' \
--data-raw '{"queryType":"simple","extend":{"funcName":"","isNeedCreateIssue":false,"issueLevelUUID":"","needRecoverIssue":false,"querylist":[{"datasource":"dataflux","qtype":"dql","query":{"alias":"","code":"Result","dataSource":"ssh","field":"ssh_check","fieldFunc":"count","fieldType":"float","funcList":[],"groupBy":["host"],"groupByTime":"","namespace":"metric","q":"M::`ssh`:(count(`ssh_check`)) BY `host`","type":"simple"},"uuid":"aada629a-672e-46f9-9503-8fd61065c382"}],"rules":[{"conditionLogic":"and","conditions":[{"alias":"Result","operands":["90"],"operator":">="}],"status":"critical"},{"conditionLogic":"and","conditions":[{"alias":"Result","operands":["0"],"operator":">="}],"status":"error"}]},"jsonScript":{"atAccounts":[],"atNoDataAccounts":[],"channels":[],"checkerOpt":{"infoEvent":false,"rules":[{"conditionLogic":"and","conditions":[{"alias":"Result","operands":["90"],"operator":">="}],"status":"critical"},{"conditionLogic":"and","conditions":[{"alias":"Result","operands":["0"],"operator":">="}],"status":"error"}]},"disableCheckEndTime":false,"every":"1m","groupBy":["host"],"interval":300,"message":">Level:{{status}} \n>Host:{{host}} \n>Content:Host SSH Status {{ Result | to_fixed(2) }}% \n>Suggestion:Check Host SSH Service Status","noDataMessage":"","noDataTitle":"","recoverNeedPeriodCount":2,"targets":[{"alias":"Result","dql":"M::`ssh`:(count(`ssh_check`)) BY `host`","qtype":"dql"}],"title":"Host {{ host }} SSH Service Exception-Add Alert Policy","type":"simpleCheck"},"alertPolicyUUIDs":["altpl_xxxx32","altpl_xxxx32"]}' \
--compressed
응답¶
{
"code": 200,
"content": {
"alertPolicyUUIDs": [
"altpl_xxxx32",
"altpl_xxxx32"
],
"createAt": 1710831393,
"createdWay": "manual",
"creator": "wsak_xxxx",
"crontabInfo": {
"crontab": "*/1 * * * *",
"id": "cron-2n8ZyrMWKXB8"
},
"declaration": {
"b": [
"asfawfgajfasfafgafwba",
"asfgahjfaf"
],
"business": "aaa",
"organization": "64fe7b4062f74d0007b46676"
},
"deleteAt": -1,
"extend": {
"funcName": "",
"isNeedCreateIssue": false,
"issueLevelUUID": "",
"needRecoverIssue": false,
"querylist": [
{
"datasource": "dataflux",
"qtype": "dql",
"query": {
"alias": "",
"code": "Result",
"dataSource": "ssh",
"field": "ssh_check",
"fieldFunc": "count",
"fieldType": "float",
"funcList": [],
"groupBy": [
"host"
],
"groupByTime": "",
"namespace": "metric",
"q": "M::`ssh`:(count(`ssh_check`)) BY `host`",
"type": "simple"
},
"uuid": "aada629a-672e-46f9-9503-8fd61065c382"
}
],
"rules": [
{
"conditionLogic": "and",
"conditions": [
{
"alias": "Result",
"operands": [
"90"
],
"operator": ">="
}
],
"status": "critical"
},
{
"conditionLogic": "and",
"conditions": [
{
"alias": "Result",
"operands": [
"0"
],
"operator": ">="
}
],
"status": "error"
}
]
},
"id": null,
"isLocked": false,
"jsonScript": {
"atAccounts": [],
"atNoDataAccounts": [],
"channels": [],
"checkerOpt": {
"infoEvent": false,
"rules": [
{
"conditionLogic": "and",
"conditions": [
{
"alias": "Result",
"operands": [
"90"
],
"operator": ">="
}
],
"status": "critical"
},
{
"conditionLogic": "and",
"conditions": [
{
"alias": "Result",
"operands": [
"0"
],
"operator": ">="
}
],
"status": "error"
}
]
},
"disableCheckEndTime": false,
"every": "1m",
"groupBy": [
"host"
],
"interval": 300,
"message": ">Level:{{status}} \n>Host:{{host}} \n>Content:Host SSH Status {{ Result | to_fixed(2) }}% \n>Suggestion:Check Host SSH Service Status",
"name": "Host {{ host }} SSH Service Exception-Add Alert Policy",
"noDataMessage": "",
"noDataTitle": "",
"recoverNeedPeriodCount": 2,
"targets": [
{
"alias": "Result",
"dql": "M::`ssh`:(count(`ssh_check`)) BY `host`",
"qtype": "dql"
}
],
"title": "Host {{ host }} SSH Service Exception-Add Alert Policy",
"type": "simpleCheck"
},
"monitorName": "default",
"monitorUUID": "monitor_xxxx32",
"refKey": "",
"secret": "",
"status": 0,
"tagInfo": [],
"type": "trigger",
"updateAt": null,
"updator": null,
"uuid": "rul_xxxx32",
"workspaceUUID": "wksp_xxxx32"
},
"errorCode": "",
"message": "",
"success": true,
"traceId": "TRACE-014A6CF1-E9D8-4EA7-9527-D3C39CC3A94A"
}