当前位置:网站首页>基于ck+redash构建MySQL慢日志+审计日志展示平台
基于ck+redash构建MySQL慢日志+审计日志展示平台
2022-08-03 18:19:00 【墨天轮】
1 背景
业务经常需要通过MySQL慢日志来排查SQL问题。需求主要是:让dba提供一段时间内慢日志明细和慢日志统计。
早期的处理方式是:登录数据库服务器,1)下载慢日志文件发给开发,作为明细;2)通过pt-query-digest命令,生成一段时间内的慢日志报表,作为统计;
随着业务线的扩展,管理的自建MySQL实例数量越来越多,业务主库和只读从库的数量达到200+。随之而来的,通过慢查询日志来解决业务问题的需求越来越多。
原来的处理方式太耽误时间,尤其碰到慢日志文件较大的时候(每天会对日志文件进行切割,但有的实例慢日志文件仍然很大)。
2 痛点&诉求
后来的解决方法是:通过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控制台上的功能搞的。
后面会抽时间将整个的部署都形成文章。
边栏推荐
- MySQL database account management and optimization
- 你想知道的 Watch App 开发
- 常见荧光染料修饰多种基团及其激发和 发射波长数据一览数据
- Blender script 删除所有幽灵对象
- Higher mathematics - chapter ten infinite series - constant term series
- LeetCode - 102. 二叉树的层序遍历;110. 平衡二叉树;098. 验证二叉搜索树
- select......for update 语句的功能是什么? 会锁表还是锁行?
- Jenkins CI平台(二)
- 5000元价位高性能轻薄本标杆 华硕无双高颜能打
- 爬虫之selenium
猜你喜欢
随机推荐
mysql之数据库账户管理与优化
Flask框架——项目可安装化
SQL代码需要供其他人复用,为什么传统的复制代码不可靠?
ASA归因:如何评估关键词的投放价值
WPF implements column chart
多肽介导PEG磷脂——靶向功能材料之DSPE-PEG-RGD/TAT/NGR/APRPG
Share 14 JS functions you must know
七夕
Blender script 删除所有幽灵对象
STM32——LCD—FSMC原理简介
在线监控机房内的UPS电源及运行环境,解决方案来了
cell delay and net delay
爬虫之selenium
【汇编语言02】第2章 寄存器——理论知识
2021年数据泄露成本报告解读
dd命令:用于读取、转换并输出数据
二叉树求和路径问题解答与注记
Online monitoring of UPS power supply and operating environment in the computer room, the solution is here
PHP基础笔记-NO.1
PHP Basic Notes-NO.2