使用 ClickStack 监控 PostgreSQL 日志
本指南介绍如何通过配置 OpenTelemetry collector 来摄取 PostgreSQL 服务器日志,从而使用 ClickStack 监控 PostgreSQL。你将学习如何:
- 将 PostgreSQL 配置为以 CSV 格式输出日志,以便进行结构化解析
- 为日志摄取创建自定义 OTel collector 配置
- 使用你的自定义配置部署 ClickStack
- 使用预构建的仪表盘可视化 PostgreSQL 日志信息(错误、慢查询、连接情况)
如果你希望在为生产环境 PostgreSQL 配置前先测试集成,可使用包含示例日志的演示数据集。
所需时间:10–15 分钟
与现有 PostgreSQL 的集成
本节介绍如何通过修改 ClickStack OTel collector 配置,将你现有的 PostgreSQL 实例日志发送到 ClickStack。
如果你希望在为自己的现有环境进行配置之前先测试 PostgreSQL 日志集成,可以在"演示数据集"一节中,使用我们预配置的环境和示例数据进行测试。
前提条件
- 正在运行的 ClickStack 实例
- 现有的 PostgreSQL 部署(版本 9.6 或更高)
- 可修改 PostgreSQL 配置文件的权限
- 足够的磁盘空间用于存储日志文件
配置 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 采集器配置。
完成这些更改后,请重启 PostgreSQL:
验证日志是否正在写入:
创建自定义 OTel collector 配置
ClickStack 允许您通过挂载自定义配置文件并设置环境变量来扩展 OpenTelemetry Collector 的基础配置。自定义配置会与 HyperDX 通过 OpAMP 管理的基础配置进行合并。
创建名为 postgres-logs-monitoring.yaml 的文件,并添加以下配置:
此配置:
- 从 PostgreSQL 日志的默认位置读取 CSV 日志
- 处理多行日志记录(错误信息往往会跨多行)
- 解析包含所有标准 PostgreSQL 日志字段的 CSV 格式
- 提取时间戳以保留日志的原始时间
- 添加
source: postgresql属性,以便在 HyperDX 中进行过滤 - 将日志通过专用 pipeline 路由到 ClickHouse exporter
- 你只需要在自定义配置中定义新的
receivers和pipelines即可 - 处理器(
memory_limiter、transform、batch)和导出器(clickhouse)已经在基础 ClickStack 配置中预先定义好,你只需按名称引用它们即可。 csv_parser运算符会将 PostgreSQL CSV 日志中的所有标准字段提取为结构化属性- 此配置使用
start_at: end,以避免在 collector 重启后重复摄取日志。进行测试时,可改为start_at: beginning,以便立即查看历史日志。 - 将
include路径调整为与你的 PostgreSQL 日志目录路径一致
配置 ClickStack 加载自定义配置
要在现有的 ClickStack 部署中启用自定义采集器配置,您必须:
- 将自定义配置文件挂载到
/etc/otelcol-contrib/custom.config.yaml - 设置环境变量
CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml - 挂载 PostgreSQL 的日志目录,以便收集器可以读取这些日志
选项 1:Docker Compose
更新您的 ClickStack 部署配置:
选项 2:Docker Run(一体化镜像)
如果您使用 docker run 运行一体化镜像:
确保 ClickStack 采集器具有读取 PostgreSQL 日志文件的相应权限。在生产环境中,使用只读挂载(:ro)并遵循最小权限原则。
在 HyperDX 中验证日志
配置完成后,登录 HyperDX 并验证日志是否正常流入:
- 进入搜索视图
- 将 Source 设置为 Logs
- 按
source:postgresql进行过滤,以查看 PostgreSQL 特定日志 - 你应当能看到结构化的日志条目,其中包含
user_name、database_name、error_severity、message、query等字段。


演示数据集
对于希望在配置生产系统之前先测试 PostgreSQL 日志集成的用户,我们提供了一份预先生成、模式逼真的 PostgreSQL 日志示例数据集。
在 HyperDX 中验证日志
当 ClickStack 启动并运行后:
- 打开 HyperDX 并登录您的账号(如有需要,先创建一个账号)
- 进入 Search 视图,将 source 设置为
Logs - 将时间范围设置为 2025-11-09 00:00:00 - 2025-11-12 00:00:00
HyperDX 会以浏览器的本地时区显示时间戳。该演示数据覆盖的时间为 2025-11-10 00:00:00 - 2025-11-11 00:00:00 (UTC)。这里使用较宽的时间范围,以确保无论您所在的时区如何,都能看到演示日志。确认能看到日志后,可以将范围缩小到 24 小时,以获得更清晰的可视化效果。


仪表板与可视化
为帮助您开始使用 ClickStack 监控 PostgreSQL,我们提供了针对 PostgreSQL 日志的关键可视化内容。
导入预构建的仪表板
- 打开 HyperDX 并进入 Dashboards 区域
- 点击右上角省略号下的 Import Dashboard

- 上传
postgresql-logs-dashboard.json文件并点击 Finish Import

查看仪表板
系统会创建一个已预先配置好所有可视化内容的仪表板:

对于演示数据集,将时间范围设置为 2025-11-10 00:00:00 - 2025-11-11 00:00:00 (UTC)(可根据本地时区进行调整)。导入的仪表板默认未指定时间范围。
疑难排解
自定义配置未生效
确认已设置环境变量:
检查自定义配置文件是否已挂载并可读:
HyperDX 中没有日志显示
检查生效的配置中是否包含你的 filelog 接收器:
检查收集器日志中是否有错误:
如果使用演示数据集,请确认日志文件可访问:
后续步骤
在完成 PostgreSQL 日志监控配置之后:
- 为关键事件(连接失败、慢查询、错误激增)配置告警
- 将日志与PostgreSQL 指标关联,实现全面的数据库监控
- 创建自定义仪表板,以可视化特定于应用的查询模式
- 配置
log_min_duration_statement,以根据你的性能要求识别相应的慢查询
迁移到生产环境
本指南在 ClickStack 内置的 OpenTelemetry Collector 基础上进行扩展,以便快速完成设置。对于生产环境中的部署,我们建议运行您自己的 OTel Collector,并将数据发送到 ClickStack 的 OTLP 端点。生产环境配置参见 发送 OpenTelemetry 数据。