上一篇 下一篇 分享链接 返回 返回顶部

基于1Panel的MySQL慢日志统计钉钉推送

发布人: 发布时间:5 天前 阅读量:33

背景

随着业务量增长,MySQL 数据库中的慢查询会逐渐增多。慢日志记录了执行时间较长的 SQL,是定位性能瓶颈的重要依据。传统运维需要手动登录服务器查看日志,效率较低。借助开源面板 1Panel 的任务编排能力,配合脚本和钉钉群机器人,可实现每日慢日志统计并自动推送,帮助运维人员及时发现问题。

方案概述

整体思路:在 MySQL 服务端开启慢查询日志,利用脚本对日志文件进行统计分析,再将结果通过钉钉机器人推送到群内。通过 1Panel 的“计划任务”功能,可以定时运行脚本,形成一个完整的运维闭环。

1. 开启 MySQL 慢日志

在 MySQL 配置文件中启用慢日志记录,并设置合理的阈值。例如:

  • slow_query_log = ON
  • slow_query_log_file 指定日志文件路径
  • long_query_time = 2,表示执行时间超过 2 秒的 SQL 才会被记录

2. 编写统计脚本

建议使用 Python 或 Shell 编写脚本,从慢日志中解析出关键字段,包括:查询时间、锁等待时间、返回行数、扫描行数以及 SQL 文本。按 SQL 模板归类后,统计出耗时最长的 Top N 或出现频率最高的慢查询,便于快速定位共性问题。

脚本需要处理日志轮转,例如读取昨日的日志文件,避免与当前活跃日志冲突。同时应过滤重复或无意义的 SQL,并对 SQL 文本进行截断,避免推送内容过长。

3. 接入钉钉机器人

在钉钉群中添加自定义机器人,获取 Webhook 地址和加签密钥。统计脚本生成 Markdown 格式的消息,使用 curl 或 Python 请求库调用 Webhook 发送到钉钉群。消息中应包含日期、慢查询总量、耗时最高的 SQL 及建议优化方向等。

4. 定时任务设置

在 1Panel 面板中进入“计划任务”,创建自定义任务,执行周期设置为“每日”,指定脚本执行时间,如每天上午 10:00。任务日志可以保留在面板中,便于后续排查。

运维价值

  • 提升感知时效:不用每天登录服务器,钉钉群内即可查看前一日慢日志汇总。
  • 降低排查成本:统计结果按耗时和影响面排序,直接定位最需要优化的 SQL。
  • 支持趋势分析:通过每日数据积累,可以观察慢查询数量变化趋势,验证索引优化或参数调整效果。
  • 促进团队协作:开发人员也能在群里看到相关 SQL 记录,推动前后端共同处理性能问题。

结语

通过 1Panel 与钉钉结合,MySQL 慢日志的日常巡检被自动化。运维人员只需定期关注推送内容即可掌握数据库健康状态,将更多精力放在结构优化和业务增长上。该实践也适用于 PostgreSQL 等其他数据库的日志统计,可根据实际环境灵活适配。

目录结构
全文
企业微信 企业微信
微信公众号 微信公众号
服务热线: 400-790-1688
电子邮箱: 3310008520@qq.com