暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

基于ck+redash构建MySQL慢日志+审计日志展示平台

原创 冯刚 2022-08-02
2907

1 背景

业务经常需要通过MySQL慢日志来排查SQL问题。需求主要是:让dba提供一段时间内慢日志明细和慢日志统计。

早期的处理方式是:登录数据库服务器,1)下载慢日志文件发给开发,作为明细;2)通过pt-query-digest命令,生成一段时间内的慢日志报表,作为统计;

随着业务线的扩展,管理的自建MySQL实例数量越来越多,业务主库和只读从库的数量达到200+。随之而来的,通过慢查询日志来解决业务问题的需求越来越多。

原来的处理方式太耽误时间,尤其碰到慢日志文件较大的时候(每天会对日志文件进行切割,但有的实例慢日志文件仍然很大)。

痛点&诉求

后来的解决方法是:通过rsyslog+kafka,将慢日志明细写入到ELK,开发可以通过数据库对应的主机名来筛选明细。

虽然kibana上可以定制可视化的查询(Visualize),以及将可视化查询通过看板(Dashboard)展示,但是有两个问题:1)定制工作量大;2)没办法实现慢查询统计功能,比如将select * from t1 where id=1 和 select * from t1 where id=2作为一个语句:select * from t1 where id=?来统计次数;

第二个解决方法是:利用https://github.com/hhyo/Archery自带的慢查询功能(pt-query-digest命令,需要把慢日志写入表中),但是问题是:1)改造工作量大;2)大量查询的话,可能会影响别的功能使用。



3 思路

后来有幸看到一篇文章:https://cloud.tencent.com/developer/article/1986852


开始研究clicktail(不再维护,用的人较少,但是能拿来用,有开发能力的大佬可以忽略。。。),https://github.com/Altinity/clicktail

clicktail介绍:https://altinity.com/blog/2018/3/12/clicktail-introduction

就是通过clicktail,将慢日志写入clickhouse,clickhouse展示慢查询统计和明细:https://www.percona.com/blog/2018/02/28/analyze-raw-mysql-query-logs-clickhouse/


4 架构

web展示的话,用的公司现有的redash(vue大佬可以忽略)。

链路就是: mysql+clicktail+clickhouse+redash


5 展示


明细和统计,是参考阿里云rds控制台上的功能搞的。



后面会抽时间将整个的部署都形成文章。

ClickHouse集群部署文档:https://www.modb.pro/db/452026

Clicktail部署文档:https://www.modb.pro/db/509227

Redash部署文档:

ClickHouse分析MySQL慢查询文档:https://www.modb.pro/db/511068

ClickHouse常用操作:https://www.modb.pro/db/512383

Clicktail部署拉取MySQL慢日志及常见问题:https://www.modb.pro/db/509227

Clicktail部署拉取MySQL审计日志及常见问题:https://www.modb.pro/db/549081

最后修改时间:2022-11-09 13:52:57
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论