首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MQTT监控告警系统--钉钉/微信消息推送

MQTT监控告警系统--钉钉/微信消息推送

作者头像
科控物联
发布2026-03-19 13:43:55
发布2026-03-19 13:43:55
1260
举报

EMQX监控告警系统说明--钉钉消息推送

概述

MQTT监控告警系统是一款用于监控EMQX MQTT Broker中特定客户端连接状态的自动化监控工具。该系统能够实时监测客户端连接状态,在客户端断开连接时发送告警通知,并在连接恢复时发送恢复通知。系统还提供每日运行状态报告和全面的运维管理功能。

核心功能

1. 实时客户端监控

  • 监控指定的MQTT客户端连接状态
  • 支持多个客户端同时监控
  • 每60秒检查一次客户端连接状态

2. 渐进式告警机制

  • 采用渐进式告警时间策略:(1,2,5,10,20,30,60,120,150,180,240,300)分钟
  • 在客户端断开连接后,按设定时间间隔发送告警通知
  • 避免过度告警,确保关键问题得到关注

3. 智能告警通知

  • 结构化告警消息格式,包含发送时间、消息类型、持续时间等关键信息
  • 双向状态通知:异常发生时报警,连接恢复时也发送通知
  • 防止重复告警和重复停止通知

4. 每日运行状态报告

  • 每天18:30自动发送系统运行状态摘要
  • 包含服务运行时长、客户端状态、今日告警次数等信息
  • 提供系统健康状况概览

5. 服务生命周期管理

  • 服务启动时发送启动通知,包含当前监控客户端状态
  • 服务停止时发送停止通知,包含运行时长信息
  • 支持优雅关闭和状态清理

消息格式

1. 客户端断开告警

代码语言:javascript
复制
🚨 MQTT客户端连接告警
─────────────────
发送时间: 2026-01-27 15:30:49
消息类型: 客户端断线告警
客户端ID: edge:二水厂
断线时长: 5分钟
断线开始时间: 2026-01-27 15:25:49
处理建议: 请及时检查网络连接及设备状态
【科控物联】

2. 客户端连接恢复

代码语言:javascript
复制
✅ MQTT客户端连接恢复
─────────────────
发送时间: 2026-01-27 16:00:15
消息类型: 客户端连接恢复
客户端ID: edge:二水厂
断线时长: 30分钟
当前状态: 已恢复正常
【科控物联】

3. 服务启动通知

代码语言:javascript
复制
🎉 MQTT监控服务启动通知
─────────────────
发送时间: 2026-01-27 17:06:14
消息类型: 服务启动通知
服务状态: 正常运行
当前版本: v2.4.28
监控客户端状态:
• edge:加压站: ✅ 在线
• edge:二水厂: ❌ 离线
【科控物联】

4. 服务停止通知

代码语言:javascript
复制
🛑 MQTT监控服务停止通知
─────────────────
发送时间: 2026-01-27 15:40:30
消息类型: 服务停止通知
服务状态: 已正常停止
运行时长: 2小时15分钟
【科控物联】

5. 每日运行状态报告

代码语言:javascript
复制
📊 MQTT客户端每日运行状态报告
─────────────────
报告时间: 2026-01-27 18:30:55
消息类型: 每日运行状态
服务运行时长: 237天9小时3分钟
监控运行时长: 4分钟
今日告警次数: 25
当前客户端状态:
✅ edge:加压站: 在线
❌ edge:二水厂: 离线

【科控物联】

6. 服务异常告警

代码语言:javascript
复制
❌ MQTT服务异常告警
─────────────────
发送时间: 2026-01-27 14:22:10
消息类型: 服务异常告警
服务状态: MQTT服务不可用
处理建议: 请立即检查MQTT服务状态
严重程度: 高
【科控物联】

部署与管理

系统服务部署(推荐)

将脚本部署为系统服务,可以实现开机自启和自动重启功能。

1. 准备工作

dingding.sh 脚本复制到系统目录:

代码语言:javascript
复制
cp dingding.sh /opt/mqtt_monitor/
chmod +x /opt/mqtt_monitor/dingding.sh
2. 创建服务文件

创建 systemd 服务文件:

代码语言:javascript
复制
cat > /etc/systemd/system/mqtt-monitor.service << 'EOF'
[Unit]
Description=MQTT Client Monitor Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/mqtt_monitor
ExecStart=/opt/mqtt_monitor/dingding.sh
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target
EOF
3. 启动服务
代码语言:javascript
复制
# 重新加载系统服务
sudo systemctl daemon-reload

# 启动服务
sudo systemctl start mqtt-monitor

# 设置开机自启
sudo systemctl enable mqtt-monitor

# 查看服务状态
sudo systemctl status mqtt-monitor

管理服务的常用命令

代码语言:javascript
复制
# 查看服务状态
sudo systemctl status mqtt-monitor

# 查看实时日志
sudo journalctl -u mqtt-monitor -f

# 停止服务
sudo systemctl stop mqtt-monitor

# 重启服务
sudo systemctl restart mqtt-monitor

# 查看监控日志文件
tail -f /var/log/mqtt_monitor.log

# 查看状态文件
ls -la /var/lib/mqtt_monitor/

配置说明

监控配置

  • 监控客户端edge:加压站edge:二水厂
  • 检查间隔:每60秒检查一次客户端连接状态
  • 告警时间表:(1,2,5,10,20,30,60,120,150,180,240,300)分钟
  • 钉钉Webhook:已配置自动发送告警消息

文件配置

  • 日志文件/var/log/mqtt_monitor.log
  • 状态目录/var/lib/mqtt_monitor
  • PID文件/var/run/mqtt_monitor.pid

优势与价值

  1. 及时的问题发现:1分钟内即可发现连接问题,相比传统方案大幅缩短发现问题的时间
  2. 清晰的告警信息:优化后的消息格式更专业、信息更完整,包含时间戳和品牌标识
  3. 合理的告警频率:渐进式时间间隔策略在保证及时提醒的同时避免过度打扰
  4. 完善的运维支持:包含服务启动、停止、异常等多种场景的告警通知
  5. 双向状态通知:不仅在连接断开时告警,也在连接恢复时通知,形成完整的状态闭环
  6. 全面的启动概览:服务启动时提供当前所有监控客户端的实时状态,便于运维人员快速了解系统现状
  7. 定期运行报告:每天18:30自动发送系统运行状态报告,包含服务运行时长、客户端状态等关键指标
  8. 防重复告警机制:避免脚本重启后可能产生的重复告警问题,提升告警准确性
  9. 防重复停止通知:确保服务停止时只发送一次停止通知,保证通知的唯一性
  10. 断线时间追踪:在断线告警中添加断线开始时间戳,便于精确定位问题发生时间

技术细节

脚本信息

  • 脚本名称:MQTT客户端监控服务
  • 当前版本:v2.4.28
  • 更新日期:2026-01-27

更新说明

  • 修复check_client_status函数中的变量覆盖问题
  • 优化JSON解析方式,提升API响应兼容性
  • 新增1分钟告警阈值,采用渐进式告警时间策略
  • 结构化钉钉消息格式,实现双向状态通知机制
  • 优化客户端状态显示,使用emoji图标直观表示在线/离线状态
  • 新增每日运行状态报告功能,每天18:30自动发送摘要
  • 防止重复告警和重复停止通知,提升通知准确性
  • 在断线告警中添加断线开始时间戳,便于故障追踪
  • 提供系统服务部署指南,便于运维管理
  • 优化更新说明,浓缩近期功能变更描述
  • 修复每日运行报告消息前缀问题,确保📊图标也被识别为有效标识符
  • 将每日运行报告发送时间从18:00调整为18:30

系统要求

  • Linux操作系统
  • Bash shell
  • curl命令行工具
  • EMQX MQTT Broker v5.x
  • 钉钉机器人Webhook

注意事项

  1. 系统会自动检测是否已有实例运行,避免重复启动
  2. 所有日志会记录到 /var/log/mqtt_monitor.log 文件中
  3. 状态文件保存在 /var/lib/mqtt_monitor 目录下
  4. 如需修改监控的客户端ID,可在脚本中调整 CLIENT_IDS 数组
  5. 服务支持优雅关闭,确保资源正确释放
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科控物联 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • EMQX监控告警系统说明--钉钉消息推送
  • 概述
    • 核心功能
      • 1. 实时客户端监控
      • 2. 渐进式告警机制
      • 3. 智能告警通知
      • 4. 每日运行状态报告
      • 5. 服务生命周期管理
    • 消息格式
      • 1. 客户端断开告警
      • 2. 客户端连接恢复
      • 3. 服务启动通知
      • 4. 服务停止通知
      • 5. 每日运行状态报告
      • 6. 服务异常告警
    • 部署与管理
      • 系统服务部署(推荐)
      • 管理服务的常用命令
    • 配置说明
      • 监控配置
      • 文件配置
    • 优势与价值
    • 技术细节
      • 脚本信息
      • 更新说明
      • 系统要求
    • 注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档