zabbix3.4监控mysql服务器性能

 

 

zabbix3.4监控mysql服务器性能

背景:由于zabbix3.4里面的mysql监控模板没有监控mysql的key,所以需要自己重新定义需要监控的key。

Zabbix Server与Agent之间监控数据的采集主要是通过Zabbix Server主动向Agent询问某个Key的值,
Agent会根据Key去调用相应的函数去获取这个值并返回给Server端。

监控需求:
1、监控MySQL的状态,当状态发生异常,发出报警;
2、监控MySQL的操作,并用图表展现;
3、使用自定义脚本监控扩展Agent。 

一、授权mysql登录用户(agentd端操作)
    MariaDB [(none)]> grant usage on *.* to 'read'@'47.98.97.124' identified by '123456';
    Query OK, 0 rows affected (0.00 sec)

    MariaDB [(none)]> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
二、编辑userparameter_mysql.conf文件
    [root@host-47-98-97-124 ~]# cp /root/zabbix-3.4.2/conf/zabbix_agentd/userparameter_mysql.conf  /usr/local/zabbix/etc/zabbix_agentd.conf.d/

    [root@host-47-98-97-124 ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
    UserParameter=mysql.version,mysql -V
    UserParameter=mysql.status[*],/usr/local/zabbix/scripts/chk_mysql.sh $1

    [root@host-47-98-97-124 ~]# mkdir /usr/local/zabbix/scripts
    [root@host-47-98-97-124 ~]# chmod +x /usr/local/zabbix/scripts/chk_mysql.sh

    [root@host-47-98-97-124 ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
    Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf   #开启
三、mysql服务器性能监控脚本
    #!/bin/bash

    #Filename:chk_mysql.sh
    #Author:zhangjunchao

    MYSQL_SOCK="/var/lib/mysql/mysql.sock"
    MYSQL_USER='read'
    MYSQL_PASSWORD='123456'
    MYSQL_HOST='47.98.97.124'
    MYSQL_PORT='3306'
    MYSQL_Connect="/usr/bin/mysqladmin -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -P$MYSQL_PORT -S$MYSQL_SOCK"

    if  [ $# -ne 1 ];then
        echo "please input one arguement"
    fi 

    case $1 in

        Uptime)             #查询当前MySQL本次启动后的运行统计时间
            result=`${MYSQL_Connect} status | cut -d ":" -f 2 | cut -d " " -f 2`
            echo $result
            ;;

        Slow_queries)       #查看当前慢查询语句的个数
            result=`${MYSQL_Connect} extended-status | grep -w "Slow_queries" | cut -d "|" -f 3`
            echo $result
            ;;

        Com_rollback)       #执行回滚的个数
            result=`${MYSQL_Connect} extended-status | grep -w "Com_rollback" | cut -d "|" -f 3`
            echo $result
            ;;

        Questions)
            result=`${MYSQL_Connect} extended-status | grep -w "Questions" | cut -d "|" -f 3`
            echo $result
            ;;

        Com_commit)
            result=`${MYSQL_Connect} extended-status | grep -w "Com_commit" | cut -d "|" -f 3`
            echo $result
            ;;

        Bytes_sent)       #发送的字节数
            result=`${MYSQL_Connect} extended-status | grep -w "Bytes_sent" | cut -d "|" -f 3`
            echo $result
            ;;

        Bytes_received)   #接受的字节数
            result=`${MYSQL_Connect} extended-status | grep -w "Bytes_received" | cut -d "|" -f 3`
            echo $result
            ;;

        Com_begin)
            result=`${MYSQL_Connect} extended-status | grep -w "Com_begin" | cut -d "|" -f 3`
            echo $result
            ;;

        Open_tables)        #查看当前打开的表数量
            result=`${MYSQL_Connect} status | cut -d ":" -f 5 | cut -d " " -f 2`
            echo $result
            ;;

        Threads_connected)  #查看当前打开的连接数量
            result=`${MYSQL_Connect} extended-status | grep -w  "Threads_connected" | cut -d "|" -f 3`
            echo $result
            ;;

        Threads_cached)     #查看线程缓存内的线程数量
            result=`${MYSQL_Connect} extended-status | grep -w  "Threads_cached" | cut -d "|" -f 3`
            echo $result
            ;;

        Threads_created)   #查看创建用来处理连接的线程数。如果Threads_created较大,可能要增加thread_cache_size值。
            result=`${MYSQL_Connect} extended-status | grep -w  "Threads_created"  | cut -d "|" -f 3`
            echo $result
            ;;

        Threads_running)   #查看激活的(非睡眠状态)线程数
            result=`${MYSQL_Connect} extended-status | grep -w "Threads_running"  | cut -d "|" -f 3`
            echo $result
            ;;

        Slow_launch_threads) #查看创建时间超过slow_launch_time秒的线程数
            result=`${MYSQL_Connect} extended-status | grep -w "Slow_launch_threads" | cut -d "|" -f 3`
            echo $result
            ;;

        Com_select)        #查看select语句的执行数
            result=`${MYSQL_Connect} extended-status | grep -w "Com_select"  |cut -d "|" -f 3`
            echo $result
            ;;

        Com_insert)        #查看insert语句的执行数
            result=`${MYSQL_Connect} extended-status | grep -w "Com_insert" |cut -d "|" -f 3`
            echo $result
            ;;

        Com_update)        #查看update语句的执行数
            result=`${MYSQL_Connect} extended-status | grep -w "Com_update" | cut -d "|" -f 3`
            echo $result
            ;;

        Com_delete)        #查看delete语句的执行数
            result=`${MYSQL_Connect} extended-status | grep -w "Com_delete" | cut -d "|" -f 3`
            echo $result
            ;;

        Connections)       #查看试图连接到MySQL(不管是否连接成功)的连接数
            result=`${MYSQL_Connect} extended-status | grep -w "Connections"  | cut -d "|" -f 3`
            echo $result
            ;;

        Table_locks_immediate)  #查看立即获得的表的锁的次数
            result=`${MYSQL_Connect} extended-status | grep -w "Table_locks_immediate"  | cut -d "|" -f 3`
            echo $result
            ;;

        Table_locks_waited)     #查看不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制
            result=`${MYSQL_Connect} extended-status | grep -w "Table_locks_waited" | cut -d "|" -f 3`
            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)" 
            ;;
        esac    
四、测试数据
    server端测试:
    [root@host-39-108-217-12 ~]# /usr/local/zabbix/bin/zabbix_get  -s 47.98.97.124 -p 10050 -k mysql.status[Connections]
    11232
    [root@host-39-108-217-12 ~]# /usr/local/zabbix/bin/zabbix_get  -s 47.98.97.124 -p 10050 -k mysql.status[Uptime]
    83228

    agentd端测试:
    [root@host-47-98-97-124 ~]# /usr/local/zabbix/sbin/zabbix_agentd -t mysql.status[Uptime] -c /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf 
    mysql.status[Uptime]                          [t|83321]
    [root@host-47-98-97-124 ~]# /usr/local/zabbix/sbin/zabbix_agentd -t mysql.status[Connections] -c /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf 
    mysql.status[Connections]                     [t|11263]
五、登录zabbix,添加mysql监控模板

这里写图片描述

这里写图片描述

当然,mysql监控模板的key只要那么默认的几个,要想监控到chk_mysql.sh脚本中的数据,就需要手动创建item啦,
当然,如果需要报警通知的话,就需要先手动创建trigger了,
当然,如果想图形刷看到数据的话,就需要手动创建graph了。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值