zabbix监控mysql性能(106)

凉白开 zabbix3896,88860字数 3142阅读10分28秒阅读模式

今天来看看zabbix如何监控mysql性能,这边使用mysql自带的模板,可以监控如下内容:OPS(增删改查)、mysql请求流量带宽,mysql响应流量带宽,最后会附上相应的监控图!

编写check_mysql.sh脚本

用于获取mysql性能指标数据,你需要修改相应的数据库信息文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

# vim /usr/local/zabbix-2.4.4/scripts/chk_mysql.sh

脚本如下:文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

#!/bin/bash
# -------------------------------------------------------------------------------
# FileName:    check_mysql.sh
# Revision:    1.0
# Date:        2015/06/09
# Author:      DengYun
# Email:       dengyun@ttlsa.com
# Website:     www.ttlsa.com
# Description: 
# Notes:       ~
# -------------------------------------------------------------------------------
# Copyright:   2015 (c) DengYun
# License:     GPL

# 用户名
MYSQL_USER='zabbix'

# 密码
MYSQL_PWD='123456'

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

# 端口
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|cut -f2 -d":"|cut -f1 -d"T"` 
        echo $result 
        ;; 
    Com_update) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3` 
        echo $result 
        ;; 
    Slow_queries) 
        result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"` 
        echo $result 
        ;; 
    Com_select) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3` 
        echo $result 
                ;; 
    Com_rollback) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Questions) 
        result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"` 
                echo $result 
                ;; 
    Com_insert) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Com_delete) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Com_commit) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Bytes_sent) 
        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` 
                echo $result 
                ;; 
    Bytes_received) 
        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3` 
                echo $result 
                ;; 
    Com_begin) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3` 
                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

修改zabbix_agentd.conf

增加自定义key,在最后一行增加如下:文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

# 获取mysql版本
UserParameter=mysql.version,mysql -V
# 获取mysql性能指标,这个是上面定义好的脚本
UserParameter=mysql.status[*],/usr/local/zabbix-2.4.4/scripts/chk_mysql.sh $1
# 获取mysql运行状态
UserParameter=mysql.ping,mysqladmin -uzabbix -p123456 -P3306 -h127.0.0.1  ping | grep -c alive

备注:请注意修改你的数据库信息,以及zabbix路径信息文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

重启zabbix

# killall zabbix-agentd
# /usr/local/zabbix-2.4.4/bin/zabbix_agentd
或者
# service zabbix_agentd restart

Link MySQL模板

模板是zabbix系统提供的,进入zabbix web后台,configuration-->hosts-->点击你的主机name-->选择template选项卡,选择模板“Template App MySQL”,最后点击update即可文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

mysql

zabbix监控mysql

数据查看

如果配置没有异常,那么可以在graph中查看到2张监控图,分别为请求流量带宽、响应流量带宽、ops,点击monitoring-->graphs-->选择你的主机,分别选择Graph“MySQL bandwidth”、“MySQL operations”,监控图分别如下(图片可以点击放大查看):文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

mysql

zabbix监控mysql

mysql

zabbix监控mysql

常见错误解决思路

如果发现监控没有数据,请排查如下问题文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

1. zabbix客户端是否重启文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

2. 脚本是否有执行权限文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

3. 数据库是否有权限文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

4. 环境变量是否有问题文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

5. 请看zabbix item列,鼠标移至红色叉上,有错误提示。文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

6. 如果数据库密码保存在脚本中,会导致监控没有数据会不断的报错为Warning: Using a password on the command line interface can be insecure.需要将帐号密码等配置添加到my.cnf中。文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/ 文章源自运维生存时间-https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
凉白开
  • 本文由 发表于 22/07/2015 10:03:01
  • 转载请务必保留本文链接:https://www.ttlsa.com/zabbix/zabbix-monitor-mysql/
  • mysql
  • zabbix mysql
  • zabbix监控mysql
评论  38  访客  38
    • 匿名
      匿名 9

      zabbix_get 取不到值,或者 not suitable for value type [Numeric (float)]等报错
      试试删掉脚本里的 -P${MYSQL_PORT}
      我在用mysqladmin直连的之后,发现带端口号返回的是空值,所以把脚本里的端口号删了,可行

      • Bryan
        Bryan 0

        2092:20161202:162011.674 error reason for “192.168.*.*mysql.status[Bytes_received]” changed: Received value [Warning: Using a password on the command line interface can be insecure.55383] is not suitable for value type [Numeric (float)],这个数据类型的错误你们都是怎么解决的啊,我用的是zabbix3.2,在服务器运行单个命令可以获取到mysql的状态数据的改变,但是图表中没有数据

        • bluesone
          bluesone 0

          [root@localhost zabbix-2.0.6]# zabbix_get -s 192.168.100.98 -k mysql.status
          arg error!
          Usage:/usr/local/zabbix-2.0.6/scripts/chk_mysql.sh(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)
          提示参数错误,这是几个意思呢?
          坐等。。。。。

          • 匿名
            匿名 0

            楼主好,我安装你的方法做完后报错:ZBX_NOTSUPPORTED: Unsupported item key,这个怎么解决?

            • 85757916
              85757916 3

              谢谢分享….

              • Null
                Null 2

                楼主,# 获取mysql运行状态 这个方案无法行得通哦。
                因为当mysqld停止后,mysqladmin就会报错,所以。
                建议采用端口监听。

                • 路人甲
                  路人甲 2

                  楼主,如果数据库密码保存在脚本中,会导致监控没有数据 会不断的报错为Warning: Using a password on the command line interface can be insecure.
                  需要将帐号密码等配置添加到my.cnf中,希望楼主更新下。

                    • 林
                      1

                      @ 路人甲 具体怎么配置my。cnf,谢谢

                    • 禁言
                      禁言 9

                      你好,我在应用此文章时遇到一点问题:1、服务器端获取不到客户端mysql 的版本信息;2、服务器获取mysql.ping 的数据是0,但在客户端测试获取是1。其他参数正常,比如mysql.status[Uptime]。请问这是什么问题?
                      mysql的版本是5.6,编译安装的
                      防火墙、selinux已经关闭
                      zabbix item列正常

                        • 运维生存时间网
                          运维生存时间网 7

                          @ 禁言 使用zabbix_get获取试试看,或许是权限、环境变量等等问题

                            • 禁言
                              禁言 9

                              @ 运维生存时间网 就是用zabbix_get去获取,能获取到其他的数据,就是不能获取客户端mysql 的版本信息和mysql.ping 的数据

                          • brent苏
                            brent苏 9

                            您好,我在使用官方模版的时候有一个报错,我使用zabbix_get也发现报错:
                            [root@mysql2 ~]# zabbix_get -s 192.168.56.201 -k mysql.status[Uptime]
                            sh: mysql: command not found
                            这里调用mysql发现没有这个命令,到底是哪里环境变量不对?

                              • 运维生存时间
                                运维生存时间 7

                                @ brent苏 你需要安装mysql客户端,比如yum install mysql

                                  • 匿名
                                    匿名 9

                                    @ 运维生存时间 已经安装了mysql客户端,为何还是提示sh: mysql: command not found,是不是哪里还有设置自己环境变量的

                                • 请问楼主这个脚本有主从状态的监控命令吗?
                                  请问楼主这个脚本有主从状态的监控命令吗? 9

                                  请问楼主这个脚本有主从状态的监控命令吗?

                                  • LookBacxk
                                    LookBacxk 0

                                    zabbix2.4.6为什么不出数据呢,
                                    1. zabbix客户端是否重启 ok
                                    2. 脚本是否有执行权限 ok
                                    3. 数据库是否有权限 ok
                                    4. 环境变量是否有问题 ok
                                    5. 请看zabbix item列,鼠标移至红色叉上,有错误提示。 ok

                                      • 凉白开
                                        凉白开 9

                                        @ LookBacxk 请截图~

                                      • 西海
                                        西海 9

                                        Received value [‘HOME’ ????????????????????????е??????????????] is not suitable for value type [Numeric (float)]

                                        在windows平台,学习你的文档进行了测试,itme报上面的错误

                                        • 西海
                                          西海 0

                                          Received value [‘HOME’ ?????ڲ????ⲿ???Ҳ???ǿ????еij?????????ļ???] is not suitable for value type [Numeric (float)]

                                          在windows平台,学习你的文档进行了测试,itme报上面的错误

                                          • sad
                                            sad 0

                                            你好,我使用的是2.2.10.
                                            按照您的这篇文档,在修改zabbix_agentd添加自定义key之后就无法启动agent了,查看报错是因为已经有了这三个key,我在web页面上查看确实是都有了。请问一下是怎么回事
                                            另,套用app mysql之后总是检测mysql状态是down的,但是我的mysql确实是启动的啊,SELINUX和iptables都关闭了,望指点

                                              • 管理员
                                                管理员 5

                                                @ sad 调用zabbix_get取值看看

                                                  • zbin
                                                    zbin 1

                                                    @ 管理员 我也是@sad 一样的问题,请问管理员如何用zabbix_get取值看看?他提示已经有这3个key不能重启agent呢!!

                                                      • 管理员
                                                        管理员 5

                                                        @ zbin 也许你是yum安装的zabbix,查看zabbix配置文件,里面有个mysql监控的配置文件。在zabbix配置文件目录下find . | grep mysql能看到

                                                      • zbin
                                                        zbin 1

                                                        @ 管理员 你好!我也是同样的问题!重新打开客户端它提示该key已存在
                                                        请教一下该如何处理?

                                                          • 管理员
                                                            管理员 5

                                                            @ zbin 也许你是yum安装的zabbix,查看zabbix配置文件,里面有个mysql监控的配置文件。在zabbix配置文件目录下find . | grep mysql能看到

                                                      • 运维生存时间网友
                                                        运维生存时间网友 9

                                                        你好,安装这篇文档,我去监控mysql使用zabbix2.4.5,但是却报监控数据类型不对:
                                                        Received value is not suitable for value type [Numeric (unsigned)] and data type [Decimal]
                                                        请问是何原因?我尝试了去修改mysql模板里的数据类型,不管用。。。求指点

                                                        • 匿名
                                                          匿名 9

                                                          你好,安装这篇文档,我去监控mysql使用zabbix2.4.5,但是却报监控数据类型不对:
                                                          Received value is not suitable for value type [Numeric (unsigned)] and data type [Decimal]
                                                          请问是何原因?我尝试了去修改mysql模板里的数据类型,不管用。。。求指点

                                                            • 凉白开
                                                              凉白开 9

                                                              @ 匿名 check你的数据,获取到的值不是数字。

                                                            • slosh
                                                              slosh 9

                                                              你好,按照这篇文章使用zabbix2.4.5监控mysql,但是报错:
                                                              Received value is not suitable for value type [Numeric (unsigned)] and data type [Decimal]
                                                              可我修改了类型也不正确,在项目里全是X….求指点

                                                              • 咨询
                                                                咨询 9

                                                                请问一下,是否有写监控Sql,Oracle的监控的文章呢,还有mysql,sql,oracle这几种数据库服务器高可用环境的监控。谢谢,感觉你写得还不错。

                                                                • 变心
                                                                  变心 0

                                                                  vim /usr/local/zabbix-2.4.4/scripts/chk_mysql.sh 你发的这个脚本是完整的吗

                                                                  • 管理员
                                                                    管理员 5

                                                                    新版本多半会调整数据库结构,不建议直接读取数据库,建议用API,不知道你说的API是哪一个?

                                                                      • 粉丝
                                                                        粉丝 1

                                                                        @ 管理员 您好,调用API的话,如果取出的数据量过大,会造成性能问题,官方给了一个limit参数,但是却没有start来分页,一般API获取数据分页展示的话,有什么思路吗,谢谢

                                                                      • 运维生存时间网友
                                                                        运维生存时间网友 9

                                                                        哥们,我书的读者,我有个问题请教下..Zabbix 2.4.5 版本中的 items 表中的 lastclock好像不存在了,以前的老版本貌似有 我需要取出某个item key的最后的时间,我尝试了2个方法但都不是很好处理
                                                                        一 . 从history表中取item key的最后时间速度很慢 半天出不来数据
                                                                        二 用api去取,速度到还可以,但一次取出大量数据, 时而会导致PHP 报内存不足够,以后agentd还会加 怕受不了,暂时也没有发现api中有分页的参数

                                                                        • 匿名
                                                                          匿名 9

                                                                          哥们,我书的读者,我有个问题请教下..Zabbix 2.4.5 版本中的 items 表中的 lastclock好像不存在了,以前的老版本貌似有 我需要取出某个item key的最后的时间,我尝试了2个方法但都不是很好处理
                                                                          一 . 从history表中取item key的最后时间速度很慢 半天出不来数据
                                                                          二 用api去取,速度到还可以,但一次取出大量数据, 时而会导致PHP 报内存不足够,以后agentd还会加 怕受不了,暂时也没有发现api中有分页的参数

                                                                        评论已关闭!