15. 案例:使用 percona 配置 MySQL 监控

15. 案例:使用 percona 配置 MySQL 监控

15.1 自定义配置信息(可以作为自定义参考)

[root@localhost scipts]# vim mysql.sh 
#!/bin/bash
mysql="mysql -ucheck -p123"
case $1 in 
	# mysql主从状态
	slave_status)
		$mysql -e "show slave status\G" |grep "Yes" |wc -l
	;; 
	
	# mysql流量 接受
	Bytes_received)
		mysqladmin extended-status |grep "Bytes_received" |awk '{print $4}'
	;;
	
	# mysql流量 发送
	Bytes_sent)
		mysqladmin extended-status |grep "Bytes_sent" |awk '{print $4}'
	;;
	
	# mysql常规操作 增
	Com_insert)
		mysqladmin extended-status |grep -w "Com_insert" |awk '{print $4}'
	;;
	
	# mysql常规操作 删
	Com_delete)
		mysqladmin extended-status |grep -w "Com_delete" |awk '{print $4}'
	;;
	
	# mysql常规操作 改
	Com_update)
		mysqladmin extended-status |grep -w "Com_update" |awk '{print $4}'
	;;
	
	# mysql常规操作 查
	Com_select)
		mysqladmin extended-status |grep -w "Com_select" |awk '{print $4}'
	;;
	
	# mysql tps
	tps)
		mysqladmin status |awk '{print $6/$2}'
	;;
	
	# mysql qps=(rollback+commit)/uptime
	qps)
		rollback=$(mysqladmin extended-status |grep -w "Com_rollback" |awk '{print $4}')
		commit=$(mysqladmin extended-status |grep -w "Com_commit" |awk '{print $4}')
		uptime=$(mysqladmin status |awk '{print $2}')
		count=$[$rollback+$commit]
		echo "$count $uptime" > /tmp/a.txt
		cat /tmp/a.txt |awk '{print $1/$2}'
	;;
	
	# 库大小 我们这里拿mysql库举例
	db)
		$mysql -e "select sum(data_length) from information_schema.tables where table_schema='mysql'" |sed -n '2p'
	;;
	
	# 表大小 我们这里拿mysql下面的user表举例
	tb)
		$mysql -e "select sum(data_length) from information_schema.tables where table_schema='mysql' and table_name='user'" |sed -n '2p'
	;;
esac


Aborted_clients 		#由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects 		#尝试已经失败的MySQL服务器的连接的次数。
Connections 			#试图连接MySQL服务器的次数。
Created_tmp_tables 		#当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads 	#正在使用的延迟插入处理器线程的数量。
Delayed_writes 			#用INSERT DELAYED写入的行数。
Delayed_errors 			#用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands			#执行FLUSH命令的次数。
Binlog_cache_disk_use 	#表示因为我们binlog_cache_size设计的内存不足导致缓存二进制日志用到了临时文件的次数(做监控)
Binlog_cache_use  		#表示 用binlog_cache_size缓存的次数


Com_xxx 	#语句计数变量表示每个xxx 语句执行的次数。每类语句有一个状态变量。例如,Com_delete和Com_insert分别统计DELETE 和INSERT语句执行的次数。

Handler_delete 			#请求从一张表中删除行的次数。(监控)
Handler_read_first 		#请求读入表中第一行的次数。
Handler_read_key 		#请求数字基于键读行。
Handler_read_next 		#请求读入基于一个键的一行的次数。
Handler_read_rnd 		#请求读入基于一个固定位置的一行的次数。
Handler_update 			#请求更新表中一行的次数。(监控)
Handler_write 			#请求向表中插入一行的次数。(监控)

Key_blocks_used 		#用于关键字缓存的块的数量。
Key_read_requests 		#请求从缓存读入一个键值的次数。
Key_reads 				#从磁盘物理读入一个键值的次数。(监控)
Key_write_requests 		#请求将一个关键字块写入缓存次数。
Key_writes 				#将一个键值块物理写入磁盘的次数(监控)
Max_used_connections 	#同时使用的连接的最大数目。(监控)

Not_flushed_key_blocks 		#在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows 	#在INSERT DELAY队列中等待写入的行的数量。

Open_tables 		#打开表的数量。(监控)
Open_files 			#打开文件的数量。(监控)
Open_streams 		#打开流的数量(主要用于日志记载)
Opened_tables 		#已经打开的表的数量
Questions 			#发往服务器的查询的数量。(监控)

Slow_queries 		#要花超过long_query_time时间的查询数量。
Threads_connected 	#当前打开的连接的数量。(监控)
Threads_running 	#不在睡眠的线程数量。(监控)
Uptime 		#服务器工作了多少秒。(监控)

15.2 使用 percona 插件监控 MySQL(推荐使用)

# 下载地址
https://www.percona.com/downloads/percona-monitoring-plugins/

个人分享云盘:
链接:https://pan.baidu.com/s/1X4vHJ68ND_8nuHSOkxTqww 
提取码:fw0k
# 安装 percona ,装在有数据库的机器上
[root@zabbix ~]# 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

# percona是php写的,所以agent连接MySQL必须安装php和php-mysql
yum install php php-mysql -y

在这里插入图片描述

# 模板配置文件
/var/lib/zabbix/percona/templates
# 脚本文件
/var/lib/zabbix/percona/scripts

15.3 下载模板并导入

[root@zabbix ~]# cd /var/lib/zabbix/percona/templates
[root@zabbix templates]# ls
userparameter_percona_mysql.conf  zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
[root@zabbix templates]# ll
总用量 284
-rw-r--r-- 1 root root  18866 110 2018 userparameter_percona_mysql.conf
-rw-r--r-- 1 root root 269258 110 2018 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
[root@zabbix templates]# sz zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml 

[root@zabbix templates]# 

在这里插入图片描述

在这里插入图片描述

导入模板失败:原因是因为这个模板版本不同 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1 这个是 2. 的版本
解决方案:百度找一个新的模板导入
链接:https://pan.baidu.com/s/1RgAHTryhjEDoaB-6xHt2hg 
提取码:e4xu

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

15.4 修改配置文件

# 将配置文件 userparameter_percona_mysql.conf 移动到 /etc/zabbix/zabbix_agentd.d 目录下。 /etc/zabbix/zabbix_agentd.d/ 目录下已有 .conf 文件时则将文件内容复制到 .conf 文件中
mv /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
# 修改 ss_get_mysql_stats.php 文件
[root@zabbix]# cd /var/lib/zabbix/percona/scripts/
[root@zabbix scripts]# ls
get_mysql_stats_wrapper.sh  ss_get_mysql_stats.php
[root@zabbix scripts]# vim ss_get_mysql_stats.php 

# 这里默认的数据库用户名和密码是不对的,要修改成我们实际使用的,修改前也可以测试一下用户密码
[root@zabbix scripts]# mysql -uzabbix -p123456 -e  'show status' | head -3
Variable_name	Value
Aborted_clients	0
Aborted_connects	2
[root@zabbix scripts]#

在这里插入图片描述

在这里插入图片描述

# 修改 /var/lib/zabbix/percona/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=`HOME=~zabbix mysql -uroot -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`

# 在这里要添加上用户名和密码,因为这里需要使用超级用户查询主从状态,或者用户有超级用户的权限,不然会报错。不过主库上可以禁用,在从库上启用。
Value "ERROR 1227 (42000) at line 1: Access denied; you need (at least one of) the SUPER,REPLICATION CLIENT privilege(s) for this operation
0" of type "string" is not suitable for value type "Numeric (unsigned)"

在这里插入图片描述

在这里插入图片描述

15.5 添加模板

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值