feat/shared-pg-sql-metrics
main
:9187
:9188
sha256sums.txt
pg_exporter_version
peer map=monitor
homelab_monitor
pg_monitor
InaccessiblePaths
pg_stat_statements
monitoring.yml
patronictl restart --pending
changed=0
shared-postgresql-sql
postgres_mixin
max_slot_wal_keep_size
env
env="dev"
telegram-dev
env: dev
pg_up 1
up{job="shared-postgresql-sql"}
shared-postgresql.yaml
🤖 Generated with Claude Code
- 数据库主机上按实例运行 prometheus-community/postgres_exporter 0.20.1, 以实例 OS 用户走本地 socket,经 peer + ident 映射到仅有 pg_monitor 的 homelab_monitor 角色;无密码、不经 Bao。版本与官方 sha256sums.txt 同源。 - prod/dev 启用 pg_stat_statements;monitoring.yml 仅在未生效时 reload/重启 (prod 走 Patroni pending restart),重复执行 changed=0。 - 告警以上游 postgres_mixin 为底改写为 PrometheusRule,阈值对齐 Patroni failover lag 与 max_slot_wal_keep_size;抓取目标带 env 标签。 - Alertmanager 新增 env="dev" 路由到独立 dev 频道,dev SQL 检查告警补 env。 Co-Authored-By: Claude Opus 5.5 <[email protected]>
只读探测在 check 模式下照常执行;依赖真实执行结果的等待与验证在 check 模式跳过。 patronictl JSON 会省略空值字段,pending 判断先检查键是否存在。 Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
自动切换后主库安全落到 pve1 不会触发无主/多主规则;2026-09-30 的切换一天无人察觉。 Co-Authored-By: Claude Opus 5.5 <[email protected]>
No dependencies set.
The note is not visible to the blocked user.
内容
:9187,dev:9188,仅内网地址)。安装包与官方sha256sums.txt共用pg_exporter_version。peer map=monitor+ ident 映射登录homelab_monitor(仅pg_monitor、无密码、连接上限 3)。无 Bao、无 Terraform 变更。InaccessiblePaths只挡数据目录、私钥和 pgpass。pg_stat_statements。新monitoring.yml仅在未生效时 HUP Patroni、patronictl restart --pending或重启 dev,重跑changed=0。shared-postgresql-sql(13 条,以上游postgres_mixin为底改写,阈值对齐 failover lag 1 MiB 与max_slot_wal_keep_size)+ VMStaticScrape,目标带env标签。env="dev"→telegram-dev(独立 dev 频道);既有 dev SQL 检查告警补env: dev。已验证
pg_up 1、无采集失败,exporter 约 8 MiB;第二次运行changed=0;vmagent Pod 可达三端点。pg_stat_statements、不可写。合并后
up{job="shared-postgresql-sql"}三个目标、规则组 operational,以及 dev 频道首条告警能送达(bot 需为频道管理员)。未做
shared-postgresql.yaml仍是手写 VMRule,未迁移到 PrometheusRule。🤖 Generated with Claude Code