大家都知道,zabbix自訂key的功能十分方便,監控任意值都是特別的方便,安裝好了之後,如果你需要監控mysql,用預設的模板是無法工作的,因為沒有key的存在,所以要自己寫一個指令碼去實現key。當然也可以用https://www.zabbix.com/wiki/howto/monitor/db/mysql/extensive_mysql_monitoring_including_replication這裡的php指令碼,如果想監控主從同步狀態,原理相同,此處不寫了。
指令碼可以用任意語言寫,但是在linux下,還是shell最方便,用php,需要安裝php環境,用python,需要安裝python-MySQL庫,用perl也是如此,所以選擇了bash。bash指令碼提供了使用者名稱密碼主機在web介面配置的功能,這裡不寫了,有問題的可以留言。
指令碼位置zabbix-agent,指令碼,設定檔ok後重啟服務,web上面添加對應主機mysql模板內建)
shell#cat /etc/zabbix/scripts/monitor_mysql#!/bin/bash#author:itnihao#mail:itnihao@qq.com#date 2013-12-18#version v1.0#function:use zabbix monitor mysql statusmysql=$(which mysql)#注意,如果你的mysql是非標準安裝,請寫mysql的絕對路徑#mysql=/usr/bin/mysqlvar=$1MYSQL_USER=$2MYSQL_PASSWORD=$3MYSQL_Host=$4[ "${MYSQL_USER}" = '' ] && MYSQL_USER=zabbix[ "${MYSQL_PASSWORD}" = '' ] && MYSQL_PASSWORD=zabbix[ "${MYSQL_Host}" = '' ] && MYSQL_Host=localhost[ "${var}" = '' ] && echo ""||${mysql} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -h${MYSQL_Host} -e 'show status'|grep -v Variable_name|grep "\b${var}\b"|awk '{print $2}'
shell#egrep -v "(^#|^$)" /etc/zabbix/zabbix_agentd.conf#Server=這個參數,這裡不詳細的寫了,主要改以下的參數Include=/etc/zabbix/zabbix_agentd.conf.d/ #設定檔路徑UnsafeUserParameters=1 #允許特殊字元
shell#cat /etc/zabbix/zabbix_agentd.conf.d/mysql_status.confUserParameter=mysql.status[*],/etc/zabbix/scripts/monitor_mysql $1UserParameter=mysql.ping,/usr/bin/mysqladmin -uzabbix -pzabbix ping|grep alive|wc -lUserParameter=mysql.version,mysql -V | cut -f6 -d" " | sed 's/,//'
上面步驟好了之後用zabbix_get測試
shell#zabbix_get -s 127.0.0.1 -k mysql.status[Uptime]
有資料即成功建立了可用key
本文出自 “itnihao的營運技術部落格” 部落格,請務必保留此出處http://itnihao.blog.51cto.com/1741976/1341643