python 版使用不方便,请使用最新的 golang 版监控
https://www.aityp.com/zabbix%e7%9b%91%e6%8e%a7otter-%e8%87%aa%e5%8a%a8%e5%8f%91%e7%8e%b0/
因为业务中使用了 otter 做数据库同步,但是 otter 会因为一些异常导致同步挂起,所以就写了一个简单的脚本来监控 otter 异常挂起,通过 zabbix 来实现报警推送的功能。
zabbix_agentd.conf 中加入以下配置
UserParameter=otter.status[*],/usr/local/zabbix/scripts/otter-status.py $1
需要安装 pika 模块
pip install pika
otter-status.py 脚本内容
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
import sys
from kazoo.client import KazooClient
def get_status(id):
zk = KazooClient(hosts='你的 zk 地址:2181', read_only=True)
zk.start()
data = zk.get("/otter/channel/%s" % id)
print(data[0].decode('utf-8').strip('"'))
zk.stop()
if __name__ == '__main__':
id = sys.argv[1]
get_status(id)
配置之后记得重启 zabbix-agentd
在 zabbix 上面添加监控项
注意图中 40 代表你要监控的 channel 项的 id
添加触发器
后面 Otter 挂起的时候就可以正常收到邮件钉钉等通知了