因为业务中使用了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挂起的时候就可以正常收到邮件钉钉等通知了

欢迎留言