最近新部署zabbix监控,发现有很多DB服务器都是mysql多实例的状态,mpm默认的mysql监控无法有效的监控mysql的运行状态和复制关系,故针对双实例的mysql制作的手工的zabbix脚本监控如下
首先新建新的zabbix的mysql多实例监控模板,操作如下
名称 为模板信息名称
类型 因为使用的脚本出发所以修改成zabbix捉捕器
键值 脚本返回的信息,可以为数值,也可以是字元,这里定义为字元
数据类型 字元
同时也可以设置主动捕捉,如下:监控多实例端口状态
名称 为模板信息名称
类型 因为是master去触发,所以设置成断点代理程式(主动式)
键值 脚本返回的信息
数据类型 数字的
之后去针对相应的模板设置报警信息即 触发器
根据脚本中获得以及master主动触发获得的状态值定义触发器,根据取值的不同变更状态,如上图,slave状态分为
0 正常
null slave复制停止
>1000 复制延迟,显示延迟时间
端口状态 0为异常报警 up为正常。
脚本内容如下
################################### 3359 ##################################
### SLAVE STATUS ###
status59=`mysql -uzabbix -pzabbix --sock '路径' -e "show slave status \G" | grep Behind | awk -F ':' '{print $2}'`
if [ ${status59} = 0 ]
then
zabbix_sender --zabbix-server zabbix-master-ip --port 10051 --host hostname --key MySQL.3359slave-check --value '0'
else
if [ ${status59} = null ]
then
zabbix_sender --zabbix-server zabbix-master-ip --port 10051 --host hostname --key MySQL.3359slave-check --value '99999999'
else
zabbix_sender --zabbix-server zabbix-master-ip --port 10051 --host hostname --key MySQL.3359slave-check --value "$status59"
fi
fi
################################### 3360 ##################################
### SLAVE STATUS ###
status60=`mysql -uzabbix -pzabbix --sock '路径' -e "show slave status \G" | grep Behind | awk -F ':' '{print $2}'`
if [ ${status60} = 0 ]
then
zabbix_sender --zabbix-server zabbix-master-ip --port 10051 --host hostname --key MySQL.3360slave-check --value '0'
else
if [ ${status60} = null ]
then
zabbix_sender --zabbix-server zabbix-master-ip --port 10051 --host hostname --key MySQL.3360slave-check --value '99999999'
else
zabbix_sender --zabbix-server zabbix-master-ip --port 10051 --host hostname --key MySQL.3360slave-check --value "$status60"
fi
fi
也可以监控mariadb的多源复制状态,在脚本内容中先指定set @@default_master_connection='name';之后获得单个slave的状态信息,同mysql。