Zabbix 企业微信机器人告警配置

环境信息

  • 系统:Ubuntu
  • Zabbix 版本:Zabbix Server
  • 告警方式:企业微信机器人 webhook + shell 脚本告警
  • 脚本存放目录:/usr/lib/zabbix/alertscripts

⚠️重要提示:root 用户执行脚本正常,不代表 zabbix 进程可以正常调用,需要注意权限、systemd 沙箱、配置重启问题;媒介类型页面的【测试】按钮报错,不代表真实告警不可用,以实际触发器事件推送结果为准

一、获取企业微信机器人 Webhook 地址

  1. 企业微信群聊 → 群设置 → 添加机器人
  2. 创建自定义机器人,复制 webhook 地址
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxx

保存该地址,后续配置需要使用。

二、编写企业微信告警 shell 脚本

  1. 进入 alertscripts 目录
cd /usr/lib/zabbix/alertscripts
  1. 创建脚本 wecom.sh
sudo vim wecom.sh

脚本参考内容:

#!/bin/bash
# Zabbix 企业微信机器人告警脚本
WEBHOOK_URL="$1"
SUBJECT="$2"
MESSAGE="$3"

curl -s -X POST "$WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d "{
  \"msgtype\": \"text\",
  \"text\": {
      \"content\":\"${SUBJECT}\n${MESSAGE}\"
  }
}"
  1. 设置脚本权限与属主
# 修复Windows粘贴脚本带来CRLF换行问题(如从windows复制脚本到服务器必执行)
sudo sed -i 's/\r$//' /usr/lib/zabbix/alertscripts/wecom.sh

# 设置执行权限
sudo chmod 755 /usr/lib/zabbix/alertscripts/wecom.sh
# 修改属主为zabbix,zabbix进程需要读取执行脚本
sudo chown zabbix:zabbix /usr/lib/zabbix/alertscripts/wecom.sh
  1. 本地验证脚本是否可用(root 执行)

替换为你自己的 webhook 密钥

/usr/lib/zabbix/alertscripts/wecom.sh "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx" "测试标题" "测试告警内容"

成功返回:{"errcode":0,"errmsg":"ok"},代表脚本本身逻辑没问题。

三、确认 Zabbix 服务端脚本路径配置

  1. 查看 zabbix_server 配置
grep AlertScriptsPath /etc/zabbix/zabbix_server.conf

确保配置项:

AlertScriptsPath=/usr/lib/zabbix/alertscripts

如果修改了此配置,必须重启 zabbix-server 服务,配置不会热生效

sudo systemctl restart zabbix-server
  1. systemd 沙箱问题(Ubuntu 常见坑)部分 Ubuntu 系统 zabbix-server 受 systemd 沙箱隔离,root 可运行脚本,zabbix 进程调用报错 exit code6。
sudo systemctl edit zabbix-server

写入:

[Service]
PrivateTmp=no
ProtectSystem=no
ProtectHome=no

重载并重启服务

sudo systemctl daemon-reload
sudo systemctl restart zabbix-server

四、Zabbix Web 端配置【报警媒介类型】

路径:管理 → 报警媒介类型 → 创建媒介类型

  1. 名称:企业微信告警模板脚本
  2. 类型:脚本
  3. ⚠️脚本名称:只填写脚本文件名,不要填写完整路径
wecom.sh

❌错误示例:/usr/lib/zabbix/alertscripts/wecom.sh,会出现路径拼接重复,文件找不到。

  1. 脚本参数(依次添加 3 条参数)
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
  1. 勾选【已启用】,点击更新保存。

注意:页面的【测试】按钮经常出现Process exited with code:6报错,该测试功能存在缺陷,不作为最终判断依据,以实际触发器事件推送为准

五、给用户绑定告警媒介

路径:用户 → 用户 → Admin(或告警接收用户) → 报警媒介 → 添加

  1. 类型:选择【企业微信告警模板脚本】
  2. 收件人:粘贴完整企业微信机器人 webhook 地址
  3. 启用时间:1-24(全天告警)
  4. 告警级别:勾选全部需要接收的级别(至少勾选Not classified未分类
  5. 勾选【已启用】,保存。

权限校验:该用户必须拥有告警主机所在主机组的读权限,否则动作不会触发。

六、配置动作(触发告警推送)

路径:配置 → 动作 → 创建动作

动作标签页

  • 名称:企业微信告警动作
  • 事件源:触发器
  • 条件:默认不填,匹配全部触发器事件(也可按需增加过滤条件)

操作标签页(故障发生)

  1. 新操作:点击添加
  • 操作类型:发送通知
  • 发送到用户:选择接收告警用户(Admin)
  • 仅使用:选择【企业微信告警模板脚本】
  • 消息主题(示例)
【Zabbix告警】🔴故障发生:{TRIGGER.NAME}
  • 消息内容(示例)
==========故障通知==========
告警主机:{HOST.NAME}
主机IP:{HOST.IP}
触发器名称:{TRIGGER.NAME}
告警级别:{TRIGGER.SEVERITY}
当前值:{TRIGGER.VALUE}
发生时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
===========================

恢复操作标签页(故障恢复通知)

  1. 勾选【恢复操作】
  • 操作类型:发送通知
  • 发送到用户:Admin
  • 仅使用:企业微信告警模板脚本
  • 消息主题
【Zabbix告警】✅故障恢复:{TRIGGER.NAME}
  • 消息内容
==========恢复通知==========
告警主机:{HOST.NAME}
主机IP:{HOST.IP}
触发器名称:{TRIGGER.NAME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
故障持续时长:{EVENT.DURATION}
事件ID:{EVENT.ID}
===========================

保存动作配置。

七、验证告警效果

  1. 制造触发器故障,产生事件(监测 → 事件页面可以看到事件记录)
  2. 等待 10‑30 秒,Zabbix 动作异步执行,查看企业微信群机器人消息
  3. 故障恢复,验证恢复通知是否正常推送。

排错关键点:

  1. 监测 – 事件页面没有事件:触发器表达式不满足条件,和告警脚本无关。
  2. 有事件但是收不到消息:检查用户权限、动作条件、zabbix-server 是否重启、脚本权限属主。
  3. root 执行脚本 ok,zabbix 调用异常:重点排查 systemd 沙箱、脚本属主权限。

常见问题汇总

报错现象原因解决方案
No such file or directory媒介类型填写完整脚本绝对路径,路径重复拼接脚本名称只填文件名wecom.sh
Process exited with code:6脚本权限、systemd 沙箱、换行符 CRLF修复脚本换行、设置 zabbix 属主、关闭 systemd 沙箱、重启 zabbix-server
root 执行脚本 ok,zabbix 不推送AlertScriptsPath 修改未重启服务 /zabbix 无脚本执行权限修改配置后必须重启 zabbix-server,脚本 chown zabbix:zabbix
产生事件但是没有调用脚本用户没有主机组读权限 / 动作条件过滤事件给用户分配主机组读权限,检查动作过滤条件

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇