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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 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天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
46 24
|
1月前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
51 4
|
1月前
|
数据采集 存储 监控
公司监控软件:基于 PHP 的分布式监控系统设计
本文介绍了基于 PHP 的分布式监控系统的设计与实现。该系统包括监控节点、数据采集模块、数据传输模块和监控中心,能够高效地收集、传输和分析各节点的数据,确保系统的稳定运行和安全防护。通过示例代码展示了数据采集、传输及存储的具体实现方法,并强调了安全与可靠性的重要性。
47 3
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
102 3
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
86 2
|
1月前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
174 0
|
12天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
81 15
|
5天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
12天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
16天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。

推荐镜像

更多
下一篇
DataWorks