MySQL 可观测集成指南:指标、慢查询与语句级分析

通过观测云 DataKit 接入 MySQL,统一采集实例指标、慢查询日志与 DBM 语句级性能数据,并配置可视化、告警和 APM 关联排障。

最佳实践
MySQL 指标、慢查询日志和 DBM 语句级分析统一接入观测云

MySQL 是企业系统里最常见的数据库,也是故障高发区——慢查询、连接耗尽、主从延迟、锁等待,任何一类问题都能直接传导到业务接口。本文介绍如何通过观测云 DataKit接入 MySQL,实现指标、慢查询日志与语句级性能数据的统一采集,并配置可视化与告警。

集成概览

观测云 MySQL 集成基于一体式采集器 DataKit,覆盖三类数据:

  • 指标:连接数、QPS/TPS、慢查询数、InnoDB Buffer Pool 命中率、主从复制延迟、表空间等;
  • 慢查询日志:采集慢日志文件,经 Pipeline 内置 MySQL 解析模板结构化,提取执行耗时、锁等待、扫描行数、SQL 语句等字段;
  • 语句级指标(DBM):按归一化 SQL 聚合的执行次数、平均耗时、返回行数分布,支持跨实例搜索与聚合,并可关联 SQL 对象、活动采样与执行计划——回答"到底是哪条 SQL 拖慢了库"。

三类数据进入观测云同一数据底座后,可与应用链路(APM)按标签关联:从一次慢接口直接下钻到其触发的慢 SQL。

前置条件

  • 已安装 DataKit(支持主机直装、Kubernetes DaemonSet 等方式),并正常上报数据;
  • MySQL 侧准备一个只读监控账号,授予必要权限:
CREATE USER 'datakit'@'%' IDENTIFIED BY '<密码>';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'datakit'@'%';
  • MySQL 8.0 建议开启 performance_schema(语句级分析依赖);需要采集慢日志时,确认 slow_query_log = ON 并记录日志文件路径。

延伸阅读日志管理新手入门指南

接入步骤

1. 开启指标采集

进入 DataKit 配置目录,复制 MySQL 采集器样例并启用:

cd /usr/local/datakit/conf.d/db
cp mysql.conf.sample mysql.conf

核心配置项:

[[inputs.mysql]]
  host = "127.0.0.1"
  port = 3306
  user = "datakit"
  pass = "<密码>"
  interval = "10s"
  innodb = true        # InnoDB 引擎指标
  replication = true   # 主从复制状态与延迟
  [inputs.mysql.tags]
    service = "order-db"
    env = "prod"

标签建议与全局规范保持一致(service/env/version 等),这是后续与应用链路、基础设施指标关联的前提。保存后重启 DataKit 生效。

2. 接入慢查询日志

MySQL 慢日志是非结构化文本,接入的关键是 Pipeline 解析。观测云内置 MySQL 慢日志解析模板,在日志采集中指定对应 Pipeline 即可把原始行切割为结构化字段:

[[inputs.logging]]
  logfiles = ["/var/log/mysql/slow.log"]
  source = "mysql-slowlog"
  service = "order-db"
  pipeline = "mysql.p"

解析后,慢日志中的查询耗时(Query_time)、锁等待(Lock_time)、扫描行数(Rows_examined)、SQL 原文都成为可筛选、可聚合的字段——可以直接回答"过去一小时执行超过 2 秒的 SQL 有哪些、都来自哪个服务"。

3. 开启语句级分析(DBM)

在采集器配置中启用 DBM 能力后,DataKit 会对 SQL 做归一化处理(把 SELECT * FROM orders WHERE id = 123 归一为 SELECT * FROM orders WHERE id = ?),按归一化语句聚合性能指标。这样同一条 SQL 无论参数如何变化,都能看到一个整体的执行画像:执行次数、平均/P95 耗时、影响行数,并可下钻到具体执行计划与活动采样。跨实例场景下,还能按归一化哈希搜索"哪几个实例都在执行这条慢 SQL"。

可视化与告警

接入完成后:

延伸阅读2026 企业级日志监控与存储平台选型指南:深度对比主流产品存储成本,查询性能与功能

  • 内置视图:观测云数据库监控为 MySQL 提供开箱即用的监控视图,覆盖连接、吞吐、InnoDB、复制等核心面板,无需从零搭看板;
  • 建议告警(用监控器配置,按业务容忍度定阈值):
检测项 建议阈值起点 说明
连接数使用率 > 80% Threads_connected / max_connections
慢查询数 环比突增 用突变检测比固定阈值更有效
主从复制延迟 > 30s Seconds_Behind_Master
实例存活 不可达即告警 基础设施存活检测
Buffer Pool 命中率 < 99% InnoDB 性能晴雨表
  • 联动排障:在 APM 中发现接口变慢 → 下钻调用链 → 定位到慢 SQL → 在 MySQL 仪表板确认实例资源水位,整条路径在同一平台内完成。

常见问题

Q:采集会对 MySQL 性能有影响吗?

指标采集本质是周期性执行只读状态查询,开销通常在可忽略范围;语句级分析基于 performance_schema,建议在压测环境先行验证,生产环境按需调整采样。

Q:RDS、PolarDB 等云上数据库能接吗?

可以。云数据库通过云监控 API 集成接入指标(观测云提供阿里云 RDS 等云产品集成),慢日志与语句级能力视云厂商开放程度而定;自建 MySQL 则用本文的 DataKit 直采方式。

Q:历史慢日志会补采吗?

日志采集默认从当前位置开始增量采集,历史文件的补采与留存策略可在配置中调整,注意大体积历史文件会推高当日写入量。

本文基于观测云公开文档整理,采集器配置项以 DataKit 官方文档最新版本为准。观测云提供650+ 技术栈与云服务集成模板,覆盖数据库、中间件、云平台与应用运行时。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台