使用 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 中进行过滤 - 通过专用管道将日志路由至 ClickHouse exporter
- 只需在自定义配置中定义新的接收器和管道即可
- 在基础 ClickStack 配置中,处理器(
memory_limiter、transform、batch)和导出器(clickhouse)已经定义好了——你只需通过名称引用它们即可 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 数据。