首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

zabbix使用percona plugin监控mysql

2023-11-12 来源:华拓网

使用percona plugin 监控mysql

之前我们通过自定监控项来监控mysql或mariadb的状态,但是如果我们需要有更详细的监控类型,或者不想自己创建一系列的监控项目的话,我们可以使用percona plugin中自带的监控项来实现mysql的监控,这样省去了我们大量的手工操作。

安装php环境和 percona plugin:

yum install php php-mysql –yrpm -ivh https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.7/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.7-2.noarch.rpm

插件安装完成之后会有如下提示:

Scripts are installed to /var/lib/zabbix/percona/scriptsTemplates are installed to /var/lib/zabbix/percona/templates

在templates目录下会有两个文件:

[root@temp-test ~]# cd /var/lib/zabbix/percona/templates[root@temp-test templates]# lltotal 284-rw-r--r-- 1 root root  18866 Dec 10  2016 userparameter_percona_mysql.conf-rw-r--r-- 1 root root 269258 Dec 10  2016 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.7.xml

其中userparameter文件需要我们拷贝到对应的zabbx agent 配置中指定的目录。默认为 /etc/zabbix/zabbix_agentd.d/

模板文件需要我们导入到zabbix的模板中,上面定义了所有的监控规则。

在scripts中,也有两个文件:

[root@temp-test scripts]# lltotal 64-rwxr-xr-x 1 root root  1251 Dec 10  2016 get_mysql_stats_wrapper.sh-rwxr-xr-x 1 root root 59998 Nov 13 15:55 ss_get_mysql_stats.php

这里需要修改php文件中所指定的数据库的账号,密码和sock文件路径,默认的是null值,指向的是/var/lib/mysql/mysql.sock,如果不是默认,需要修改:

$mysql_user = ‘root‘;$mysql_pass = ‘123456‘;$mysql_port = 3306;$mysql_socket = ‘/data/mariadata/mysql/mysql.sock‘;

测试命令是可用:

[root@temp-test scripts]# ./get_mysql_stats_wrapper.sh gg48

web 界面导入模板即可,如果监控项目过多可以删除不需要的监控项。附上监控模板http://down.51cto.com/data/2340474  。

本文出自 “Trying” 博客,请务必保留此出处http://tryingstuff.blog.51cto.com/4603492/1981296

zabbix使用percona plugin监控mysql

标签:zabbix

小编还为您整理了以下内容,可能对您也有帮助:

如何在Zabbix上安装MySQL监控插件PMP

PMP,全称是Percona Monitoring Plugins,是Percona公司为MySQL监控写的插件。支持Nagios,Cacti。从PMP 1.1开始,支持Zabbix。

下面,看看如何在Zabbix上安装PMP。

配置Zabbix Agent

下载PMP

因为我的Linux版本是RHEL 6.7,故选择RPM包

# wget https://www.percona.com/downloads/percona-monitoring-plugins/1.1.6/percona-zabbix-templates-1.1.6-1.noarch.rpm

# rpm -ivh percona-zabbix-templates-1.1.6-1.noarch.rpm

warning: percona-zabbix-templates-1.1.6-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY

Preparing... ########################################### [100%]

1:percona-zabbix-template########################################### [100%]

Scripts are installed to /var/lib/zabbix/percona/scripts

Templates are installed to /var/lib/zabbix/percona/templates

拷贝PMP的配置文件

# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/

确保Zabbix-Agent配置文件中已经开启Include=/etc/zabbix/zabbix_agentd.d/

重启Zabbix-Agent服务

# service zabbix-agent restart

创建MySQL的监控用户

mysql> grant process,super,select on *.* to monitor@'localhost' identified by 'monitor';

mysql> flush privileges;

修改脚本中的用户名和密码

# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php

$mysql_user = 'monitor';

$mysql_pass = 'monitor';

$mysql_port = 3306;

测试脚本能否获取到数据库的状态信息

该脚本需测试两部分内容

1. MySQL实例本身的状态变量

2. MySQL是否为Slave

测试MySQL实例本身的状态变量

# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg

/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh: line 35: /usr/bin/php: No such file or directory

ERROR: run the command manually to investigate the problem: /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg

因为它的脚本是用PHP实现的,故需要安装php和php-mysql

# yum install php php-mysql

重新测试该脚本

# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg

有值返回就代表OK

测试MySQL是否为Slave

# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave

返回0和1是正常值,返回“Access denied”则有问题。

导入PMP的模板

即/var/lib/zabbix/percona/templates目录中的zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml

zabbix怎么监控mysql

在之前的博文里面写过如何通过Zabbix监控mysql主从同步是否OK,mysql从库是否有延时

(Seconds_Behind_Master)主库,当mysql主从有异常时通过Email或者SMS通知DBA和系统人员。除此之外,Zabbix

还可以监控mysql slow queries,mysql version,uptime,alive等。下面通过Zabbix

Graphs实时查看的SQL语句操作情况和mysql发送接收的字节数。

1.Zabbix官方提供的监控mysql的模板Template App MySQL,可以看到相关的Items和key。

2.把该模板Template App MySQL

Link到相关的主机上面,发现Item的Status是不可用的,因为key的值是通过Mysql用户查看"show global

status"信息或者用mysqladmin命令查看status或extended-status的信息而取的值。

mysql> show global status; mysql> show status;

3.结合官方提供的key编写Shell脚本,从数据库中取出Items的key的值。

[root@monitor scripts]# cat checkmysqlperformance.sh #!/bin/sh #Create by sfzhang 2014.02.20 MYSQL_SOCK="/data/mysql/3306/mysql.sock" MYSQL_PWD=`cat /data/mysql/3306/.mysqlpassword` ARGS=1 if [ $# -ne "$ARGS" ];then echo "Please input one arguement:" fi case $1 in Uptime) result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f2 -d":"|cut -f1 -d"T"` echo $result ;; Com_update) result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_update"|cut -d"|" -f3` echo $result ;; Slow_queries) result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK status |cut -f5 -d":"|cut -f1 -d"O"` echo $result ;; Com_select) result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_select"|cut -d"|" -f3` echo $result ;; Com_rollback) result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_rollback"|cut -d"|" -f3` echo $result ;; Questions) result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f4 -d":"|cut -f1 -d"S"` echo $result ;; Com_insert) result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_insert"|cut -d"|" -f3` echo $result ;; Com_delete) result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_delete"|cut -d"|" -f3` echo $result ;; Com_commit) result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_commit"|cut -d"|" -f3` echo $result ;; Bytes_sent) result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` echo $result ;; Bytes_received) result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_received" |cut -d"|" -f3` echo $result ;; Com_begin) result=`mysqladmin -uroot -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_begin"|cut -d"|" -f3` echo $result ;; *) echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions)" ;; esac

4.在Zabbix_agentd.conf里面添加UserParameter,格式如下,对于Zabbix来说,脚本其实就是一个插件。

UserParameter=mysql.version,mysql -V UserParameter=mysql.ping,mysqladmin -uroot -p123456 -S /data/mysql/3306/mysql.sock ping | grep -c alive UserParameter=mysql.status[*],/etc/zabbix/scripts/checkmysqlperformance.sh $1 $2

5.重启agentd服务器,然后在zabbix server用zabbix_get就可以取到key的值。

6.在zabbix前端可以实时查看SQL语句每秒钟的操作次数。

7.在zabbix前端可以实时查看mysql发送接收的字节数。其中bytes received表示从所有客户端接收到的字节数,bytes sent表示发送给所有客户端的字节数。

zabbix添加mysql监控后没数据怎么办

有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)

zabbix添加mysql监控后没数据怎么办

有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)

如何设计一个mysql性能监控的软件

首先介绍下 pt-stalk,它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于这个工具包,这里就不多介绍了。

pt-stalk 的主要功能是在出现问题时收集 OS 及 MySQL 的诊断信息,这其中包括:

1. OS 层面的 CPU、IO、内存、磁盘、网络等信息;

2. MySQL 层面的行锁等待、会话连接、主从复制,状态参数等信息。

而且 pt-stalk 是一个 Shell脚本,对于我这种看不懂 perl 的人来说比较友好,脚本里面的监控逻辑与监控命令也可以拿来参考,用于构建自己的监控体系。

三、使用

接着我们来看下如何使用这个工具。

pt-stalk 通常以后台服务形式监控 MySQL 并等待触发条件,当触发条件时收集相关诊断数据。

触发条件相关的参数有以下几个:

function:

∘ 默认为 status,代表监控 SHOW GLOBAL STATUS 的输出;

∘ 也可以设置为 processlist,代表监控 show processlist 的输出;

variable:

∘ 默认为 Threads_running,代表 监控参数,根据上述监控输出指定具体的监控项;

threshold:

∘ 默认为 25,代表 监控阈值,监控参数超过阈值,则满足触发条件;

∘ 监控参数的值非数字时,需要配合 match 参数一起使用,如 processlist 的 state 列;

cycles:

∘ 默认为 5,表示连续观察到五次满足触发条件时,才触发收集;

连接参数:host、password、port、socket。

其他一些重要参数:

iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行。

run-time:触发收集后,该参数指定收集多长时间的数据,默认 30 秒。

sleep:该参数指定在触发收集后,sleep 多久后继续监控,默认 300 秒。

interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒。

dest:监控数据存放路径,默认为 /var/lib/pt-stalk。

retention-time :监控数据保留时长,默认 30 天。

daemonize:以后台服务运行,默认不开启。

log:后台运行日志,默认为 /var/log/pt-stalk.log。

collect:触发发生时收集诊断数据,默认开启。

∘ collect-gdb:收集 GDB 堆栈跟踪,需要 gdb 工具。

∘ collect-strace:收集跟踪数据,需要 strace 工具。

∘ collect-tcpmp:收集 tcpmp 数据,需要 tcpmp 工具。

请问zabbix如何通过iis监控sql server?需要配置什么?

2.1 服务端环境准备

Zabbix Server需要运行在CentOS、RedHat Linux、Den等Linux系统上,这里以RHEL作为部署环境。

Root用户安装必须的包,建议配置好yum,通过yum安装下列包,解决包的依赖关系。

LAMP环境

#yum install mysql-server (mysql可以单独安装高版本)

yum install httpd php

其他需要用到的包:

#yum install mysql-devel gcc net-snmp-devel curl-devel perl-DBI php-gd php-mysql php-bcmath php-mbstring php-xml

下载最新的Zabbix安装包(官网:http://www.zabbix.com)到本地,解压

#tar zxvf zabbix-2.4.7.tar.gz

增加zabbix用户和组

#groupadd zabbix

# useradd -g zabbix -m zabbix

2.2 数据库准备

启动MySQL数据库:

#service mysqld start

修改MySQL root用户密码(默认密码为空)

# mysqladmin -uroot -p password root

测试能否正常登陆数据库

#mysql –uroot –proot

创建Zabbix数据库

Mysql> create database zabbix character set utf8;

导入数据库sql脚本

#cd zabbix-2.4.7

# mysql -uroot -proot zabbix < database/mysql/schema.sql

# mysql -uroot -proot zabbix < database/mysql/images.sql

# mysql -uroot -proot zabbix < database/mysql/data.sql

2.3 编译安装

配置编译,prefix是安装后程序目录

# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-unixodbc --with-libcurl -enable-proxy

# make install

2.4 配置文件及web前端文件修改

添加服务端口,添加后如下

# grep zabbix /etc/services

zabbix-agent 10050/tcp # Zabbix Agent

zabbix-agent 10050/udp # Zabbix Agent

zabbix-trapper 10051/tcp # Zabbix Trapper

zabbix-trapper 10051/udp # Zabbix Trapper

添加配置文件

# mkdir -p /etc/zabbix

# cp conf/{zabbix_server.conf,zabbix_agentd.conf} /etc/zabbix

# chmod 400 /etc/zabbix/zabbix_server.conf

# chown zabbix /etc/zabbix/zabbix_server.conf

# chown -R zabbix:zabbix /etc/zabbix

修改Server配置文件

基本不用修改,用默认配置即可,只需修改一项DBPassword=密码(此密码是前面设置的数据库密码)

# vi /etc/zabbix/zabbix_server.conf

修改Agentd配置文件,更改HOST NAME 为本机的主机名

#vi /etc/zabbix/zabbix_agentd.conf

添加web前端php文件

# cd frontends/

# cp -rf php /var/www/html/

# cd /var/www/html

# mv php zabbix

# chown -R zabbix:zabbix zabbix

2.5 web前端安装配置

修改php相关参数

# vi /etc/php.ini 找到如下几项,改成下面的值,前面有;号的要删掉

max_execution_time = 300

date.timezone = Asia/Shanghai

max_input_time = 600

post_max_size = 32M

memory_limit = 128M

mbstring.func_overload = 2

重启apache

#service httpd restart

启动zabbix_server

/etc/init.d/zabbix_server -c /etc/zabbix/zabbix_server.conf start

----------------------------------------------------------------------------------------unixODBC配置

4. MSSQL. The documentation is available on this page:

install necessary packages on Zabbix server:

# yum -y install freetds unixODBC unixODBC-devel

update ODBC driver configuration file:

$ vi /etc/odbcinst.ini

[FreeTDS]

Driver = /usr/lib64/libtdsodbc.so.0

update ODBC configuration file:

$ vi /etc/odbc.ini

[sql1] --为方便 这里最好用ip 表示,容易区分 和server ip 保持一致

Driver = FreeTDS

Server =

PORT = 1433

TDS_Version = 8.0

[sql2]

Driver = FreeTDS

Server =

PORT = 1433

TDS_Version = 8.0

isql -v sql1[sql2]

SQL> SELECT name FROM master..sysdatabases

显示全文