前言

从Zabbix 3.0开始就已经有很多小伙伴开始使用微信公众号或者企业微信配置Zabbix告警,当然这里还可以使用阿里钉钉,Mattermost等各种第三方集成方案。传统的邮件告警有效但笨重,短信告警及时但成本高,现在手机越来越强大,互联网套餐资费逐步降低,普通人使用手机的频率已经超过了PC端,而且移动办公也已经慢慢融入我们的生活。这里简单记录基于新版Zabbix 4.0 LTS配置企业微信告警配置步骤,希望对大家有帮助。

用企业微信配置Zabbix告警

更新历史

2018年10月17日 - 初稿

阅读原文 - https://wsgzao.github.io/post/zabbix-alert-wechat/

扩展阅读

zabbix Alert WeChat zabbix 微信告警 - https://github.com/X-Mars/Zabbix-Alert-WeChat


Zabbix简介

大家对Zabbix应该已经很熟悉了,不用你多介绍了吧

Zabbix 是由 Alexei Vladishev 创建,目前由 Zabbix SIA 在持续开发和支持。

Zabbix 是一个企业级的分布式开源监控方案。

Zabbix 是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix 提供了出色的报告和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想方案。

Zabbix 支持主动轮询和被动捕获。Zabbix 所有的报告、统计信息和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面可以确保您从任何方面评估您的网络状态和服务器的健康性。适当的配置后,Zabbix 可以在 IT 基础架构监控方面扮演重要的角色。对于只有少量服务器的小型组织和拥有大量服务器的大型公司也同样如此。

Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证第 2 版编写和发行的。这意味着它的源代码都是免费发行的,可供公众任意使用。

世界各地许多不同规模的组织将 Zabbix 作为主要的监控平台。

Zabbix Documentation 3.4 中文版

Zabbix Documentation 4.0 英文版

Zabbix安装

Zabbix 使用指北

微信告警配置

企业微信注册网址(如果有直接登陆即可)
https://work.weixin.qq.com

在企业微信中需要获取知道的信息

  1. CorpID(获取方法:企业微信中我的企业 -> 企业信息)
  2. User(获取方法:企业微信中通信录点击要接收消息者的名字)
  3. Partyid(获取方法:企业微信中通信录左侧部门的选择按钮显示部门ID)[群发时需要]
  4. Agentid(获取方法:在企业微信中企业用用中创建自建应用中,所以微信监控需要在微信企业中自建一个应用)
  5. Secret(获取方法:同 Agentid)




配置 Zabbix 发送微信消息的脚本并测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 修改 zabbix-server 配置文件,查看 zabbix 默认脚本路径配置是否打开
egrep -v '^$|^#' /etc/zabbix/zabbix_server.conf

AlertScriptsPath=/usr/lib/zabbix/alertscripts

# 安装必要的软件包
yum install -y epel-release
yum install -y gcc telnet wget git vim python python-pip
# update pip
pip install --upgrade pip
# install requests
pip install requests
pip install --upgrade requests

# 上传脚本至 server 配置文件中 AlertScriptsPath 所对应的路径下:
cd /usr/lib/zabbix/alertscripts/
git clone https://github.com/X-Mars/Zabbix-Alert-WeChat.git
cp Zabbix-Alert-WeChat/wechat.py .
chown zabbix:zabbix wechat.py config.json
chmod +x wechat.py

# 上传好该脚本后对脚本进行测试
python wechat.py wangao test helloworld
{u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'}

# 企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送
python wechat.py wangao1 test wangao
{u'invaliduser': u'wangao1', u'errcode': 0, u'errmsg': u'ok'}

# 参数说明,这里使用企业号中的部门ID作群发使用
Corpid = "xxx" # CorpID是企业号的标识
Secret = "xxx" # Secret是管理组凭证密钥
Agentid = "1000002" # 应用ID
Partyid = "2" # 部门ID

# 查看企业微信测试告警通知

Zabbix界面配置

Zabbix 4.0和老版本在界面显示上有略微差异

1.创建告警媒介

Administration - Media types - Create media type

Name: wechat
Type: Script
Script name: wechat.py
Script parameters:

  • {ALERT.SENDTO}
  • {ALERT.SUBJECT}
  • {ALERT.MESSAGE}

2.创建wechat专用账户

Administration - Users - Create user

Alias: wechat
Groups: Zabbix administrators # 根据需求定义

3.为专用账户添加Media

Users - Media - Add

Type: wechat
Send to: 2 # 因为我配置的是群发所以按照部门ID填写区分不同项目监控,也可以按照用户名独立发送

4.设置告警动作

Configuration - Actions - Create actions

创建动作

[Action]
Name: wechat
Conditions: # 根据需求定义
A Trigger severity is greater than or equals Not classified

事件触发时的通知操作

[Operations]
Default operation step duration: 1m

Default subject:
Problem: {EVENT.NAME}

Default message:
Time: {EVENT.DATE} {EVENT.TIME}
Host: {HOST.NAME}
Level: {TRIGGER.SEVERITY}
ItemValue: {ITEM.VALUE}

Operations:
Send to Uers: wechat
Send only to: wechat
Conditions: Event acknowledged equals Not Ack

事件恢复时的通知操作

[Recovery operations]
Default subject:
Resolved: {EVENT.NAME}

Default message:
Time: {EVENT.DATE} {EVENT.TIME}
Host: {HOST.NAME}
Level: {TRIGGER.SEVERITY}
ItemValue: {ITEM.VALUE}

Operations:
Send to Uers: wechat
Send only to: wechat

更多有关Zabbix Supported macros的定义请参考官方解释

Zabbix Supported macros

常见问题

A. 测试不能通过,返回 errcode!

  1. 检查 / etc/weixincfg.json 文件里的 corpid,secert,agentid 配置是否正确
  2. 检查接受者企业账号是否正确
  3. 检查接受着是否在这个应用的通讯录里

B. Zabbix 不能收到告警消息

  1. 检查发送程序有无可执行权限
  2. 检查发送程序是否在 zabbix server 的 AlertScriptsPath 目录下
  3. 检查是否关联到用户
  4. 检查是否掉用了发送动作

C. 发送限制

  1. 发送频率基本可以满足需求, 没有别的限制。
  2. 每日发送次数有一定限制,具体与企业号关注人数有关,详情查看企业号开发文档
文章目录
  1. 1. 前言
  2. 2. 更新历史
  3. 3. Zabbix简介
  4. 4. Zabbix安装
  5. 5. 微信告警配置
  6. 6. 配置 Zabbix 发送微信消息的脚本并测试
  7. 7. Zabbix界面配置
  8. 8. 常见问题