文档下载建议反馈入口

  • 功能概述
  • 流程说明
  • 功能配置

监控告警

功能概述

KaiwuDB支持邮件和MQTT两种告警通知方式,旨在将数据库运行关键指标(如 CPU 使用率、内存使用率、连接数、存储空间、非健康节点等),按着一定频率自动向第三方系统发送通知,及时掌握数据库运行状态。该功能具备以下特点:

  • 多维度监控:实时跟踪 CPU、内存、连接数、存储空间、剩余测点数等核心运行指标,自动检测许可证有效期,提前发送到期通知,避免服务中断风险
  • 智能告警机制:支持自定义告警阈值、触发持续时间及冷却时间,降低误报率并避免重复告警
  • 灵活配置方式:可通过 SQL 语句或图形界面完成配置,支持设置多个收件邮箱
  • 通知途径多样性:支持邮箱、MQTT两种方式

说明

  • 开启通知功能后,系统会自动启动监控模块,监控系统运行资源和许可证临期时间,可能会消耗一部分数据库性能。
  • 在短时间内,如果同一个 IP 地址发送 5 条以上的邮件,STMP 服务器会限制该 IP 地址的登录请求。等待 10 分钟后,该 IP 地址才能发送邮件。
  • MQTT 仅支持MQTT 3.1.1;不支持MQTT 5.0特性。

流程说明

KaiwuDB 告警通知功能的整体逻辑包括通知配置、指标监控和告警发送。具体流程如下所示:

  1. 用户完成邮件/MQTT通知配置后,系统将解析和获取发送所需的配置信息。

  2. 系统通过监控模块定期获取以下指标信息:

    • CPU 使用率
    • 内存使用率
    • 连接数
    • 存储空间使用率
    • 剩余测点数使用率
    • License 剩余天数
    • 非健康节点数量
  3. 当某个指标值超过默认阈值或用户设置值时,就会触发告警并记录一条告警日志。如果启用了告警通知功能,且配置无误,系统将自动生成告警消息并推送至目标端。以下是邮件告警示例:

功能配置

KaiwuDB 支持通过用户通过以下方式设置告警通知功能:

  • 通过 SQL 语句配置:适合熟悉命令行操作的用户,配置灵活高效

  • 通过 KaiwuDB 监控界面:提供可视化操作界面,配置直观便捷。具体步骤参见监控报警

    邮件通知界面示例
    MQTT通知界面示例

以下以 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": 
  }';

参数说明:

参数说明
brokerMQTT地址,配置格式mqtt://host:port,支持 tcp/mqtt/ssl/tls/mqtts
topicMOTT主题名称,支持多个,英文逗号分隔
usernameMQTT登录用户名,仅当MQTT开启鉴权时填写
PasswordMQTT登录密码,,仅当MQTT开启鉴权时填写
recvUsr接收者,允许配置多个,多个之间用逗号(,)分割,仅允许字母数字、_-. 空格与英文逗号
qosMQTT服务质量等级。仅支持 01, 0 代表至多一次, 1 代表至少一次
cooldown冷却时间,参数值范围:1–86400秒
trigger触发延时,持续超过阈值多久后才推送,参数值范围:0–86400秒,0 代表越界即推送
tlsCert用于MQTT Broker服务端身份验证的CA 证书,仅支持单向认证。broker url使用ssl/tls/mqtts时生效

告警指标配置

  1. (可选)自定义告警阈值。取值范围为 [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>;
    
  1. license 告警指标
  • 剩余测点数使用率:

    SET CLUSTER SETTING alert.endpoint.threshold = <threshold>;
    
  • 设置 License 剩余天数。默认情况下,许可证过期前 30 天开始发送通知。

```sql
SET CLUSTER SETTING alert.license.threshold = <days>;
```
  1. 非健康节点数量
```sql
SET CLUSTER SETTING alert.unhealthynode.threshold = 
```

关闭告警通知

默认情况下,KaiwuDB 关闭告警通知功能。

前提条件

  • 非三权分立模式下,用户是 admin 角色的成员。默认情况下,root 用户属于 admin 角色。
  • 三权分立模式下,用户是 sysadmin 角色的成员。默认情况下,sysroot 用户属于 sysadmin 角色。

步骤

  1. 关闭监控告警通知功能。
--关闭邮件通知
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>;