告警

EMQX 内置监控与告警功能,目前支持监控 CPU 占用率、系统与进程的内存占用率、进程数量、规则引擎资源状态、集群脑裂与愈合,并会在发现异常时进行告警。告警的激活与取消都将产生一条警告日志,EMQX 会同时发布一条主题为 $SYS/brokers/<Node>/alarms/activate$SYS/brokers/<Node>/alarms/deactivate 的 MQTT 消息,用户可以通过订阅对应主题来获取告警通知。

告警通知消息的 Payload 为 JSON 格式,包含以下字段:

字段类型说明
namestring告警名称
detailsobject告警详情
messagestring人们可读的告警说明
activate_atintegerUNIX 时间戳,表示告警激活时间,单位:微秒
deactivate_atinteger / stringUNIX 时间戳,表示告警取消的时间,单位:微秒 ;该字段在激活告警中的值为 infinity
activatedboolean告警是否处于激活状态

以系统内存占用率过高告警为例,您将收到以下格式的消息:

alarms_activate_msg

告警不会重复产生,即如果 CPU 占用率过高告警已经激活,则在其激活期间,不会出现第二个 CPU 占用率过高告警。告警会在被监控项恢复正常后自动取消,也支持用户手动取消激活。

用户可以在 Dashboard 查看当前告警与历史告警,也可以通过 EMQX 提供的 HTTP API 查询和管理告警。

用户可通过配置项对告警功能进行调整以适应实际需要,EMQX 目前开放了以下配置项:

配置项类型默认值说明
sysmon.os.cpu_check_intervalduration60sCPU 占用率的检查间隔
sysmon.os.cpu_high_watermarkpercent80%CPU 占用率高水位,即 CPU 占用率达到多少时激活告警
sysmon.os.cpu_low_watermarkpercent60%CPU 占用率低水位,即 CPU 占用率降低到多少时取消告警
sysmon.os.mem_check_intervalduration60s内存占用率的检查间隔
sysmon.os.sysmem_high_watermarkpercent70%系统内存占用率高水位,即申请的总内存占比达到多少时激活告警
sysmon.os.procmem_high_watermarkpercent5%进程内存占用率高水位,即单个进程申请的内存占比达到多少时激活告警
sysmonn.vm.process_check_intervalduration30s进程数量的检查间隔
sysmon.vm.process_high_watermarkpercent80%进程占用率高水位,即创建的进程数量与最大数量限制的占比达到多少时激活告警
sysmon.vm.process_low_watermarkpercent60%进程占用率低水位,即创建的进程数量与最大数量限制的占比降低到多少时取消告警
sysmonn.vm.long_gcdisabled/durationdisabled是否启用长垃圾回收(Long GC)监控
sysmon.vm.long_scheduledisabled/durationdisabled是否启用长调度监控
sysmon.vm.large_heapdisabled/bytesizedisabled是否启用 Large Heap 监控
sysmon.vm.busy_portbooleantrue启用分布式端口过忙监控
sysmonn.top.num_itemsinteger10每个监视组的 Top K 数量
sysmon.top.sample_interlvalduration2sTop K 的检查间隔
sysmon.top.max_procsinteger1000000当 VM 中的进程数超过此值时,停止收集数据
sysmonn.top.db_hostnamestring“”PostgreSQL 数据库的主机名
sysmonn.top.db_portinteger5432PostgreSQL 数据库的端口
sysmon.top.db_usernamestring“system_monitor”PostgreSQL 数据库的用户名
sysmon.top.db_passwordstring“system_monitor_password”PostgreSQL 数据库的密码
sysmon.top.db_namestring“postgres”PostgreSQL 数据库的数据库名