zabbix mysql监控项

zabbix_agentd.conf 文件添加自定义键值

UserParameter=mysql_list[],/etc/zabbix/scripts/mysql.sh
UserParameter=mysql.slave[
],/etc/zabbix/scripts/mysqlmonitor.sh $1
UserParameter=mysql.statsvp[],/etc/zabbix/scripts/chk_mysql.sh $1
UserParameter=discovery.mysqluser,/etc/zabbix/scripts/discovery_mysql_user.sh
UserParameter=mysqluser.check[
],/etc/zabbix/scripts/mysql_user_check.sh $1

chk_mysql.sh 性能

#!/bin/bash
# -------------------------------------------------------------------------------
# FileName: check_mysql.sh
# Revision: 1.0
# -------------------------------------------------------------------------------
# Copyright:
# License: GPL

# 用户名
MYSQL_USER='root'

# 密码
MYSQL_PWD='密码'

# 主机地址/IP
MYSQL_HOST='localhost'

# 端口
MYSQL_PORT='3306'

# 数据连接
MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"

# 参数是否正确
if [ $# -ne "1" ];then
echo "arg error!"
fi

# 获取数据
case $1 in
Uptime)
result=`${MYSQL_CONN} status 2>/dev/null |cut -f2 -d":"|cut -f1 -d"T"`
echo $result
;;
Com_update)
result=`${MYSQL_CONN} extended-status 2>/dev/null  |grep -w "Com_update"|cut -d"|" -f3`
echo $result
;;
Slow_queries)
result=`${MYSQL_CONN} status 2>/dev/null |cut -f5 -d":"|cut -f1 -d"O"`
echo $result
;;
Com_select)
result=`${MYSQL_CONN} extended-status 2>/dev/null |grep -w "Com_select"|cut -d"|" -f3`
echo $result
;;
Com_rollback)
result=`${MYSQL_CONN} extended-status 2>/dev/null |grep -w "Com_rollback"|cut -d"|" -f3`
echo $result
;;
Questions)
result=`${MYSQL_CONN} status 2>/dev/null |cut -f4 -d":"|cut -f1 -d"S"`
echo $result
;;
Com_insert)
result=`${MYSQL_CONN} extended-status 2>/dev/null |grep -w "Com_insert"|cut -d"|" -f3`
echo $result
;;
Com_delete)
result=`${MYSQL_CONN} extended-status 2>/dev/null |grep -w "Com_delete"|cut -d"|" -f3`
echo $result
;;
Com_commit)
result=`${MYSQL_CONN} extended-status 2>/dev/null |grep -w "Com_commit"|cut -d"|" -f3`
echo $result
;;
Bytes_sent)
result=`${MYSQL_CONN} extended-status 2>/dev/null |grep -w "Bytes_sent" |cut -d"|" -f3`
echo $result
;;
Bytes_received)
result=`${MYSQL_CONN} extended-status 2>/dev/null  |grep -w "Bytes_received" |cut -d"|" -f3`
echo $result
;;
Com_begin)
result=`${MYSQL_CONN} extended-status 2>/dev/null  |grep -w "Com_begin"|cut -d"|" -f3`
echo $result
;;
Threads_connected)
result=`${MYSQL_CONN} extended-status 2>/dev/null  |grep -w "Threads_connected"|cut -d"|" -f3`
echo $result
;;
Threads_running)
result=`${MYSQL_CONN} extended-status 2>/dev/null  |grep -w "Threads_running"|cut -d"|" -f3`
echo $result
;;
Innodb_row_lock_current_waits)
result=`${MYSQL_CONN} extended-status 2>/dev/null  |grep -w "Innodb_row_lock_current_waits"|cut -d"|" -f3`
echo $result
;;
Exec_long_time)
result=`mysql -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT} -e "SELECT count(*) FROM information_schema.processlist WHERE COMMAND<>'Sleep' AND TIME >60 AND info IS NOT NULL AND user NOT IN ('root','event_scheduler','system user ','master','repl','repl1') " 2> /dev/null |sed 1d `
echo $result
;;


*)
echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin|Threads_connected|Threads_running|Innodb_row_lock_current_waits|Exec_long_time)"
;;
esac

mysqlmonitor.sh 主从状态

#!/bin/bash
#Desc:用于获取主从同步信息,判断主从是否出现异常,然后提交给zabbix


USER="root"
PASSWD="密码"
NAME=$1

function IO {
    Slave_IO_Running=`/usr/bin/mysql -u $USER -p$PASSWD -e "show slave status\G;" 2> /dev/null |grep Slave_IO_Running |awk '{print $2}'`
    if [[ $Slave_IO_Running == "Yes" ]];then
         echo 0
    else
        echo 1
    fi
}

function SQL {
    Slave_SQL_Running=`/usr/bin/mysql -u $USER -p$PASSWD -e "show slave status\G;" 2> /dev/null |grep Slave_SQL_Running: |awk '{print $2}'`
    if [[ $Slave_SQL_Running == "Yes" ]];then
        echo 0
    else
        echo 1
    fi

}
function Second {
     Second=`/usr/bin/mysql -u $USER -p$PASSWD -e "show slave status\G;" 2> /dev/null |grep Seconds_Behind_Master: |awk '{print $2}'`
             echo $Second

}
case $NAME in
   io)
       IO
   ;;
   sql)
       SQL
   ;;
   second)
       Second
   ;;
   *)
        echo -e "Usage: $0 [io | sql |second]"
esac

mysql.sh

echo `netstat -atnp |grep 3306 |wc -l`

discovery_mysql_user.sh 获取连接用户 自动发现项

# cat discovery_mysql_user.sh
#!/bin/bash
/usr/bin/mysql  -uroot  -密码  -e"SELECT count(*) num,user FROM information_schema.processlist WHERE  user NOT IN ('root','event_scheduler','system user','master','repl','repl1') group by user having num>5 order by num desc ;" > /etc/zabbix/scripts/zabbix_mysql_user_count.txt 2>/dev/null

proc_array=(`tail -n +2 /etc/zabbix/scripts/zabbix_mysql_user_count.txt | awk '{a[$NF]+=$1}END{for(k in a)print a[k],k}'|cut -d" " -f2`)

length=${#proc_array[@]}


printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
    printf "\n\t\t{"
    printf "\"{#USER_NAME}\":\"${proc_array[$i]}\"}"
    if [ $i -lt $[$length-1] ];then
        printf ","
    fi
done
    printf "\n\t]\n"
printf "}\n"

mysql_user_check.sh 获取mysql用户连接数量

# cat mysql_user_check.sh
#!/bin/bash


process=$1
mysql_user_count=`tail -n +2 /etc/zabbix/scripts/zabbix_mysql_user_count.txt | awk '{a[$NF]+=$1}END{for(k in a)print a[k],k}' | grep -w $1 | cut -d" " -f1`
echo "$mysql_user_count"

测试
chmod 777 discovery_mysql_user.sh mysql_user_check.sh zabbix_mysql_user_count.txt

zabbix_get -p10050 -k ‘discovery.mysqluser’ -s ip
zabbix_get -p10050 -k ‘mysqluser.check[user]’ -s ip

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LOST_9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值