zabbix 4.0监控mysql性能_Zabbix4.0使用percona监控MySQL数据库 ------ 第7章

1. 插件下载

2. 插件安装

接下来安装percona zabbix插件,这个插件是用来监控MySQL的。由于我的MySQL安装在了Zabbix Server(10.0.0.2),所以这里就把插件安装在Zabbix Server上。需要注意的是插件是与Zabbix Agent结合使用的,所以这台Zabbix Server也要安装Zabbix Agent,当然在这之前我们已经在Zabbix Server上安装过Zabbix Agent。

# 下载插件rpm包

[root@Zabbix-server ~]# wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm

# 安装插件

[root@Zabbix-server ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm

警告:percona-zabbix-templates-1.1.8-1.noarch.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID cd2efd2a: NOKEY

准备中... ################################# [100%]

正在升级/安装...

1:percona-zabbix-templates-1.1.8-1 ################################# [100%]

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

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

# 跳转到模板目录下,需要将配置项文件复制到/etc/zabbix/zabbix_agentd.d/目录下

[root@agent zabbix_agentd.d]# cd /var/lib/zabbix/percona/templates/

[root@agent templates]# ls

userparameter_percona_mysql.conf zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml

[root@agent templates]# cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/

3. 导入模板

将/var/lib/zabbix/percona/templates/下的模板文件zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml拷贝出来,通过导入的方式添加这个模板。但是由于/var/lib/zabbix/percona/templates/下的模板版本比较低,所以不能成功导入。所以这里需要下载新的模板,模板下载地址:zbx_percona_mysql_template.xml。

e7fe6a838c1118d5a6e0be7028f651f3.png

d06779277fcef44660c57e18fa07791d.png

4. 模板不兼容的处理

处理方式1:安装一个低版本的Zabbix 2.2,然后再导入这个模板

处理方式2:升级Zabbix 2.2到4.0,然后导出模板

5. 测试取监控项的值

模板导入之后,要重启Zabbix Agent使模板生效。然后开始测试取MySQL监控的项的值。

# 模板导入之后,要重启Zabbix Agent使模板生效

[root@Zabbix-server ~]# systemctl restart zabbix-agent

# 查看监控项

[root@Zabbix-server zabbix_agentd.d]# cat userparameter_percona_mysql.conf

UserParameter=MySQL.Sort-scan,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kt

UserParameter=MySQL.slave-stopped,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jh

UserParameter=MySQL.Com-replace,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jz

...

UserParameter=MySQL.running-slave,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave

[root@Zabbix-server zabbix_agentd.d]# sh -x /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh op

...

# 使用调试模式执行取值的命令

[root@Zabbix-server zabbix_agentd.d]# sh -x /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ij

+ ITEM=

+ HOST=localhost

++ dirname /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh

+ DIR=/var/lib/zabbix/percona/scripts

+ CMD='/usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg'

+ CACHEFILE=/tmp/localhost-mysql_cacti_stats.txt

...

# 执行这个php脚本取值

[root@Zabbix-server zabbix_agentd.d]# /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg

gg:0[root@Zabbix-server zabbix_agentd.d]#

# 如果报MySQL拒绝用户的错误,就需要修改连接MySQL的用户名密码等(如果是二进制安装的,一定要协商MySQL的socket路径)

[root@Zabbix-server zabbix_agentd.d]# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php

$mysql_user = 'zabbix';

$mysql_pass = '';

$mysql_port = 3306;

$mysql_socket = NULL;

# 这时候就可以取值了

[root@Zabbix-server zabbix_agentd.d]# sh /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ih

319916

[root@Zabbix-server zabbix_agentd.d]# /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items oj

oj:6[root@Zabbix-server zabbix_agentd.d]# /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items ih

ih:310965[root@Zabbix-server zabbix_agentd.d]#

监控数据库不是每个监控项都要取一次值,而是监控一次生成缓存(文件),5分钟之后把这个缓存文件删除 再监控下一次。每一次 监控的间隔默认是300s,可以通过修改 /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh 脚本来修改这个值。

# 修改脚本,将取值的默认间隔设置为30s

[root@Zabbix-server zabbix_agentd.d]# vim /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh

# 缓存文件

[root@Zabbix-server zabbix_agentd.d]# ll /tmp/localhost-mysql_cacti_stats.txt

-rw-r--r-- 1 root root 1393 6月 1 11:48 /tmp/localhost-mysql_cacti_stats.txt

27d7e38916b0efbb2581339d8a50c621.png

# 上面手动执行脚本取值生成的缓存文件的用户和用户组都是root,很容易出问题,提示权限拒绝,所以要删除。

[root@Zabbix-server zabbix_agentd.d]# rm -r /tmp/localhost-mysql_cacti_stats.txt

# 使用zabbix_get来取值,这里要把key复制粘贴下来,不要使用gg什么的

[root@Zabbix-server zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -k MySQL.Open-files

5

# 这时候临时的缓存文件属于zabbix用户和zabbix用户组

[root@Zabbix-server zabbix_agentd.d]# ll /tmp/localhost-mysql_cacti_stats.txt

-rw-rw-r-- 1 zabbix zabbix 1398 6月 1 11:56 /tmp/localhost-mysql_cacti_stats.txt

zabbix在执行脚本的时候使用的用户是zabbix

6. 主机链接新模板

467722f105c4029189b975448af5e710.png

4afa6e3928036f5822bdf0882b24879c.png

设置每页显示200行,默认是50行:

31244bf82a286ba28c557ce864b621f9.png

设置间隔,与服务器中的设置一致是30s:

246163007ec2df656bf389a20b9f4728.png

查看最新数据:

84bd4608a3e31d518e8789999199a018.png

7. 主从状态监控项

6cfc2d628d614c6a9fdef02bec9ef6a5.png

对于主库是没有MySQL同步进程的,所以主从状态监控项是取不到的,所以 需要禁用这个监控项。如果是从库,报帐号密码错误,可能是脚本的原因,get_mysql_stats_wrapper.sh:

ITEM=$1

HOST=localhost

DIR=`dirname $0`

CMD="/usr/bin/php -q $DIR/ss_get_mysql_stats.php --host $HOST --items gg"

CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt"

if [ "$ITEM" = "running-slave" ]; then

# Check for running slave

RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`

if [ "$RES" = " Yes, Yes," ]; then

echo 1

else

echo 0

fi

exit

elif [ -e $CACHEFILE ]; then

# Check and run the script

TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_cacti_stats.txt`

TIMENOW=`date +%s`

if [ `expr $TIMENOW - $TIMEFLM` -gt 30 ]; then

rm -f $CACHEFILE

$CMD 2>&1 > /dev/null

fi

else

$CMD 2>&1 > /dev/null

fi

# Parse cache file

if [ -e $CACHEFILE ]; then

cat $CACHEFILE | sed 's/ /\n/g; s/-1/0/g'| grep $ITEM | awk -F: '{print $2}'

else

echo "ERROR: run the command manually to investigate the problem: $CMD"

fi

那就可以试试不要使用zabbix用户取值,使用其它用户,如root用户。所以,需要修改:

RES=`HOME=~zabbix mysql -uroot -p123456 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`

# 这里在没有修改的情况下也是可以取到值的,不过这里是主库,取到的值是0

[root@Zabbix-server zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -k MySQL.running-slave

0

本文分享 CSDN - Erics-1996。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值