zoukankan      html  css  js  c++  java
  • 分布式监控系统Zabbix--完整安装记录(7)-使用percona监控MySQL

    前面已经介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳。要想更加仔细的监控Mysql,业内同学们都会选择采用Percona Monitoring Plugins监控MySQL。Percona有比较详细的监控Mysql的模版以及脚本,它提升了在高负载情况下的InnoDB的性能、为运维人员提供一些非常有用的性能诊断工具;另外它有更多的参数和命令来控制服务器行为。废话不多说,下面记录下使用Percona Monitoring Plugins监控MySQL的操作过程:

    被监控主机的zabbix的部署路径是/data/zabbix。
    [root@open ~]# ll /data/zabbix/
    total 28
    drwxr-xr-x 2 zabbix zabbix 4096 Jul 19 10:24 bin
    drwxr-xr-x 3 zabbix zabbix 4096 Sep  5 14:12 etc
    drwxr-xr-x 2 zabbix zabbix 4096 Jul 19 10:24 lib
    drwxr-xr-x 2 zabbix zabbix 4096 Jul 19 10:24 logs
    drwxr-xr-x 2 zabbix zabbix 4096 Jul 19 10:24 monitor_scripts    //这个是存放监控脚本的目录
    drwxr-xr-x 3 zabbix zabbix 4096 Jul 19 10:24 sbin
    drwxr-xr-x 4 zabbix zabbix 4096 Jul 19 10:24 share
     
    被监控主机的mysql路径是/usr/local/mysql
    [root@open ~]# ps -ef|grep mysql
    root      9170  8258  0 11:23 pts/0    00:00:00 grep mysql
    root     19000     1  0 Sep01 ?        00:00:00 /bin/sh /usr/local/mysql//bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid
    mysql    19776 19000  0 Sep01 ?        00:07:26 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysql/data/mysql-error.log --pid-file=/data/mysql/data/mysql.pid --socket=/usr/local/mysql/var/mysql.sock --port=3306
     
     
    如下是在zabbix被监控机上的操作:
    1)需要安装php脚本运行环境
    percona监控zabbix的脚本是使用PHP写的,所以需要准备好php运行环境,这里直接选择用yum安装就可以满足要求了:
    [root@open ~]# yum install -y php php-mysql
     
    确保被监控主机没有安装percona相关软件,如果有就卸载掉!
    [root@open ~]# rpm -qa|grep percona                         
    [root@open ~]#
     
    2)下载官方percona模版  (https://www.percona.com/downloads/percona-monitoring-plugins/)
    直接下载:https://pan.baidu.com/s/1c1IE7zq      提取密码:trp5
    [root@open ~]# wget https://www.percona.com/downloads/percona-monitoring-plugins/1.1.6/percona-zabbix-templates-1.1.6-1.noarch.rpm
    [root@open ~]# rpm -ivh percona-zabbix-templates-1.1.6-1.noarch.rpm
     
    [root@open ~]# ll /var/lib/zabbix/percona
    total 8
    drwxr-xr-x 2 root root 4096 Sep  5 14:35 scripts
    drwxr-xr-x 2 root root 4096 Sep  5 14:35 templates
    [root@open ~]# ll /var/lib/zabbix/percona/scripts 
    total 64
    -rwxr-xr-x 1 root root  1251 Jan 11  2016 get_mysql_stats_wrapper.sh
    -rwxr-xr-x 1 root root 59640 Jan 11  2016 ss_get_mysql_stats.php
    [root@open ~]# ll /var/lib/zabbix/percona/templates
    total 284
    -rw-r--r-- 1 root root  18866 Jan 11  2016 userparameter_percona_mysql.conf
    -rw-r--r-- 1 root root 269258 Jan 11  2016 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml
     
    如上,安装percona后会在/var/lib/zabbix/percona生成2个目录,其中:
    /var/lib/zabbix/percona/scripts是监控脚本目录
    /var/lib/zabbix/percona/templates是监控mysql的xml模版目录
    然后把/var/lib/zabbix/percona/templates/目录下的模版文件zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6_1.xml复制出来,在zabbix的管理界面import导入进去。
    --------------------------------------------------------------------------------------------------------------------------------------------------
    但是在导入此模板的时候,可能会报如下错误:
    Import failed
    Details
    Invalid XML tag "/zabbix_export/date":"YYYY-MM-DDThh:mm:ssZ" is expected.  (标签无效 "/zabbix_export/date": "YYYY-MM-DDThh:mm:ssZ" 预计)
     
    经过核查,这个原因是模版错误,是因为percona官方上1.1.6还是zabbix2.0的版本模版,所以需要跟新上来匹配zabbix3.0的模版规范,而且这个zabbix模版还是直接copy的cacti模版,比较粗糙,
    用more查看就可以看到里面都是cacti的内容,可见percona官网对zabbix也不是很重视嘛,至少不如cacti那样重视的,如下所示:
     
    处理办法:修改配置模版加载成功
    在原来的zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6_1.xml之上进行修改,改完后就可以import导入进去了!!!!
    修改好的新模版文件下载地址是:https://pan.baidu.com/s/1i5j8IJ7    提取密码:ab8a
    --------------------------------------------------------------------------------------------------------------------------------------------------
     
    将percona的两个脚本放到被监控主机的/data/zabbix/monitor_scripts目录下
    [root@open ~]# mv /var/lib/zabbix/percona/scripts/* /data/zabbix/monitor_scripts/
     
    3)添加参数支持
    在被监控机器上将userparameter_percona_mysql.conf拷贝到zabbix_agent的对应配置目录下
    [root@open ~]# rsync -avpgolr /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /data/zabbix/etc/zabbix_agentd.conf.d/
    [root@open ~]# sed -i 's#/var/lib/zabbix/percona/scripts/#/data/zabbix/monitor_scripts/#g' /data/zabbix/etc/zabbix_agentd.conf.d/userparameter_percona_mysql.conf
     
    注意修改客户端机器的zabbix_agentd.conf文件,增加Include 把userparameter_percona_mysql.conf 所在的目录增加进去:
    [root@open ~]# cat /data/zabbix/etc/zabbix_agentd.conf|grep Include 
    ### Option: Include
    Include=/data/zabbix/etc/zabbix_agentd.conf.d/
    # Include=/usr/local/etc/zabbix_agentd.userparams.conf
    # Include=/usr/local/etc/zabbix_agentd.conf.d/
    # Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
     
    4)修改监控脚本  
    修改/data/zabbix/monitor_scripts/get_mysql_stats_wrapper.sh脚本
    -----------------------------------注意----------------------------------
    若mysql没有使用默端口3006,比如mysql使用的是3317。则还需要修改如下脚本文件,记住不要在这里被坑了!改端口号码文件:
    1-> 这里要先建好这个文件,否则会报rm权限错误
    [root@open ~]# touch /tmp/localhost-mysql_cacti_stats.txt:3317
    [root@open ~]# chown -R zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt:3317
     
    2-> 修改端口脚本
    [root@open ~]# vim /data/zabbix/monitor_scripts/get_mysql_stats_wrapper.sh
    CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt "
    换成:
    CACHEFILE="/tmp/$HOST-mysql_zabbix_stats.txt:3317"
      
    TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_cacti_stats.txt`
    换成:
    TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_zabbix_stats.txt:3317`
     
    如果mysql使用的是默认的3306端口,那么就不用修改端口了(即将上面的:3317去掉)!
    --------------------------------------------------------------------------
     
    修改mysql执行命令路径(如下脚本,可以监控到mysql的主从同步状态)
    [root@open ~]# vim /data/zabbix/monitor_scripts/get_mysql_stats_wrapper.sh
    RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUSG' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '
    ' ','`
    换成:
    RES=`/usr/local/mysql/bin/mysql -p123456 -e 'SHOW SLAVE STATUSG' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '
    ' ','` 
     
    然后修改/data/zabbix/monitor_scripts/ss_get_mysql_stats.php脚本,这里主要修改用户名密码:
    [root@open ~]# vim /data/zabbix/monitor_scripts/ss_get_mysql_stats.php
    $mysql_user = 'zabbixmysql';
    $mysql_pass = 'mysql@12345678';
    $mysql_port = 3306;
     
    登陆mysql创建监控要用的账号(授予的权限,最后手动登录验证下)
    [root@open ~]# mysql -p123456
    mysql> GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'zabbixmysql'@'localhost' IDENTIFIED BY "mysql@12345678";      
    Query OK, 0 rows affected (0.03 sec)
     
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
     
    5)修改被监控主机的zabbix权限,并重启zabbix_agent服务
    最后记得重启下zabbix_agent(重启前要保证zabbix的配置文件和监控脚本的权限正确,否则就会采集不到监控数据)
    [root@open ~]# chown -R zabbix.zabbix /data/zabbix
    [root@open ~]# chmod -R 755 /data/zabbix/monitor_scripts/*
    [root@open ~]# /etc/init.d/zabbix_agentd restart
     
    另外,要添加zabbix的sudo权限
    [root@open ~]# cat /etc/sudoers
    ......
    zabbix ALL=(ALL) NOPASSWD: /sbin/blockdev
    #Defaults requiretty                          //如果有这个配置项,那么就注释掉这个。没有的话就忽略
     
    6)测试下监控项
    在客户端zabbix-agentd测试下:
    [root@open ~]# /usr/bin/php -q /data/zabbix/monitor_scripts/ss_get_mysql_stats.php --host localhost --items gg
    gg:6
    [root@open ~]#
     
    在服务器zabbix-server测试下(172.29.16.30是被监控主机的ip地址):
    [root@zabbix ~]# /data/zabbix/bin/zabbix_get -s 172.29.16.30 -p 10050 -k "MySQL.Threads-connected"
    1
    [root@zabbix ~]# /data/zabbix/bin/zabbix_get -s 172.29.16.30 -p 10050 -k "MySQL.Handler-commit"  
    3
    ---------------------------------------------注意------------------------------------------------
    如果对zabbix_server本机进行测试(即zabbix_server本机也作为zabbix_agent),那么-s后的ip要用zabbix_server本机的内网ip(即要和zabbix_agent配置文件里配置的地址一致),而不能使用127.0.0.1
    否则会报错:Check access restrictions in Zabbix agent configuration error(这个命令只能在zabbix的server端使用,如果在agent端使用就会提示这个错误:)

    接着在zabbix的web监控界面里添加被监控主机,选择添加"Percona MySQL Server Template"模板,如下

    最后就来看下percona插件监控mysql的效果图了(可以看出percona mysql的监控项有很多):

  • 相关阅读:
    Laravel报错Call to undefined function IlluminateEncryptionopenssl_cipher_iv_length()
    总结:关于留学网站使用laravel框架的总结
    Laravel5 call to undefined function openssl cipher iv length() 报错 PHP7开启OpenSSL扩展失败
    call undefined function openssl_cipher_iv_length
    Laravel 出现 No application encryption key has been specified.
    Lavarel之环境配置 .env
    laravel怎么开启调试模式
    composer windows安装,使用新手入门
    windows下如何安装Composer?
    39个大数据可视化工具,哪个才是你的菜?
  • 原文地址:https://www.cnblogs.com/kevingrace/p/6256395.html
Copyright © 2011-2022 走看看