传统的mysql 服务器 用zabbix很容易实现,单对于云端的mysql 实例 我想大家都是用的云自带的监控。我们前端时间aws 云端mysql 实现主从 进程的出现问题,然而aws 自带的监控没有。
我们就想到 zabbix 实现对aws mysql 实例的监控。
1监控的服务远程去连接 awsmysql 取监控的数值就很容易实现了。
创建用户
GRANT USAGE,PROCESS,REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO zabbixtest@'10.%' IDENTIFIED BY 'zabbixtest';
2.监控客户端 zabbix配置文件的
serParameter=mysqlstatustest[*],/data/scripts/zabbix/mysql_check.sh "$1 $2 $3 $4"
3监控脚本重写。这个就是比较麻烦的事情 在这里我贡献给大家,我用的是zabbix3.2 版本实现的。#!/bin/bash
mysql(){
user=$2
password=$3
hostname=$4
case $1 in
Ping)
/usr/bin/mysqladmin -u${user} -p${password} -h${hostname} ping 2>/dev/null |grep alive|wc -l
;;
Threads)
/usr/bin/mysqladmin -u${user} -p${password} -h${hostname} status 2>/dev/null |cut -f3 -d":"|cut -f1 -d"Q"
;;
Questions)
/usr/bin/mysqladmin -u${user} -p${password} -h${hostname} status 2>/dev/null |cut -f4 -d":"|cut -f1 -d"S"
;;
Slowqueries)
/usr/bin/mysqladmin -u${user} -p${password} -h${hostname} status 2>/dev/null |cut -f5 -d":"|cut -f1 -d"O"
;;
Qps)
/usr/bin/mysqladmin -u${user} -p${password} -h${hostname} status 2>/dev/null |cut -f9 -d":"
;;
Slave_IO_State)
if [ "$(/usr/bin/mysql -u${user} -p${password} -h${hostname} -e "show slave status\G" 2>/dev/null | grep Slave_IO_Running|awk '{print $2}')" == "Yes" ];then echo 1; else echo 0;fi
;;
Slave_SQL_State)
if [ "$(/usr/bin/mysql -u${user} -p${password} -h${hostname} -e "show slave status\G" 2>/dev/null | grep Slave_SQL_Running|grep -v "waiting for"|awk '{print $2}')" == "Yes" ];then echo 1; else echo 0;fi
;;
SQL_Remaining_Delay)
if [ "$(/usr/bin/mysql -u${user} -p${password} -h${hostname} -e "show slave status\G" 2>/dev/null | grep SQL_Remaining_Delay|awk '{print $2}')" == "NULL" ];then echo 0; else echo "$(/usr/bin/mysql -u${user} -p${password} -h${hostname} -e "show slave status\G" 2>/dev/null | grep SQL_Remaining_Delay|awk '{print $2}')" ;fi
;;
Key_buffer_size)
/usr/bin/mysql -u${user} -p${password} -h${hostname} -e "show variables like 'key_buffer_size';" 2>/dev/null | grep -v Value |awk '{print $2/1024^2}'
;;
Key_reads)
/usr/bin/mysql -u${user} -p${password} -h${hostname} -e "show status like 'key_reads';" 2>/dev/null | grep -v Value |awk '{print $2}'
;;
Key_read_requests)
/usr/bin/mysql -u${user} -p${password} -h${hostname} -e "show status like 'key_read_requests';" 2>/dev/null | grep -v Value |awk '{print $2}'
;;
Key_cache_miss_rate)
echo $(/usr/bin/mysql -u${user} -p${password} -h${hostname} -e "show status like 'key_reads';" 2>/dev/null | grep -v Value|awk '{print $2}') $(/usr/bin/mysql -u${user} -p${password} -h${hostname} -e "show status like 'key_read_requests';" 2>/dev/null | grep -v Value |awk '{print $2}')| awk '{printf("%1.4f\n",$1/$