使用 bcc 工具观测 mysql:1)dbstat功能:将 MySQL/PostgreSQL 的查询延迟汇总为直方图
语法:
dbstat [-h] [-v] [-p [PID [PID ...]]] [-m THRESHOLD] [-u] [-i INTERVAL] mysql,postgres
选项:
mysql,postgres # 观测哪种数据库-h, --help # 显示帮助然后退出-v, --verbose # 显示BPF程序-p [PID [PID ...]], --pid [PID [PID ...]] # 要观测的进程号,空格分隔-m THRESHOLD, --threshold THRESHOLD # 只统计查询延迟比此阈值高的-u, --microseconds # 以微秒为时间单位来显示延迟(默认单位:毫秒)-i INTERVAL, --interval INTERVAL # 打印摘要的时间间隔(单位:秒)
示例:
# 使用 sysbench 在被观测数据库上执行 select[root@liuan tools]# dbstat mysql -p `pidof mysqld` -uTracing database queries for pids 3350 slower than 0 ms...^C[14:42:26] query latency (us)
2)dbslower
功能:跟踪 MySQL/PostgreSQL 的查询时间高于阈值
语法:
dbslower [-h] [-v] [-p [PID [PID ...]]] [-x PATH] [-m THRESHOLD] mysql,postgres
参数:
mysql,postgres # 观测哪种数据库 -h, --help # 显示帮助然后退出 -v, --verbose # 显示BPF程序 -p [PID [PID ...]], --pid [PID [PID ...]] # 要观测的进程号,空格分隔 -m THRESHOLD, --threshold THRESHOLD # 只统计查询延迟比此阈值高的 -x PATH, --exe PATH # 数据库二进制文件的位置
示例:
# 使用sysbench在被观测数据库上执行update_index [root@liuan tools]# dbslower mysql -p `pidof mysqld` -m 2 Tracing database queries for pids 3350 slower than 2 ms... TIME(s) PID MS QUERY 1.765087 3350 2.996 UPDATE sbtest1 SET k=k+1 WHERE id=963 3.187147 3350 2.069 UPDATE sbtest1 SET k=k+1 WHERE id=628 5.945987 3350 2.171 UPDATE sbtest1 SET k=k+1 WHERE id=325 7.771761 3350 3.853 UPDATE sbtest1 SET k=k+1 WHERE id=5955. 使用限制
bcc 基于 eBPF 开发(需要 Linux 3.15 及更高版本)。bcc 使用的大部分内容都需要 Linux 4.1 及更高版本。
"bcc.usdt.USDTException: failed to enable probe 'query__start'; a possible cause can be that the probe requires a pid to enable" 需要 MySQL 具备 Dtrace tracepoint。
https://blog.csdn.net/natmazz/article/details/90581490
https://www.cnblogs.com/01-single/p/10602610.html
一、环境需求
主机A: zabbix-server
主机B: zabbix-agent/mysql从
二、主机B操作
1、添加监控脚本
vim /data/zabbix/mysql_slave_check.sh
#!/bin/bash
#2019年03月26日16:25
#auto check mysql master and slave status
#author dyw
/usr/local/mysql/bin/mysql -uroot -p123456 -e "show slave status \\G;" | grep -E \'Slave_IO_Running: Yes|Slave_SQL_Running: Yes\' | grep -c Yes
2、添加执行权限
chmod +x /data/zabbix/mysql_slave_check.sh
3、配置zabbix-agent配置文件
vim /etc/zabbix/zabbix_agentd.d/mysql_slave.conf
UserParameter=mysql.ms.check,/data/zabbix/mysql_slave_check.sh
4、重启zabbix-agent
# service zabbix-agent restart
Shutting down Zabbix agent: [ OK ]
Starting Zabbix agent: [ OK ]
5、测试
zabbix-server上执行命令:
# zabbix_get -s 172.31.12.91 -k mysql.ms.check
2
三、配置zabbix-server
1、找到从库主机,点击监控项
2、创建监控项,键值输入agentd下配置文件mysql_slave.conf里的值mysql.ms.check,输入完成后,点击下面的添加按钮
3、创建图形
输入名称,然后在监控项里选择刚才添加的监控项,最后点击最下面的添加按钮
完成后在图形预览界面看下效果:
4、创建触发器,设置邮件报警
点击添加按钮,完成后如图所示:
5、测试,把触发器值改为3,然后点击更新
停一会就会有报警邮件: