首页/网络/常用端口速查/9187 postgres_exporter 指标导出

9187 postgres_exporter 指标导出

PostgreSQL 指标导出器默认端口:通过连接串采集 pg_stat 系列指标,慢查询与复制延迟告警的数据源。

常用端口速查网络更新于 2026-10-13

PostgreSQL 指标导出器

postgres_exporter 默认监听 9187 的 /metrics:它用一条连接串连库,采集 pg_stat 系列视图,以及数据库大小、连接数、事务提交与回滚、复制状态等指标,是慢查询与复制延迟告警的数据来源。监控账号应使用专用的最小权限角色。

基本信息

服务postgres_exporter
协议TCP/HTTP(/metrics)
默认端口9187
连接配置DATA_SOURCE_NAME 环境变量或配置文件
暴露面仅监控网段

典型使用场景

  • 连接数与事务提交、回滚速率监控
  • 流复制状态与复制延迟告警
  • 数据库与表级大小增长趋势,为容量做准备
  • 锁等待与长事务发现,避免连接被占满
  • 用 pg_up 替代简单的端口探测做健康检查

部署与验证

部署与验证
export DATA_SOURCE_NAME='postgresql://monitor:***@127.0.0.1:5432/postgres'
postgres_exporter --web.listen-address=:9187
curl -s http://pg01:9187/metrics | grep -E 'pg_up|pg_stat_database_numbackends'
# 同时在 pg_hba.conf 中只允许监控主机连接

排障与核对

检查项做法异常表现
导出器存活curl -s http://host:9187/metrics连不上:进程未起或监听地址错误
数据库连通pg_up 指标为 0:连接串、pg_hba 或网络策略问题
连接数pg_stat_database_numbackends逼近 max_connections:业务开始报连接失败
复制复制延迟相关指标延迟上涨:先看网络与主库写入量
连接串里的口令最常见的泄露途径是写进 systemd 单元的 Environment 或部署脚本:优先用独立配置文件并收紧读权限,或让导出器以专用账号运行、只允许该账号读取口令文件。

监控账号的权限边界

监控账号只需要读取统计视图:较新版本可使用 pg_monitor 角色,老版本按需单独授权统计视图与相关函数。为了省事直接给 superuser,一旦监控主机被入侵,数据库就完全敞开,收益与风险完全不成比例。

pg_up 只说明导出器能连上库,不代表业务正常:连接池打满时数据库仍在服务,但新连接会被拒。业务健康度要结合连接数、活跃事务与慢查询指标一起看,单指标告警很容易漏判。
监控账号给 superuser:监控系统一旦失守,等同于数据库管理员权限外泄,事后也无法从数据库侧限制其操作。

易错点

  • 口令写在 systemd 单元或脚本的明文环境变量里:任何能读文件或进程信息的用户都能拿到
  • 监控账号使用 superuser:监控主机被入侵即等于数据库全权限
  • 只对 pg_up 做告警:连接池打满、复制延迟上涨都不会触发,故障覆盖不全
  • 采集间隔过短且查询过重:监控自身给数据库叠加额外负载,反而拖慢业务

数据来源与参考

  • prometheus-community/postgres_exporter 文档(默认 9187)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌