简而言之使用 OTel
filelog 接收器在 ClickStack 中收集并可视化 PostgreSQL 服务器日志 (CSV 格式) 。包含演示数据集和预置仪表盘。与现有 PostgreSQL 集成
前置条件
- 正在运行的 ClickStack 实例
- 已安装 PostgreSQL (9.6 或更高版本)
- 具有修改 PostgreSQL 配置文件的权限
- 有足够的磁盘空间存储日志文件
1
配置 PostgreSQL 日志
PostgreSQL 支持多种日志格式。为了便于使用 OpenTelemetry 进行结构化解析,我们建议使用 CSV 格式,因为它能提供一致且易于解析的输出。postgresql.conf 文件通常位于:- Linux (apt/yum):
/etc/postgresql/{version}/main/postgresql.conf - macOS (Homebrew):
/usr/local/var/postgres/postgresql.conf或/opt/homebrew/var/postgres/postgresql.conf - Docker: 配置通常通过环境变量或挂载的配置文件来设置
postgresql.conf 中添加或修改以下设置:本指南使用 PostgreSQL 的
csvlog 格式,以便进行可靠的结构化解析。如果你使用的是 stderr 或 jsonlog 格式,则需要相应调整 OpenTelemetry Collector 的配置。2
创建自定义 OTel collector 配置
ClickStack 支持通过挂载自定义配置文件并设置环境变量来扩展基础 OpenTelemetry Collector 配置。该自定义配置会与 HyperDX 通过 OpAMP 管理的基础配置合并。创建一个名为postgres-logs-monitoring.yaml 的文件,内容如下:- 从 PostgreSQL CSV 日志的标准位置读取日志
- 处理多行日志条目 (错误通常会跨越多行)
- 解析包含所有标准 PostgreSQL 日志字段的 CSV 格式
- 提取时间戳,以保留原始日志时间
- 添加
source: postgresql属性,以便在 HyperDX 中过滤 - 通过专用管道将日志发送到 ClickHouse 导出器
- 您只需在自定义配置中定义新的接收器和管道
- 处理器 (
memory_limiter、transform、batch) 和导出器 (clickhouse) 已在基础 ClickStack 配置中定义,您只需按名称引用它们 csv_parser操作符会将所有标准 PostgreSQL CSV 日志字段提取为结构化属性- 此配置使用
start_at: end,以避免在 collector 重启时重新摄取日志。测试时,可改为start_at: beginning以立即查看历史日志。 - 调整
include路径,使其与您的 PostgreSQL 日志目录位置一致
3
配置 ClickStack 以加载自定义配置
要在现有的 ClickStack 部署中启用自定义 collector 配置,您必须:- 将自定义配置文件挂载到
/etc/otelcol-contrib/custom.config.yaml - 设置环境变量
CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml - 挂载 PostgreSQL 日志目录,以便 collector 能够读取其中的日志
选项 1:Docker Compose
更新 ClickStack 部署配置:选项 2:Docker 运行 (All-in-One 镜像)
如果你使用的是通过 docker run 启动的 All-in-One 镜像:确保 ClickStack collector 具备读取 PostgreSQL 日志文件所需的适当权限。在生产环境中,使用只读挂载 (
:ro) ,并遵循最小权限原则。4
在 HyperDX 中验证日志
配置完成后,登录 HyperDX,确认日志已正常流入:- 前往搜索视图
- 将 source 设置为 Logs
- 使用
source:postgresql过滤,以查看 PostgreSQL 特有的日志 - 你应该会看到结构化的日志条目,其中包含
user_name、database_name、error_severity、message、query等字段。
演示数据集
1
2
3
仪表盘与可视化
1
仪表盘配置
2
导入预置仪表盘
- 打开 HyperDX 并进入 Dashboards 部分
- 点击右上角省略号菜单中的 Import Dashboard
- 上传
postgresql-logs-dashboard.json文件,然后点击 Finish Import
3
查看仪表盘
仪表盘创建后,所有可视化都已预先配置好:对于演示数据集,请将时间范围设置为 2025-11-10 00:00:00 - 2025-11-11 00:00:00 (UTC) (请根据你的本地时区进行调整) 。默认情况下,导入的仪表盘不会预设时间范围。
故障排查
自定义配置未加载
HyperDX 中没有显示日志
filelog receiver:
后续步骤
- 为关键事件 (连接故障、慢查询、错误激增) 设置告警
- 将日志与 PostgreSQL 指标关联,以实现全面的数据库监控
- 为应用程序特有的查询模式创建自定义仪表盘
- 配置
log_min_duration_statement,以识别超过您性能要求阈值的慢查询