Personal learning records
zabbix-mysql监控
zabbix-mysql监控

zabbix-mysql监控

 zabbix-mysql.sh

#!/bin/bash

#要求1、输入qps可以输出mysql 增删改查次数 / mysql服务启动时间的值
#要求2、输入replication 可以输出主从复制状态,0正常,1异常,如果没有主从配置,返回2
#要求3、输出process,输出当前正在运行的sql语句数量
#要求4、输入time,找到当前执行时间大于10秒的所有sql

#防止出现警告,使用文件输入账号密码
cat > /etc/zabbix/zabbix_agentd.d/passwd << EOF
[client]
user=root
password=密码
host=数据库ip
port=数据库端口
EOF

# QPS
function qps() {
queries=`mysql –defaults-extra-file=/etc/zabbix/zabbix_agentd.d/passwd -N -e”SHOW GLOBAL STATUS LIKE ‘Queries’;” | awk ‘{print $2}’`
uptime=`mysql –defaults-extra-file=/etc/zabbix/zabbix_agentd.d/passwd -N -e”SHOW GLOBAL STATUS LIKE ‘Uptime’;” | awk ‘{print $2}’`
qp=` bc <<< “scale=4; $queries / $uptime”`
echo $qp
}

# 主从状态
function replication() {
io=`mysql –defaults-extra-file=/etc/zabbix/zabbix_agentd.d/passwd -e “show slave status\G” | awk ‘/Slave_IO_Running:/ {print $2}’`
sql=`mysql –defaults-extra-file=/etc/zabbix/zabbix_agentd.d/passwd -e “show slave status\G” | awk ‘/Slave_IO_Running:/ {print $2}’`

if [ “$io” == “No” -o “$sql” == “No” ]; then
echo 1
elif [ “$io” == “Yes” -a “$sql” == “Yes” ]; then
echo 0
else
echo 2
fi

}

# 获取正在执行的语句数
function process() {
num=`mysql –defaults-extra-file=/etc/zabbix/zabbix_agentd.d/passwd -N -e “SHOW FULL PROCESSLIST;” | wc -l`
num=`expr $num – 1`
echo $num
}

# 执行时间大于10s的语句
function long() {

num=`mysql –defaults-extra-file=/etc/zabbix/zabbix_agentd.d/passwd -N -e “SHOW FULL PROCESSLIST;” | wc -l`
num=`expr $num – 1`

#一行一行判断,如果运行时间大于10s,输出最后info里的命令
for (( i=1; i<=$num; i++ ))
do
t=`mysql –defaults-extra-file=/etc/zabbix/zabbix_agentd.d/passwd -N -e “SHOW FULL PROCESSLIST;” | awk “NR==$i {print}” | awk ‘{print $6}’`
if [ $t -gt 10 ]; then
comm=`mysql –defaults-extra-file=/etc/zabbix/zabbix_agentd.d/passwd -N -e “SHOW FULL PROCESSLIST;” | awk “NR==$i {print}” | awk ‘{print $NF}’`
fi
done
echo $comm
}

case “$1” in
qps)
qps
;;
replication)
replication
;;
process)
process
;;
time)
long
;;
esac

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注