简而言之使用 OTel
filelog 接收器在 ClickStack 中收集并可视化 MySQL 错误日志和慢查询日志。包含演示数据集和预构建仪表盘。与现有 MySQL 集成
前置条件
- 正在运行的 ClickStack 实例
- 已安装 MySQL (版本 5.7 或更高)
- 具有修改 MySQL 配置文件的权限
- 有足够的磁盘空间存储日志文件
1
配置 MySQL 日志
MySQL 支持多种日志类型。为配合 OpenTelemetry 实现更全面的监控,我们建议启用错误日志和慢查询日志。my.cnf 或 my.ini 配置文件通常位于:- Linux (apt/yum):
/etc/mysql/my.cnf或/etc/my.cnf - macOS (Homebrew):
/usr/local/etc/my.cnf或/opt/homebrew/etc/my.cnf - Docker:配置通常通过环境变量或挂载的配置文件来设置
[mysqld] 部分中添加或修改以下设置:慢查询日志会记录执行时间超过
long_query_time 秒的查询。请根据应用程序的性能要求调整该阈值。设置过低会产生过多日志。2
创建自定义 OTel collector 配置
ClickStack 支持通过挂载自定义配置文件并设置环境变量,来扩展基础 OpenTelemetry Collector 配置。自定义配置会与由 HyperDX 通过 OpAMP 管理的基础配置合并。创建一个名为mysql-logs-monitoring.yaml 的文件,内容如下:- 从标准位置读取 MySQL 错误日志和慢查询日志
- 处理多行日志条目 (慢查询会跨多行)
- 解析这两种日志格式,提取结构化字段 (level、error_code、query_time、rows_examined)
- 保留原始日志时间戳
- 添加
source: mysql-error和source: mysql-slow属性,便于在 HyperDX 中过滤 - 通过专用管道将日志发送到 ClickHouse exporter
之所以需要两个 receiver,是因为 MySQL 错误日志和慢查询日志的格式完全不同。
time_parser 使用 gotime layout 来处理 MySQL 带时区偏移的 ISO8601 时间戳格式。3
配置 ClickStack 以加载自定义配置
要在现有的 ClickStack 部署中启用自定义 collector 配置,请将自定义配置文件挂载到/etc/otelcol-contrib/custom.config.yaml,并将环境变量 CUSTOM_OTELCOL_CONFIG_FILE 设置为 /etc/otelcol-contrib/custom.config.yaml。更新 ClickStack 的部署配置:确保 ClickStack collector 具备读取 MySQL 日志文件所需的适当权限。使用只读挂载 (
:ro) ,并遵循最小权限原则。4
在 HyperDX 中验证日志
配置完成后,登录 HyperDX 并确认日志已正常流入:- 进入搜索视图
- 将 source 设为 Logs
- 使用
source:mysql-error或source:mysql-slow作为过滤条件,查看 MySQL 专属日志 - 你应该会看到结构化的日志记录,其中包含
level、error_code、message(错误日志) 以及query_time、rows_examined、query(慢查询日志) 等字段
演示数据集
1
2
3
4
在 HyperDX 中验证日志
ClickStack 运行后:- 稍等片刻,让 ClickStack 完成初始化 (通常需要 30–60 秒)
- 打开 HyperDX 并登录账户 (你可能需要先创建账户)
- 进入搜索视图,将数据源设为
Logs - 将时间范围设置为 2025-11-13 00:00:00 - 2025-11-16 00:00:00
- 你应会看到总共 40 条日志 (30 条带有
source:mysql-demo-error的错误日志 + 10 条带有source:mysql-demo-slow的慢查询日志)
如果没有立即看到全部 40 条日志,请等待约一分钟,让 collector 完成处理。如果等待后日志仍未出现,请运行
docker restart clickstack-demo,再过一分钟后重新检查。这是 OpenTelemetry filelog receiver 在使用 start_at: beginning 批量加载已有文件时的已知问题。生产部署使用 start_at: end 时,会在日志写入时进行实时处理,因此不会遇到这个问题。时区显示HyperDX 会按浏览器的本地时区显示时间戳。演示数据的时间范围为 2025-11-14 00:00:00 - 2025-11-15 00:00:00 (UTC)。较宽的时间范围可确保你无论身在何处都能看到演示日志。看到日志后,你可以将范围缩小到 24 小时,以获得更清晰的可视化效果。
仪表盘与可视化
1
仪表盘配置文件
2
导入预构建仪表盘
- 打开 HyperDX 并进入“仪表盘”部分
- 点击右上角省略号菜单中的 Import Dashboard
- 上传
mysql-logs-dashboard.json文件,然后点击 Finish Import
3
查看仪表盘
仪表盘创建后,所有可视化都将预先配置完成。对于演示数据集,请将时间范围设置为 2025-11-14 00:00:00 - 2025-11-15 00:00:00 (UTC) (请根据你的本地时区调整) 。默认情况下,导入的仪表盘不会指定时间范围。
故障排查
自定义配置未加载
HyperDX 中未显示日志
慢查询日志未出现
日志解析不正确
后续步骤
- 为关键事件设置告警 (如连接失败、超过阈值的慢查询、错误激增)
- 按查询模式创建用于分析慢查询的自定义仪表盘
- 根据观察到的查询性能表现调优
long_query_time