Skip to content

告警相关 API

通知对象

创建通知对象

用途:新增一个用于接收告警的联系人。

POST /alerting/receiver

输入参数:

参数 是否必填 含义
group_id 工作区 ID(workspace_id)
name 接收者名称
notify_type 通知类型:0-邮件,1-短信,2-电话语音,3-企业微信
status 状态:0-禁用,1-启用
email 邮箱地址(notify_type 为 0 时必填)
phone 电话号码(notify_type 为 1 或 2 时必填)
wecom_key 企业微信机器人密钥(notify_type 为 3 时必填)
comment 备注

输出参数:

参数 含义
id 接收者 ID

示例:

import requests
import json

url = "https://freetier-01.cn-hangzhou.cluster.matrixonecloud.cn/alerting/receiver"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "moi-key": "YOUR_MOI_KEY"
}

body = {
    "group_id": "YOUR_WORKSPACE_ID",
    "name": "邮件接收者",
    "notify_type": 0,
    "status": 1,
    "email": "user@example.com",
    "comment": "用于接收告警邮件"
}

response = requests.post(url, headers=headers, json=body)
print("Response:", json.dumps(response.json(), indent=4, ensure_ascii=False))

返回:

{
    "code": "OK",
    "msg": "OK",
    "data": {
        "id": "receiver_id_12345"
    },
    "request_id": "req_12345"
}

获取单个通知对象详情

用途:根据接收者 ID 查询详细信息。

GET /alerting/receiver?id={receiver_id}

输入参数:

参数 是否必填 含义
id 接收者 ID

输出参数:

参数 含义
id 接收者 ID
name 接收者名称
notify_type 通知类型:0-邮件,1-短信,2-电话语音,3-企业微信
status 状态:0-禁用,1-启用
email 邮箱地址
phone 电话号码
wecom_key 企业微信机器人密钥
comment 备注
org_id 组织 ID
workspace_id 工作区 ID
created_at 创建时间(时间戳)
updated_at 更新时间(时间戳)

示例:

import requests
import json

url = "https://freetier-01.cn-hangzhou.cluster.matrixonecloud.cn/alerting/receiver"
headers = {
    "Accept": "application/json",
    "moi-key": "YOUR_MOI_KEY"
}

params = {
    "id": "receiver_id_12345"
}

response = requests.get(url, headers=headers, params=params)
print("Response:", json.dumps(response.json(), indent=4, ensure_ascii=False))

返回:

{
    "code": "OK",
    "msg": "OK",
    "data": {
        "id": "receiver_id_12345",
        "name": "邮件接收者",
        "notify_type": 0,
        "status": 1,
        "email": "user@example.com",
        "phone": "",
        "wecom_key": "",
        "comment": "用于接收告警邮件",
        "org_id": "org_12345",
        "workspace_id": "workspace_12345",
        "created_at": 1640995200,
        "updated_at": 1640995200
    },
    "request_id": "req_12345"
}

获取通知对象列表

用途:按条件分页查询接收者。

POST /alerting/receiver/list

输入参数:

参数 是否必填 含义
page 页码,从 1 开始
page_size 每页大小
receiver_filter 过滤条件

receiver_filter 参数:

参数 是否必填 含义
group_ids 工作区 ID 列表(workspace_id 数组)
ids 接收者 ID 列表,用于精确查询指定的接收者
name_keyword 名称关键词,模糊匹配接收者名称
email_keyword 邮箱关键词,模糊匹配邮箱地址
phone_keyword 电话关键词,模糊匹配电话号码
notify_types 通知类型列表:0-邮件,1-短信,2-电话语音,3-企业微信
statuses 状态列表:0-禁用,1-启用
search_keyword 搜索关键词,全局搜索接收者信息
create_time_order 创建时间排序:asc(升序)/desc(降序)
update_time_order 更新时间排序:asc(升序)/desc(降序)

输出参数:

参数 含义
receivers 接收者列表,每个元素包含接收者的详细信息
total 符合条件的接收者总数

receivers 数组元素结构:

参数 含义
id 接收者 ID
name 接收者名称
notify_type 通知类型:0-邮件,1-短信,2-电话语音,3-企业微信
status 状态:0-禁用,1-启用
email 邮箱地址
phone 电话号码
wecom_key 企业微信机器人密钥
comment 备注
org_id 组织 ID
workspace_id 工作区 ID
created_at 创建时间(时间戳)
updated_at 更新时间(时间戳)

示例:

import requests
import json

url = "https://freetier-01.cn-hangzhou.cluster.matrixonecloud.cn/alerting/receiver/list"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "moi-key": "YOUR_MOI_KEY"
}

body = {
    "page": 1,
    "page_size": 10,
    "receiver_filter": {
        "group_ids": ["YOUR_WORKSPACE_ID"],
        "statuses": [1]
    }
}

response = requests.post(url, headers=headers, json=body)
print("Response:", json.dumps(response.json(), indent=4, ensure_ascii=False))

返回:

{
    "code": "OK",
    "msg": "OK",
    "data": {
        "receivers": [
            {
                "id": "receiver_id_12345",
                "name": "邮件接收者",
                "notify_type": 0,
                "status": 1,
                "email": "user1@example.com",
                "phone": "",
                "wecom_key": "",
                "comment": "用于接收告警邮件",
                "org_id": "org_12345",
                "workspace_id": "workspace_12345",
                "created_at": 1640995200,
                "updated_at": 1640995200
            },
            {
                "id": "receiver_id_67890",
                "name": "企业微信接收者",
                "notify_type": 3,
                "status": 1,
                "email": "",
                "phone": "",
                "wecom_key": "wecom_bot_key_12345",
                "comment": "企业微信群告警通知",
                "org_id": "org_12345",
                "workspace_id": "workspace_12345",
                "created_at": 1640995260,
                "updated_at": 1640995260
            }
        ],
        "total": 15
    },
    "request_id": "req_12345"
}

错误响应:

400 参数错误:

{
    "code": "INVALID_ARGUMENT",
    "msg": "参数错误:page 必须大于 0",
    "request_id": "req_12345"
}

500 服务器内部错误:

{
    "code": "INTERNAL_ERROR",
    "msg": "服务器内部错误",
    "request_id": "req_12345"
}

更新通知对象

用途:更新指定 ID 的接收者信息。

PUT /alerting/receiver

输入参数:

参数 是否必填 含义
id 接收者 ID
name 接收者名称
notify_type 通知类型:0-邮件,1-短信,2-电话语音,3-企业微信
status 状态:0-禁用,1-启用
email 邮箱地址
phone 电话号码
wecom_key 企业微信机器人密钥
comment 备注

输出参数:

参数 含义
id 接收者 ID

示例:

import requests
import json

url = "https://freetier-01.cn-hangzhou.cluster.matrixonecloud.cn/alerting/receiver"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "moi-key": "YOUR_MOI_KEY"
}

body = {
    "id": "receiver_id_12345",
    "name": "更新后的接收者名称",
    "status": 1,
    "comment": "更新后的备注"
}

response = requests.put(url, headers=headers, json=body)
print("Response:", json.dumps(response.json(), indent=4, ensure_ascii=False))

删除通知对象

用途:删除指定 ID 的接收者,并同步更新相关告警规则。

DELETE /alerting/receiver

输入参数:

参数 是否必填 含义
id 接收者 ID

示例:

import requests
import json

url = "https://freetier-01.cn-hangzhou.cluster.matrixonecloud.cn/alerting/receiver"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "moi-key": "YOUR_MOI_KEY"
}

body = {
    "id": "receiver_id_12345"
}

response = requests.delete(url, headers=headers, json=body)
print("Response:", json.dumps(response.json(), indent=4, ensure_ascii=False))

告警规则

创建告警规则

POST /alerting/workspace/alert/rule/create

Header 参数:

参数名 类型 是否必填 描述
moi-key string MOI API 密钥

输入参数:

参数 是否必填 含义
workspace_id 工作区 ID(工作区模式下必填)
expression_id 表达式 ID
category 类别:0-metric(数据处理),1-event(数据加载)
level 告警级别
args 参数列表
receivers 接收者 ID 列表
repeat_interval 重复间隔
silence_rule 静默规则

输出参数:

参数 含义
alert_id 告警 ID

示例:

import requests
import json

url = "https://freetier-01.cn-hangzhou.cluster.matrixonecloud.cn/alerting/workspace/alert/rule/create"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "moi-key": "YOUR_MOI_KEY"
}

body = {
    "workspace_id": "YOUR_WORKSPACE_ID",
    "expression_id": "expr_12345",
    "category": 1,  # 1-event(事件),0-metric(指标)
    "level": "critical",
    "args": [
        {
            "key": "threshold",
            "value": "80"
        }
    ],
    "receivers": ["receiver_id_12345"],
    "repeat_interval": 300,
    "silence_rule": {
        "enabled": false
    }
}

response = requests.post(url, headers=headers, json=body)
print("Response:", json.dumps(response.json(), indent=4, ensure_ascii=False))

获取告警规则列表

POST /alerting/workspace/alert/rule/list

Header 参数:

参数名 类型 是否必填 描述
moi-key string MOI API 密钥

输入参数:

参数 是否必填 含义
filters 过滤条件,用于筛选告警规则
limit 限制返回的告警数量
offset 偏移量,用于分页查询
sorter 排序条件,指定结果排序方式

filters 参数:

参数 是否必填 含义
workspace_id 工作区 ID,用于筛选指定工作区的告警规则
org_id 组织 ID,用于筛选指定组织的告警规则
org_id_list 组织 ID 列表,用于批量筛选多个组织的告警规则
rule_id 规则 ID,用于精确查询指定的告警规则
alert_types 告警类型列表,用于筛选指定类型的告警
levels 告警级别列表,用于筛选指定级别的告警
states 告警状态列表,用于筛选指定状态的告警
enable 启用状态列表,用于筛选启用/禁用的告警规则
contact_id 联系人 ID,用于筛选指定联系人的告警规则
expression 表达式关键词,用于模糊匹配告警表达式
notify_types 通知类型列表,用于筛选指定通知方式的告警
intervals 时间间隔列表,用于筛选指定间隔的告警

sorter 参数:

参数 是否必填 含义
sort_by 排序字段,如 "created_at"、"updated_at" 等
is_desc 是否降序排列,true-降序,false-升序

输出参数:

参数 含义
alerts 告警规则列表,每个元素包含告警规则的详细信息
total 符合条件的告警规则总数

alerts 数组元素结构:

参数 含义
alert_id 告警 ID
alert_config 告警配置信息
complete_expr 完整表达式(英文)
complete_expr_cn 完整表达式(中文)
state 告警状态
has_new 是否有新告警
silence_rule 静默规则配置
org_id 组织 ID(工作区模式下为空)
workspace_id 工作区 ID(组织模式下为空)
created_at 创建时间
updated_at 更新时间

示例:

import requests
import json

url = "https://freetier-01.cn-hangzhou.cluster.matrixonecloud.cn/alerting/workspace/alert/rule/list"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "moi-key": "YOUR_MOI_KEY"
}

body = {
    "filters": {
        "workspace_id": "YOUR_WORKSPACE_ID",
        "levels": ["critical", "warning"],
        "states": ["active"]
    },
    "limit": 10,
    "offset": 0,
    "sorter": {
        "sort_by": "created_at",
        "is_desc": true
    }
}

response = requests.post(url, headers=headers, json=body)
print("Response:", json.dumps(response.json(), indent=4, ensure_ascii=False))

返回:

{
    "code": "OK",
    "msg": "OK",
    "data": {
        "alerts": [
            {
                "alert_id": "alert_12345",
                "alert_config": {
                    "id": "config_12345",
                    "alert_type": "cpu_usage",
                    "category": 0,
                    "level": "critical",
                    "content": "CPU usage is high",
                    "content_cn": "CPU 使用率过高",
                    "expression": "cpu_usage > 80",
                    "expression_cn": "CPU 使用率 > 80%",
                    "is_default_enable": true
                },
                "complete_expr": "cpu_usage > 80 for 5 minutes",
                "complete_expr_cn": "CPU 使用率 > 80% 持续 5 分钟",
                "state": "active",
                "has_new": true,
                "silence_rule": {
                    "enabled": false,
                    "resume_at": ""
                },
                "org_id": "",
                "workspace_id": "workspace_12345",
                "created_at": "2024-01-01T10:00:00Z",
                "updated_at": "2024-01-01T10:00:00Z"
            },
            {
                "alert_id": "alert_67890",
                "alert_config": {
                    "id": "config_67890",
                    "alert_type": "memory_usage",
                    "category": 0,
                    "level": "warning",
                    "content": "Memory usage is high",
                    "content_cn": "内存使用率过高",
                    "expression": "memory_usage > 70",
                    "expression_cn": "内存使用率 > 70%",
                    "is_default_enable": true
                },
                "complete_expr": "memory_usage > 70 for 3 minutes",
                "complete_expr_cn": "内存使用率 > 70% 持续 3 分钟",
                "state": "active",
                "has_new": false,
                "silence_rule": {
                    "enabled": false,
                    "resume_at": ""
                },
                "org_id": "",
                "workspace_id": "workspace_12345",
                "created_at": "2024-01-01T11:00:00Z",
                "updated_at": "2024-01-01T11:00:00Z"
            }
        ],
        "total": 25
    },
    "request_id": "req_12345"
}

更新告警规则

POST /alerting/workspace/alert/rule/update

Header 参数:

参数名 类型 是否必填 描述
moi-key string MOI API 密钥

输入参数:

参数 是否必填 含义
alert_id 告警 ID
level 告警级别
args 参数列表
receivers 接收者 ID 列表
repeat_interval 重复间隔
silence_rule 静默规则

示例:

import requests
import json

url = "https://freetier-01.cn-hangzhou.cluster.matrixonecloud.cn/alerting/workspace/alert/rule/update"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "moi-key": "YOUR_MOI_KEY"
}

body = {
    "alert_id": "alert_12345",
    "level": "warning",
    "args": [
        {
            "key": "threshold",
            "value": "90"
        }
    ],
    "receivers": ["receiver_id_12345", "receiver_id_67890"],
    "repeat_interval": 600
}

response = requests.post(url, headers=headers, json=body)
print("Response:", json.dumps(response.json(), indent=4, ensure_ascii=False))

删除告警规则

POST /alerting/workspace/alert/rule/delete

Header 参数:

参数名 类型 是否必填 描述
moi-key string MOI API 密钥

输入参数:

参数 是否必填 含义
alert_id 告警 ID

示例:

import requests
import json

url = "https://freetier-01.cn-hangzhou.cluster.matrixonecloud.cn/alerting/workspace/alert/rule/delete"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "moi-key": "YOUR_MOI_KEY"
}

body = {
    "alert_id": "alert_12345"
}

response = requests.post(url, headers=headers, json=body)
print("Response:", json.dumps(response.json(), indent=4, ensure_ascii=False))

告警记录

查看告警记录列表

用途:分页查询告警记录历史。

POST /alerting/history/list

输入参数:

参数 是否必填 含义
page 页数
size 每页显示条数
filter 过滤条件

filter 参数:

参数 是否必填 含义
group_id 工作区 ID
start 开始时间
end 结束时间
create_at_order 告警时间排序
search_keyword 查询关键字
severity 告警严重性

输出参数:

参数 含义
total 告警总数
histories 告警记录列表,每个元素包含告警记录的详细信息

histories 数组元素结构:

参数 含义
id 告警记录 ID
rule_id 告警规则 ID
group_id 工作区 ID
rule_template_id 表达式 ID
rule_expression 告警表达式(英文)
rule_expression_cn 告警表达式(中文)
alert_type 告警类别
alert_severity 告警严重性
receivers 通知对象列表
create_at 创建时间
is_read 是否已读

receivers 数组元素结构:

参数 含义
id 通知对象 ID
name 通知对象名称
notify_type 通知类型:0-邮件,1-短信,2-电话语音,3-企业微信
email 通知对象邮箱
phone 通知对象电话
wecom_key 企业微信机器人密钥

示例:

import requests
import json

url = "https://freetier-01.cn-hangzhou.cluster.matrixonecloud.cn/alerting/history/list"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "moi-key": "YOUR_MOI_KEY"
}

body = {
    "page": 1,
    "size": 10,
    "filter": {
        "group_id": "YOUR_WORKSPACE_ID",
        "start": "2024-01-01T00:00:00Z",
        "end": "2024-01-31T23:59:59Z",
        "severity": "critical",
        "create_at_order": "desc"
    }
}

response = requests.post(url, headers=headers, json=body)
print("Response:", json.dumps(response.json(), indent=4, ensure_ascii=False))

返回:

{
    "code": "OK",
    "msg": "OK",
    "data": {
        "total": 25,
        "histories": [
            {
                "id": "history_12345",
                "rule_id": "rule_12345",
                "group_id": "workspace_12345",
                "rule_template_id": "template_12345",
                "rule_expression": "cpu_usage > 80",
                "rule_expression_cn": "CPU 使用率 > 80%",
                "alert_type": "cpu_usage",
                "alert_severity": "critical",
                "receivers": [
                    {
                        "id": "receiver_12345",
                        "name": "运维团队",
                        "notify_type": 0,
                        "email": "ops@example.com",
                        "phone": "",
                        "wecom_key": ""
                    },
                    {
                        "id": "receiver_67890",
                        "name": "企业微信群",
                        "notify_type": 3,
                        "email": "",
                        "phone": "",
                        "wecom_key": "wecom_bot_key_12345"
                    }
                ],
                "create_at": "2024-01-15T10:30:00Z",
                "is_read": false
            },
            {
                "id": "history_67890",
                "rule_id": "rule_67890",
                "group_id": "workspace_12345",
                "rule_template_id": "template_67890",
                "rule_expression": "memory_usage > 90",
                "rule_expression_cn": "内存使用率 > 90%",
                "alert_type": "memory_usage",
                "alert_severity": "warning",
                "receivers": [
                    {
                        "id": "receiver_12345",
                        "name": "运维团队",
                        "notify_type": 0,
                        "email": "ops@example.com",
                        "phone": "",
                        "wecom_key": ""
                    }
                ],
                "create_at": "2024-01-15T09:15:00Z",
                "is_read": true
            }
        ]
    },
    "request_id": "req_12345"
}