推荐一个贺大师的slowquery工具--分析慢查询日志及邮件告警
概述
github:https://github.com/hcymysql/slowquery
今天主要分享一下贺大师的slowquery工具,主要用于分析慢查询日志及邮件告警。
这里参考了开源工具Anemometer图形展示思路,并且把小米Soar工具集成进去,开发在页面上点击慢SQL,就会自动反馈优化建议,从而降低DBA人肉成本,同时也支持自动发送邮件报警功能。
agent客户端慢日志采集分析是结合Percona pt-query-digest工具来实现。
下面介绍下部署过程。
一、监控端及被监控端安装percona-toolkit工具
1、检查和安装与Perl相关的模块
PT工具是使用Perl语言编写和执行的,所以需要系统中有Perl环境。
依赖包检查命令为:
rpm -qa perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL
如果有依赖包缺失,可以使用下面的命令安装:
yum -y install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-TermReadKey.x86_64 perl-Digest-MD5.x86_64
2、安装pt工具包
rpm -ivh percona-toolkit-3.0.13-1.el7.x86_64.rpm
3、验证
安装后,可以通过下面的命令确认是否安装成功:
# pt-query-digest --help # pt-table-checksum --help
如果命令提示可以正常显示,则说明pt工具已经正常安装和使用了。
二、php web mysql环境的搭建
监控端的mysql已经搭建,这里不介绍部署过程
yum install httpd php php-mysql -y
三、安装Slowquery并配置
1、移动slowquery到web目录
mv slowquery /var/www/html/
2、初始化数据
进入slowquery/slowquery_table_schema目录下,导入dbinfo_table_schema.sql和slowquery_table_schema.sql表结构文件到你的运维管理机MySQL里。
注:dbinfo表是保存生产MySQL主库的配置信息。
mysql -uroot -p -e 'create database slowquery default character set utf8;' mysql -uroot -p slowquery < /var/www/html/slowquery/slowquery_table_schema/dbinfo_table_schema.sql mysql -uroot -p slowquery < /var/www/html/slowquery/slowquery_table_schema/slowquery_table_schema.sql
3、录入要监控的MySQL主库配置信息。
3.1、监控端及被监控端增加slowquery账号
set global validate_password_policy=0; grant all privileges on *.* to slowquery@'%' identified by 'xxxxx';
3.2、监控端录入要监控的MySQL主库配置信息
insert into slowquery.dbinfo values (1,'xx.xx.xx.69','fsl_prod','slowquery','xxx',3306); insert into slowquery.dbinfo values (2,'xx.xx.xx.94','tms_prod','slowquery','fxxx',3306);
4、修改配置文件config.php
将里面的配置改成你的运维管理机MySQL的地址(用户权限最好是管理员)。
<?php //将里面的配置改成你的运维管理机MySQL的地址 $con = mysqli_connect("xx.xx.xx.94","slowquery","密码","fsl_prod","3306") or die("数据库链接错误".mysqli_connect_error()); mysqli_query($con,"set names utf8"); ?>
5、修改配置文件soar_con.php(这个功能有点问题,暂时测试不通过)
将里面的配置改成你的运维管理机MySQL的地址(用户权限最好是管理员)。
<?php //-test-dsn soar测试环境,用来分析SQL使用 $test_user='slowquery'; $test_pwd='密码'; $test_ip='xx.xx.xx.94'; $test_port='3306'; $test_db='slowquery'; ?>
篇幅有限,这块内容就介绍到这了,后面会介绍下被监控端部署部分,感兴趣的朋友可以关注下~