监控告警
功能概述
KaiwuDB支持邮件和MQTT两种告警通知方式,旨在将数据库运行关键指标(如 CPU 使用率、内存使用率、连接数、存储空间、非健康节点等),按着一定频率自动向第三方系统发送通知,及时掌握数据库运行状态。该功能具备以下特点:
- 多维度监控:实时跟踪 CPU、内存、连接数、存储空间、剩余测点数等核心运行指标,自动检测许可证有效期,提前发送到期通知,避免服务中断风险
- 智能告警机制:支持自定义告警阈值、触发持续时间及冷却时间,降低误报率并避免重复告警
- 灵活配置方式:可通过 SQL 语句或图形界面完成配置,支持设置多个收件邮箱
- 通知途径多样性:支持邮箱、MQTT两种方式
说明
- 开启通知功能后,系统会自动启动监控模块,监控系统运行资源和许可证临期时间,可能会消耗一部分数据库性能。
- 在短时间内,如果同一个 IP 地址发送 5 条以上的邮件,STMP 服务器会限制该 IP 地址的登录请求。等待 10 分钟后,该 IP 地址才能发送邮件。
- MQTT 仅支持MQTT 3.1.1;不支持MQTT 5.0特性。
流程说明
KaiwuDB 告警通知功能的整体逻辑包括通知配置、指标监控和告警发送。具体流程如下所示:

用户完成邮件/MQTT通知配置后,系统将解析和获取发送所需的配置信息。
系统通过监控模块定期获取以下指标信息:
- CPU 使用率
- 内存使用率
- 连接数
- 存储空间使用率
- 剩余测点数使用率
- License 剩余天数
- 非健康节点数量
当某个指标值超过默认阈值或用户设置值时,就会触发告警并记录一条告警日志。如果启用了告警通知功能,且配置无误,系统将自动生成告警消息并推送至目标端。以下是邮件告警示例:

功能配置
KaiwuDB 支持通过用户通过以下方式设置告警通知功能:
通过 SQL 语句配置:适合熟悉命令行操作的用户,配置灵活高效
通过 KaiwuDB 监控界面:提供可视化操作界面,配置直观便捷。具体步骤参见监控报警。


以下以 SQL 语句的配置为例说明如何完成告警通知配置:
前提条件
- 非三权分立模式下,用户是
admin角色的成员。默认情况下,root用户属于admin角色。 - 三权分立模式下,用户是
sysadmin角色的成员。默认情况下,sysroot用户属于sysadmin角色。
启用告警通知
配置 SMTP 服务器设置
--启用邮件通知
SET CLUSTER SETTING alert.email.enabled = true;
SET CLUSTER SETTING alert.smtp.config = '{
"SMTPServer": "smtp.example.com",
"Port": 端口号,
"Username": "user@example.com",
"Password": "yourpassword",
"FromEmail": "from@example.com",
"ToEmails": ["to1@example.com", "to2@example.com"]
}';
参数说明:
| 参数 | 说明 |
|---|---|
SMTPServer | 邮件服务器的域名或 IP 地址。仅支持英文字母、数字和单引号'。 |
Port | 邮件服务器的端口号。取值范围为 [1,65535]。常见端口号: - 25:默认的 SMTP 端口(非加密)。- 587:用于加密的 SMTP 端口(STARTTLS)。- 465:用于 SSL/TLS 加密的 SMTP 端口。 |
Username | 邮件服务器登录用户名,通常为邮箱地址。 |
Password | 邮件服务器登录密码或授权码。 注意: - 通常情况下是邮箱账号的登录密码。在使用外部 SMTP 服务时,可能需要应用专用密码(授权码)。 - 建议使用环境变量或加密配置文件安全存储密码。 |
FromEmail | 发送邮件的邮箱地址。 |
ToEmails | 接收邮件的邮箱地址列表,可以有不超过 10 个地址,使用逗号分隔。 |
配置 MQTT 设置
--启用MQTT
SET CLUSTER SETTING alert.mqtt.enabled = true;
SET CLUSTER SETTING alert.mqtt.config = '{
"broker": "mqtt://host:port",
"username": "",
"password": "",
"topic": "ylkj/msg/push/s2p/kaiwu",
"recvUsr": "ops,dba",
"qos": 0,
"cooldown": "60s",
"trigger": "10s",
"tlsCert":
}';
参数说明:
| 参数 | 说明 |
|---|---|
broker | MQTT地址,配置格式mqtt://host:port,支持 tcp/mqtt/ssl/tls/mqtts |
topic | MOTT主题名称,支持多个,英文逗号分隔 |
username | MQTT登录用户名,仅当MQTT开启鉴权时填写 |
Password | MQTT登录密码,,仅当MQTT开启鉴权时填写 |
recvUsr | 接收者,允许配置多个,多个之间用逗号(,)分割,仅允许字母数字、_-. 空格与英文逗号 |
qos | MQTT服务质量等级。仅支持 0 或 1, 0 代表至多一次, 1 代表至少一次 |
cooldown | 冷却时间,参数值范围:1–86400秒 |
trigger | 触发延时,持续超过阈值多久后才推送,参数值范围:0–86400秒,0 代表越界即推送 |
tlsCert | 用于MQTT Broker服务端身份验证的CA 证书,仅支持单向认证。broker url使用ssl/tls/mqtts时生效 |
告警指标配置
- (可选)自定义告警阈值。取值范围为
[0,1]。默认阈值为大多数资源的0.8(80%)和连接数的0.9(90%)。
CPU 使用率:
SET CLUSTER SETTING alert.cpu.threshold = <threshold>;内存使用率:
SET CLUSTER SETTING alert.mem.threshold = <threshold>;连接数:
SET CLUSTER SETTING alert.connections.threshold = <threshold>;存储空间使用率(已用总空间和时序热温冷数据空间):
SET CLUSTER SETTING alert.storage.threshold = <threshold>;
- license 告警指标
剩余测点数使用率:
SET CLUSTER SETTING alert.endpoint.threshold = <threshold>;设置 License 剩余天数。默认情况下,许可证过期前 30 天开始发送通知。
```sql
SET CLUSTER SETTING alert.license.threshold = <days>;
```
- 非健康节点数量
```sql
SET CLUSTER SETTING alert.unhealthynode.threshold =
```
关闭告警通知
默认情况下,KaiwuDB 关闭告警通知功能。
前提条件
- 非三权分立模式下,用户是
admin角色的成员。默认情况下,root用户属于admin角色。 - 三权分立模式下,用户是
sysadmin角色的成员。默认情况下,sysroot用户属于sysadmin角色。
步骤
- 关闭监控告警通知功能。
--关闭邮件通知
SET CLUSTER SETTING alert.email.enabled = false;
--关闭MQTT通知
SET CLUSTER SETTING alert.mqtt.enabled = false;
定制化告警功能
KaiwuDB 支持用户根据需要设置以下指标告警信息:
- 告警触发持续时间:告警条件需要持续满足指定时间后才会触发告警通知,用于控制告警触发的灵敏度,防止误报。默认时间为 1 秒。
- 告警冷却时间:在触发告警后,相同告警条件在指定时间内不会重复发送告警通知,控制告警通知的频率,防止重复告警,默认时间为 2 分钟。
前提条件
- 非三权分立模式下,用户是
admin角色的成员。默认情况下,root用户属于admin角色。 - 三权分立模式下,用户是
sysadmin角色的成员。默认情况下,sysroot用户属于sysadmin角色。
步骤
设置告警触发持续时间:
SET CLUSTER SETTING alert.trigger.duration = <duration>;设置告警冷却时间:
SET CLUSTER SETTING alert.cooldown.duration = <duration>;