监控mysql存活
1.配置agent自定义参数
vi /usr/local/zabbix/etc/zabbix_agentd.conf
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
cd /usr/local/zabbix/etc/zabbix_agentd.conf.d
vi userparameter.conf
UserParameter=mysql.check_mysql_status,sh /usr/local/zabbix/etc/shell/check_mysql_status.sh
mkdir /usr/local/zabbix/etc/shell
cd /usr/local/zabbix/etc/shell
vi check_mysql_status.sh
shell脚本内容:
#!/bin/bash
host=localhost
username=zabbix
password=zabbix
port=306
MYSQL='/data/my3306/bin/mysql'
SOCKET='/data/my3306/run/mysql.sock'
CHECK_TIME=3
#mysql is working MYSQL_IS_OK is 1 , mysql down MYSQL_IS_OK is 0
MYSQL_IS_OK=1
function check_mysql_status (){
$MYSQL -u$username -p"$password" -P$port --socket="$SOCKET" -e "select user();" > /dev/null 2>&1
if [ $? = 0 ] ;then
MYSQL_IS_OK=1
else
MYSQL_IS_OK=0
fi
return $MYSQL_IS_OK
}
while [ $CHECK_TIME -ne 0 ]
do
let "CHECK_TIME -= 1"
check_mysql_status
if [ $MYSQL_IS_OK = 1 ] ; then
CHECK_TIME=0
echo 0
exit 0
fi
if [ $MYSQL_IS_OK -eq 0 ] && [ $CHECK_TIME -eq 0 ]
then
echo 1
exit 1
fi
sleep 3
done
另外的配置方法:
# UnsafeUserParameters=0 改为 UnsafeUserParameters=1
# UserParameter= 在下面直接添加用户参数
UserParameter=<key>,<shell command>
key:服务器添加监控时需用到的key值
shell command:监控脚本的绝对路径
2.server端用get命令测试key值
[root@mysql01 zabbix_agentd.conf.d]# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k mysql.check_mysql_status
0
3.web上添加监控项
(1)先创建单独模板
Configuration - Templates -Create template
Template name: 模板名称
Groups: 需要加进一个组,或者新建组
(2)在模板里添加items值
key值必须是在userparameter.conf里面定义的
(3)添加trigger触发器
脚本里正常是0,如果为1则触发动作
(4)再次测试发现超时
/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k mysql.check_mysql_status
ZBX_NOTSUPPORTED: Timeout while executing a shell script
/usr/local/zabbix/etc/zabbix_server.conf和zabbix_agentd.config
Timeout=30
修改后正常
[root@mysql01 etc]# /usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -k mysql.check_mysql_status
1
(5)添加action动作
(6)用户下添加收件地址
(7)添加media里面的邮件服务器
(8)邮件已经收到告警信息