Zabbix使用hanotify接口监控HA状态,及从浮动地址监控双机进程

公司使用的高可用软件中有一种是Skybility HA,其实HA软件本身非常稳定,实没有监控的必要,否则也不能叫HA了,但既然领导有需要,工作还是要做的。

我查阅了相关文档,发现Skybility HA本身带有用户接口:Skybility HA Service为了更好的方便用户监控,提供了用户报警的接口,您可以通过编辑/opt/ha/bin/hanotify来实现在发生故障时的报警机制。简单的报警方法是通过给root发送mail,如下所示:

#!/bin/sh
mail_user()
{
user=$1
msg=$2
mail $1<<-EOF
HAEmerg Event Occur
$msg
EOF
}
logmsg="$1"
#if you wanna use mail to notify user when emerg event occurs, uncomment this
mail_user root $logmsg
#if you wanna use other way to notify, add your code here

也可通过zabbix_sender协议发送给zabbix server:

#!/bin/sh -u
mail_user()
{
        user=$1
        msg=$2
        mail $1<<-EOF
        HA Emerg Event Occur
        $msg
        EOF
}

logmsg="$1"
/usr/sbin/zabbix-sender -z 192.168.128.181 -s 192.168.136.148 -k ha.notify -o "$1"

zabbix web端的配置如下:

监控项键值类型
hacenter进程监控 proc.num[hacenter,root] Zabbix 客户端
hacomm进程监控 proc.num[hacomm,root] Zabbix 客户端
halockd进程监控 proc.num[halockd,root] Zabbix 客户端
Skybility HA告警 ha.notify Zabbix 采集器

对应的触发器如下:

hacenter进程异常 {Skybility HA Notify User-Interface:proc.num[hacenter,root].last()}=0
hacomm进程异常 {Skybility HA Notify User-Interface:proc.num[hacomm,root].last()}=0
halockd进程异常 {Skybility HA Notify User-Interface:proc.num[halockd,root].last()}=0
双机状态异常 {Skybility HA Notify User-Interface:ha.notify.nodata(300)}=0

另外可通过HA浮动地址,监控服务提供情况,使用浮动地址新建主机,加一个监控项 proc.num[zxmsc,root]。