现在 zCate 支持接收 push 消息了,我们可以用它来接收 zabbix 的告警消息。

使用 zCate 接收 zabbix 告警消息

获取 zCate 并配置 zabbix

iOS 用户可以直接在 App Store 中搜索zabbix关键字找到zCate并下载。
Android 用户可以点击这里去下载安卓版 zCate

第一次打开应用时会提示登录,填写 zabbix 的地址、用户名、密码即可,这些信息只会保存在你的手机上,不会被发送给 zCate 服务器。

获取客户端 push 工具

访问这个链接获取 zCate-Push-Tool 和其源码

  1. 下载完成后将其名称改为 zcate,并放到 zabbix 的 alertscripts 目录,赋予可执行权限 chmod +x zcate,默认的 alertscripts 目录为 /usr/lib/zabbix/alertscripts,这个目录在 zabbix-server.conf 中设置。
  2. 在这个目录中创建一个空文件命名为 null,并使用 chmod +x null 赋予可执行权限。

注册 zCate 账号获取 push token

访问 https://zcate.appgao.com,点击注册,在接下来的注册页面中填写必要的信息来完成注册。

Screenshot_1559716168.png

登录后红框里的字符串就是我们接下来需要的 token。

Screenshot_1559716439.png

在 zCate 中设置 token

在 zCate 中点击 设置 ->消息推送,将消息推送开关打开,并在下面的 token 文本框中填写刚才注册得到的 token。
退出本页时,zCate 会向 zCate 服务器注册 push,您还需要检查一下系统是否允许 zCate 发送 push。

Screenshot_1559716695.png

测试 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 的消息。若收不到消息,请检查网络,并重复进入设置页数次。

Screenshot_1559717470.png

IMG_3099.jpg

设置 zabbix 报警媒介

在 zabbix 的 管理 -> 报警媒介类型 中新增两个报警媒介,内容参考下面图片。

1.png

2.png

设置 zabbix 动作

在 zabbix 的动作中新增两个动作。

第一个用于在 zcate 中显示告警,注意发消息时选择名为 null 的告警媒介。

内容可以使用下面的格式,支持 markdown,显示效果参考本文的第一张图片中的第三张(近期告警):

标题:{HOSTNAME1}:{TRIGGER.NAME}
内容:

告警级别:{TRIGGER.SEVERITY}
故障时间:{EVENT.DATE} {EVENT.TIME}
故障时长:{EVENT.AGE}
IP 地址:   {HOST.IP}
检测项:    {TRIGGER.KEY1}
# {ITEM.LASTVALUE}

11.png

第二个用于 push 时显示,比较简洁,发消息的媒介必须选择 zcate,效果可以参考本文第一张图片中的 1、2。

22.png

设置用户

建议给 zcate 创建一个只读用户,然后在用户设置页面将刚才添加的两个告警媒介添加,如果不出现问题,到这里就可以测试 zabbix 的告警 push 了。

33.png

过滤不需要的告警显示

当你选择的用户有多个告警媒介时,你在“近期告警”中能全部看到他们,这可能不符合我们的预期,因为里面有很多重复的。

Screenshot_1559720099.png

我们这里只让他显示 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

Screenshot_1559720111.png

填写完成后,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、修改报警媒介参考下图

QQ20190610-122016@2x.png

支持

可以加入 QQ 群获取支持:zCate(496866327),zabbix(195665368)

费用

在 App Store 上架 zCate,需要每年向苹果支付开发者费用。如果您觉的 zCate 对您有用,您可以通过捐赠来与开发者一同承担费用。

WechatIMG54.jpg