Slowquery 是一个开源的 PHP Web 应用程序,旨在帮助数据库管理员( DBA )和开发者更好地管理和监控 MySQL 数据库的慢查询日志。它提供了一个简单易用的界面,可以方便地查看和分析慢查询日志,并提供了许多有用的功能,例如慢查询邮件报警和自动发送慢查询分析报告等。
https://github.com/hcymysql/slowquery
以下是主要功能和特点:
显示慢查询日志:提供了一个实时更新的界面,可以显示数据库中的慢查询日志,包括执行时间、执行次数、SQL 语句等信息。用户可以通过界面轻松地查看和分析慢查询日志,找到哪些查询是慢查询,并了解它们的执行情况。
慢查询搜索和筛选:提供了强大的搜索和筛选功能,使用户可以快速找到感兴趣的慢查询。用户可以通过执行时间、执行次数、SQL 语句等多个维度进行搜索和筛选,还可以对搜索结果进行排序和过滤,以便更好地了解慢查询的情况。
慢查询分析:提供了慢查询分析功能,可以对慢查询进行深入的分析和诊断。它可以将慢查询与数据库的表结构进行关联,显示每个表的查询次数和平均执行时间等信息,使用户更好地了解慢查询的本质和根源。
邮件报警:支持配置邮件报警功能,可以自动发送慢查询分析报告和警报信息给指定的邮箱。用户可以根据需要设置报警阈值和报警时间等参数,以便及时了解数据库的性能问题。
参考了开源工具 Anemometer 图形展示思路,开发在页面上点击慢 SQL ,就会自动反馈优化建议,同时也支持自动发送邮件报警功能。
agent 客户端慢日志采集分析是结合 Percona pt-query-digest 工具来实现。
服务端部署 拉取镜像
shell> docker pull docker.io/hcymysql/slowquery:2023-09-13
启动
shell> docker run -itd -e "TERM=xterm-256color" --privileged --name slowquery -p 80:80 -p 3306:3306 <IMAGE ID> /usr/sbin/init
进入 docker 里,启动 httpd 服务
shell> docker exec -it slowquery /bin/bash shell> systemctl start httpd.service
录入你要监控的 MySQL 主库配置信息
mysql> INSERT INTO slowquery.dbinfo VALUES (1,'192.168.148.101','test','admin','123456',3306);
客户端部署
进入到 slowquery/client_agent_script 目录下,把 slowquery_analysis.sh 脚本拷贝到生产 MySQL 主库上做慢日志分析推送,并修改里面的配置信息
定时任务( 10 分钟一次)
*/10 * * * * /bin/bash /usr/local/bin/slowquery_analysis.sh > /dev/null 2>&1
打开浏览器,输入 http://yourIP/slowquery/slowquery.php 慢查询邮件推送报警配置
进入到 slowquery/alarm_mail/ 目录里,修改 sendmail.php 配置信息
定时任务(每隔 3 小时慢查询报警推送一次)
0 */3 * * * cd /var/www/html/slowquery/alarm_mail;/usr/bin/php /var/www/html/slowquery/alarm_mail/sendmail.php