Netdata + pushplus:服务器健康告警推到微信
效果:Netdata health 告警触发后,通过自定义通知脚本或 Webhook 调 pushplus。
前置条件
- 一个 pushplus token(官网扫码获取)
- 能改 Netdata 通知配置的权限(主机 agent 或 Netdata Cloud)
配置步骤
方式一:agent 自定义通知(推荐,动态正文)
编辑 health_alarm_notify.conf(常见路径 /etc/netdata/health_alarm_notify.conf),打开自定义发送并写 custom_sender:
SEND_CUSTOM="YES"
DEFAULT_RECIPIENT_CUSTOM="pushplus"
custom_sender() {
curl -s -X POST "https://www.pushplus.plus/send" \
-H "Content-Type: application/json" \
-d "{\"token\":\"${PUSHPLUS_TOKEN}\",\"title\":\"Netdata ${status}: ${name}\",\"content\":\"host=${host}\\n${info}\",\"template\":\"markdown\"}"
}
把 PUSHPLUS_TOKEN 写进该文件旁的环境或 netdata.conf 可引用的安全位置,不要提交到公开仓库。改完重启 netdata 服务。
可用变量以你安装的 Netdata 版本文档为准,常见有 ${name} ${status} ${host} ${info}。
方式二:只能填 Webhook URL
Netdata Cloud 或较新 UI 的通知渠道若只能填一个 URL,用固定文案:
https://www.pushplus.plus/send?token=你的token&title=Netdata告警&content=请打开Netdata查看图表
对方 POST 的告警 JSON 不会自动映射为正文。
验证
curl -X POST "https://www.pushplus.plus/send" \
-H "Content-Type: application/json" \
-d '{"token":"你的token","title":"Netdata 配置测试","content":"token 可用","template":"markdown"}'
再在 Netdata 里对某条 health 点 Test,或临时把阈值调低触发一次。
常见问题
脚本执行了但没消息? 用 netdata 用户在机器上跑一遍上面的 curl;确认出网和当天额度。见 收不到消息。
告警风暴? 在 health 配置里加大 delay / 调高阈值,并关掉噪音图表。