You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Monit告警重定向至MQTT?现有exec实现方案过于繁琐

如何将Monit告警重定向至MQTT(替代繁琐的exec命令)

方案1:封装MQTT发布逻辑为可复用脚本

把重复的MQTT推送逻辑打包成脚本,让Monit直接调用,避免每次写冗长的mosquitto_pub命令:

  1. 创建告警脚本/usr/local/bin/monit-mqtt-alert.sh,替换成你的MQTT服务器信息:
#!/bin/bash
# MQTT服务器配置
MQTT_HOST="你的MQTT broker地址"
MQTT_USER="用户名"
MQTT_PASS="密码"
MQTT_TOPIC="monit/alerts"

# 接收Monit传入的告警内容
ALERT_CONTENT="$*"

# 推送告警到MQTT
mosquitto_pub -h "$MQTT_HOST" -u "$MQTT_USER" -P "$MQTT_PASS" -t "$MQTT_TOPIC" -m "$ALERT_CONTENT"
  1. 给脚本添加执行权限:
chmod +x /usr/local/bin/monit-mqtt-alert.sh
  1. 在Monit配置文件(如/etc/monit/monitrc或单独的配置片段)中,替换原有的exec命令为调用脚本:
alert admin@example.com with exec "/usr/local/bin/monit-mqtt-alert.sh 'Monit告警:$EVENT 服务$SERVICE'"

其中$EVENT和$SERVICE是Monit内置变量,会自动替换为实际的告警事件(如failed、recovered)和对应服务名称。

方案2:通过邮件告警中转至MQTT(适合已有邮件配置的场景)

如果你的Monit已经配置了邮件告警,可以用轻量工具(比如自己写个Python脚本监听邮件,或用现成的邮件转MQTT工具),把Monit发送的邮件内容转发到MQTT主题。这种方式无需修改Monit原有告警配置,仅在邮件接收端做转推即可。

方案对比

  • 脚本方案最直接,配置一次即可复用所有告警规则,修改MQTT参数只需更新脚本,不用逐个调整Monit服务配置。
  • 邮件中转方案适合不想改动Monit现有配置的场景,但多了一层中转环节,排查问题时需要兼顾邮件和MQTT两端。

内容的提问来源于stack exchange,提问作者weberjn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:36:29