跳转至

创建一个监控器



POST /api/v1/checker/add

概述

创建一个监控器

Body 请求参数

参数名 类型 必选 说明
type string 监控器类型, 默认trigger, trigger:普通监控器, smartMonitor 为智能监控
允许为空: False
例子: smartMonitor
extend json 额外信息
允许为空: True
monitorUUID string 分组id
允许为空: True
允许为空字符串: 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.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.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', '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.rules array 触发条件列表
例子: [{'status': 'warning', 'conditions': [{'operands': [60], 'operator': '>', 'alias': 'M1'}], 'conditionLogic': 'and', 'matchTimes': 10}]
允许为空: False
jsonScript.checkerOpt.openMatchTimes boolean 开启连续触发判断, 默认 关闭false
例子: True
jsonScript.checkerOpt.infoEvent boolean 是否在持续正常时产生info事,默认false
例子: True
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.channels array 频道UUID列表
例子: ['名称1', '名称2']
允许为空: False
jsonScript.atAccounts array 正常检测下被@的账号UUID列表
例子: ['xx1', 'xx2']
允许为空: False
jsonScript.atNoDataAccounts array 无数据情况下被@的账号UUID列表
例子: ['xx1', 'xx2']
允许为空: False
jsonScript.subUri string 表示Webhook地址的地址后缀(根据用户业务侧需求可选设置,无特殊限制)
例子: datakit/push
允许为空: False
jsonScript.disableCheckEndTime boolean 是否禁用结束时间限制
例子: True
允许为空: False
openPermissionSet boolean 开启 自定义权限配置, (默认 false:不开启), 开启后 该规则的操作权限根据 permissionSet
允许为空: False
permissionSet array 操作权限配置, 可配置(角色(除拥有者), 成员uuid, 团队uuid)
例子: ['wsAdmin', 'acnt_xxxx', 'group_yyyy']
允许为空: False

参数补充说明

数据说明.

jsonScript 参数说明

1. 检查类型jsonScript.type 说明

key 说明
simpleCheck 阈值检测
seniorMutationsCheck 突变检测
seniorRangeCheck 区间检测
seniorRangeV2Check 区间检测V2
outlierCheck 离群检测
loggingCheck 日志检测
processCheck 进程异常检测
objectSurvivalCheck 基础设施存活检测
objectSurvivalV2Check 基础设施存活检测V2, 只支持doris空间
apmCheck 应用性能指标检测
rumCheck 用户访问指标检测
securityCheck 安全巡检异常检测
cloudDialCheck 可用性数据检测
networkCheck 网络数据检测
OuterEventChecker 外部事件检测
smartHostCheck 智能监控, 主机智能检测
smartLogCheck 智能监控, 日志智能检测
smartApmCheck 智能监控, 应用智能检测
smartRumCheck 智能监控, 用户访问智能检测
smartKubeCheck 智能监控, Kubernetes 智能检测
smartCloudBillingCheck 智能监控, 云账单智能检测
combinedCheck 组合监控

2. 已下线的检查类型jsonScript.type 说明

key 说明
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]

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
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

**5.jsonScript.noDataAction参数信息 **

参数名 说明
none 无动作(即与[关闭无数据相关处理]相同)
checkAs0 查询结果视为0
noDataEvent 触发恢复事件(noData)
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
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 Y 一个任意长度的随机字符串,工作空间内唯一, 用于识别事件所属监控器。
jsonScript.subUri string 表示Webhook地址的地址后缀(根据用户业务侧需求可选设置,无特殊限制)

10. 字段 disableCheckEndTime 说明

上报数据观测云对其处理逻辑包含 追加写入、更新覆盖 两种模式,根据这两种数据的特性,监控需要做检测的区别对待。此区别对应范围包含监控器、智能监控、智能巡检所有模块。 所有覆盖更新机制的数据类型配置监控器检测时,为了避免因为监控器执行 delay 1 分钟导致更新模式的数据在固定的时间范围内有逃逸现象,此类监控器类型的检测区间不指定结束时间。 涉及监控器类型:阈值检测、突变检测、区间检测、离群检测、进程异常检测、基础设施存活检测、用户访问指标检测(个别指标,详见下面表格)

数据类型 Namespace 写入模式
指标 M 追加
事件 E 追加
未恢复事件 UE 覆盖
基础设施-对象 O 覆盖
基础设施-自定义对象 CO 覆盖
基础设施-对象历史 OH 追加
基础设施-自定义对象历史 COH 追加
日志 / 可用性监测 / CI 可视化 L 追加
应用性能监测-链路 T 追加
应用性能监测-Profile P 追加
用户访问监测-Session R::session 覆盖
用户访问监测-View R::view 覆盖
用户访问监测-Resource R::resource 追加
用户访问监测-Long Task R::long_task 追加
用户访问监测-Action R::action 追加
用户访问监测-Error 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 字段示例:

  ["wsAdmin", "general", "group_yyyy", "acnt_xxxx"]


13. 关联异常追踪 配置说明 | 参数名 | type | 说明 | |---------------|----------|------------------------| | extend.isNeedCreateIssue | boolean | 是否关联异常追踪, 默认不关联 | | extend.issueDfStatus | array | 可选4中类型(critical, error, warning, nodata), issueDfStatus 存在时: 监控器产生的事件 df_status 在 issueDfStatus 中 才会创建 Issue ,issueDfStatus不存在, 都会创建Issue | | extend.issueLevelUUID | string | issue 等级UUID | | extend.manager | array | 创建Issue 时的负责人信息(邮箱/空间成员/团队) , 示列: ["xx@qq.com","acnt_yyyy", "group_"] | | extend.needRecoverIssue | boolean | 事件恢复是否需要 同步关闭 issue, 默认 false | | jsonScript.channels | string | isNeedCreateIssue 为true 时,该字段必传. issue 频道信息, 示列: ["chan_xxx", "chan_yyy"] |


请求例子

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 '{"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":">等级:{{status}}  \n>主机:{{host}}  \n>内容:主机 SSH 状态 {{ Result |  to_fixed(2) }}%  \n>建议:检查主机 SSH 服务状态","noDataMessage":"","noDataTitle":"","recoverNeedPeriodCount":2,"targets":[{"alias":"Result","dql":"M::`ssh`:(count(`ssh_check`)) BY `host`","qtype":"dql"}],"title":"主机 {{ host }} SSH 服务异常-添加告警策略","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": ">等级:{{status}}  \n>主机:{{host}}  \n>内容:主机 SSH 状态 {{ Result |  to_fixed(2) }}%  \n>建议:检查主机 SSH 服务状态",
            "name": "主机 {{ host }} SSH 服务异常-添加告警策略",
            "noDataMessage": "",
            "noDataTitle": "",
            "recoverNeedPeriodCount": 2,
            "targets": [
                {
                    "alias": "Result",
                    "dql": "M::`ssh`:(count(`ssh_check`)) BY `host`",
                    "qtype": "dql"
                }
            ],
            "title": "主机 {{ host }} SSH 服务异常-添加告警策略",
            "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"
} 

文档评价

文档内容是否对您有帮助? ×