现在 zCate 支持接收 push 消息了,我们可以用它来接收 zabbix 的告警消息。
获取 zCate 并配置 zabbix
iOS 用户可以直接在 App Store 中搜索zabbix
关键字找到zCate
并下载。
Android 用户可以点击这里去下载安卓版 zCate。
第一次打开应用时会提示登录,填写 zabbix 的地址、用户名、密码即可,这些信息只会保存在你的手机上,不会被发送给 zCate 服务器。
获取客户端 push 工具
访问这个链接获取 zCate-Push-Tool 和其源码。
- 下载完成后将其名称改为
zcate
,并放到 zabbix 的alertscripts
目录,赋予可执行权限chmod +x zcate
,默认的 alertscripts 目录为/usr/lib/zabbix/alertscripts
,这个目录在 zabbix-server.conf 中设置。 - 在这个目录中创建一个空文件命名为
null
,并使用chmod +x null
赋予可执行权限。
注册 zCate 账号获取 push token
访问 https://zcate.appgao.com,点击注册
,在接下来的注册页面中填写必要的信息来完成注册。
登录后红框里的字符串就是我们接下来需要的 token。
在 zCate 中设置 token
在 zCate 中点击 设置
->消息推送
,将消息推送开关打开,并在下面的 token 文本框中填写刚才注册得到的 token。
退出本页时,zCate 会向 zCate 服务器注册 push,您还需要检查一下系统是否允许 zCate 发送 push。
测试 push
回到 /usr/lib/zabbix/alertscripts
目录,执行指令./zcate --help
,会显示 zcate 的使用方法。
Usage of ./zcate:
-badge int
Message notification badge (default 1)
-body string
Message body (require)
-platform string
iOS or Android (require)
-subtitle string
Message subtitle
-title string
Message title
-token string
Your token (require)
执行下面指令来测试 push,iOS 客户端需退出 zCate 才能看到效果。
注意:-platform 一定要选择正确,当客户端包含 iOS 和 Android 的时候才填写 all,否则填写 iOS 或 Android。
./zcate -badge 10 -body "message body" -platform all -subtitle "subtitle" -title "title" -token 530f269d03cd478c97ce
若无意外,您的客户端会收到标题为 title
,副标题为 subtitle
,内容为 message body
,角标(仅 iOS)为 10
的消息。若收不到消息,请检查网络,并重复进入设置页数次。
设置 zabbix 报警媒介
在 zabbix 的 管理 -> 报警媒介类型 中新增两个报警媒介,内容参考下面图片。
设置 zabbix 动作
在 zabbix 的动作中新增两个动作。
第一个用于在 zcate 中显示告警,注意发消息时选择名为 null
的告警媒介。
内容可以使用下面的格式,支持 markdown,显示效果参考本文的第一张图片中的第三张(近期告警):
标题:{HOSTNAME1}:{TRIGGER.NAME}
内容:
告警级别:{TRIGGER.SEVERITY}
故障时间:{EVENT.DATE} {EVENT.TIME}
故障时长:{EVENT.AGE}
IP 地址: {HOST.IP}
检测项: {TRIGGER.KEY1}
# {ITEM.LASTVALUE}
第二个用于 push 时显示,比较简洁,发消息的媒介必须选择 zcate
,效果可以参考本文第一张图片中的 1、2。
设置用户
建议给 zcate 创建一个只读用户,然后在用户设置页面将刚才添加的两个告警媒介添加,如果不出现问题,到这里就可以测试 zabbix 的告警 push 了。
过滤不需要的告警显示
当你选择的用户有多个告警媒介时,你在“近期告警”中能全部看到他们,这可能不符合我们的预期,因为里面有很多重复的。
我们这里只让他显示 null
产生的告警,我们需要先获取动作 null 的 action ID。
在zabbix 中编辑这个动作,我们可以在 url 中获取 action ID。
http://zbx.qiansw.com/actionconf.php?form=update&actionid=12
现在我们知道他的 action ID 是 12
,我们只需要在 zcate 设置 -> 内容显示设置 中填写 12
即可,如果需要显示多个 id,可以直接填写使用半角逗号分隔的多个数字 id,如 12,13
。
填写完成后,zcate 在近期告警页面就只会显示我们指定的动作产生的告警了,参考本文第一张图片中的第三张。
错误排查
如果碰到问题,可以在 zcate 的设置 -> 关于页面查看到联系方式。
进阶·推送消息时 app 角标显示问题数量
这一步不做也不会影响消息的接收。
默认情况下,app 收到消息时角标会设置为 1,使用下面方法,可以在收到消息时将角标设置为当前的问题数量,参考下面图片,zcate 的角标是 10,表示当前有 10 个问题。
1、下载这个工具:internelp/get-zabbix-problems,放到 /usr/lib/zabbix/alertscripts
目录。
2、新增一个脚本 /usr/lib/zabbix/alertscripts/zcate.sh
:
#!/bin/bash
/usr/lib/zabbix/alertscripts/zcate -token="$1" -title="$2" -body="$3" -platform=ios -badge=`/usr/lib/zabbix/alertscripts/get-zabbix-problem
s`
3、确保 /usr/lib/zabbix/alertscripts
目录中有下列文件:
[root@zabbix01 alertscripts]# ll
total 20552
-rwxr-xr-x 1 root root 12 May 7 17:35 null
-rwxr-xr-x 1 root root 7252355 Jun 10 11:25 get-zabbix-problems
-rwxr-xr-x 1 root root 7149525 May 7 11:18 zcate
-rwxr-xr-x 1 root root 154 Jun 10 12:14 zcate.sh
4、修改报警媒介参考下图
支持
可以加入 QQ 群获取支持:zCate(496866327),zabbix(195665368)
费用
在 App Store 上架 zCate,需要每年向苹果支付开发者费用。如果您觉的 zCate 对您有用,您可以通过捐赠来与开发者一同承担费用。
文章不错非常喜欢