分布式监控系统Zabbix--完整安装记录(7)-使用percona监控MySQL

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
被监控主机的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 STATUS\G'  egrep  '(Slave_IO_Running|Slave_SQL_Running):'  awk  -F:  '{print $2}'  tr  '\n'  ',' `
换成:
RES=` /usr/local/mysql/bin/mysql  -p123456 -e  'SHOW SLAVE STATUS\G'  egrep  '(Slave_IO_Running|Slave_SQL_Running):'  awk  -F:  '{print $2}'  tr  '\n'  ',' `
  
然后修改 /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的监控项有很多):

***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************
本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/6256395.html ,如需转载请自行联系原作者
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
监控 安全 Linux
在Linux中,zabbix如何监控脑裂?
在Linux中,zabbix如何监控脑裂?
|
7天前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
34 7
|
30天前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
【10月更文挑战第5天】随着OceanBase社区版的广泛应用,企业纷纷采用这一高性能、高可用的分布式数据库系统。为了确保系统的稳定运行,使用成熟的Zabbix监控工具进行全面监控至关重要。本文通过具体示例介绍了如何配置Zabbix监控OceanBase,包括安装配置、创建监控模板和监控项、编写脚本、设置触发器及图形展示等步骤,帮助读者快速上手,及时发现并解决问题,确保业务始终处于最佳状态。
40 2
|
2月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
48 2
zabbix agent集成percona监控MySQL的插件实战案例
|
2月前
|
监控 前端开发 数据库连接
Zabbix 5.0 LTS的web界面安装及修改zabbix web管理员的默认密码
这篇文章是关于如何安装Zabbix 5.0 LTS的web界面以及如何修改Zabbix web管理员默认密码的教程。
156 1
|
3月前
|
监控 Java 应用服务中间件
分布式链路监控系统问题之Eagleeye的traceId设计的问题如何解决
分布式链路监控系统问题之Eagleeye的traceId设计的问题如何解决
|
3月前
|
监控 API 开发者
分布式链路监控系统问题之ASM的开发体验被认为是噩梦般的问题如何解决
分布式链路监控系统问题之ASM的开发体验被认为是噩梦般的问题如何解决
|
3月前
|
监控 Java API
分布式链路监控系统问题之对Java应用实现字节码增强的方式的问题如何解决
分布式链路监控系统问题之对Java应用实现字节码增强的方式的问题如何解决
|
3月前
|
监控 中间件
分布式链路监控系统问题之当某个Segment数据缺失时还原调用树的问题如何解决
分布式链路监控系统问题之当某个Segment数据缺失时还原调用树的问题如何解决
|
3月前
|
监控 Java
分布式链路监控系统问题之OpenTracing规范的问题如何解决
分布式链路监控系统问题之OpenTracing规范的问题如何解决

推荐镜像

更多