diff --git a/infrastructure/etcd/README.md b/infrastructure/etcd/README.md index cdafcb7..0f14960 100644 --- a/infrastructure/etcd/README.md +++ b/infrastructure/etcd/README.md @@ -105,7 +105,9 @@ quota 初始 256 MiB,按 1 小时保留进行自动 compaction;defrag 另择 现有 VictoriaMetrics 使用 `platform/observability/metrics/scrapes/shared-etcd.yaml` 采集, 对应 VMRule 覆盖成员不可采集、少于两个可采集成员、无 leader、容量、WAL fsync 和频繁选举。 采集失败不等于 quorum 丢失,需结合管理员 endpoint health 判断。 -备份年龄、证书到期与续签任务告警尚待补齐。既有 Alertmanager 已接入 Telegram, +备份年龄、证书到期与续签检查的主机采集已于 2026-09-27 部署, +告警规则待 [PR #166](https://git.ddupan.top/panxiao81/homelab-infra/pulls/166) 合并; +部署、阈值和排障见 [维护监控](../shared-data-monitoring/README.md)。既有 Alertmanager 已接入 Telegram, 维护者已收到本次成员无 leader 与频繁选举通知;接收器配置由现有监控栈维护。 ### DRBD I/O 故障导致成员根卷只读 diff --git a/infrastructure/shared-data-monitoring/README.md b/infrastructure/shared-data-monitoring/README.md new file mode 100644 index 0000000..d522026 --- /dev/null +++ b/infrastructure/shared-data-monitoring/README.md @@ -0,0 +1,74 @@ +# 共享数据服务维护监控 + +为 laptop、etcd-pve1(10.60.0.20)、etcd-pve2(10.60.0.21)补齐备份、磁盘证书、 +续签检查与 dev SQL 的指标。复用现有 VictoriaMetrics/Alertmanager;不部署新监控栈。 +实现由 [PR #166](https://git.ddupan.top/panxiao81/homelab-infra/pulls/166) 发布。 + +2026-09-27:三个主机端已部署并验证,Ansible 重跑均 `changed=0`;vmagent Pod 能访问三个 +内网 `:9109/metrics`。抓取声明和八条规则尚待 PR 合并,不能视为已启用告警。 + +## 采集和阈值 + +每分钟执行 `homelab-data-collect.service`,读取明确清单并原子替换 +`/var/lib/homelab-data-monitoring/health.prom`。每项检查失败输出零值及 `check_success=0`, +不沿用旧成功值;完整采集时间用于发现任务停止或文件缺失。端点不暴露密码、token、私钥。 + +| 项目 | 证据 | 告警 | +|---|---|---| +| etcd 快照 | 每成员已完成 `.db` 文件 mtime,排除 `.partial` | 超过 36 小时 warning | +| PG full 备份 | 仓库本地 pgBackRest JSON 中无错误 full 的完成时间 | 超过 36 小时 warning | +| 证书 | 显式清单包含 server/peer/admin/gateway/PG etcd client/CA;取完整 PEM 链最早到期时间 | 不足 10 天 warning;不足 3 天或无法读取 critical | +| 续签检查 | laptop 两个 renew service 的成功退出时间及 timer active | 失败、停用或超过 36 小时 warning | +| dev | 本地 socket、pgdev peer 身份,只读 SQL 检查非 recovery 且非只读 | 连续异常 3 分钟 warning | +| 采集链路 | exporter up、单项检查、textfile 错误、完整采集时间 | 失败或心跳超过 3 分钟后持续 3 分钟 warning | + +证书在不足 14 天时由原自动续签任务处理,10 天阈值给重试留出余量;critical 不重复触发 warning。 +36 小时适用于现有每日快照/full/续签检查计划。dev 未新增备份,异地备份仍后置。 + +node_exporter 固定为现有监控所用的 1.9.1,并校验官方 SHA256;保留上游 LICENSE。 +仅启用 textfile,使用 DynamicUser,绑定各主机内网地址的 9109,与现有 9100 不冲突。 +采集程序以 root 运行,以便读取快照元数据和切换为 pgdev/pgbackup;systemd 限制文件系统写入 +到 textfile 目录,限制执行时间与内存。无需 Bao 登录;数据库和 etcd 不因部署监控重启。 +采集并非常驻进程;laptop 上 exporter 当前 MemoryCurrent 约 2.6 MiB,仅作现场开销参考。 + +## 部署和验证 + +在 PR 分支或合并后的完整 checkout 中执行: + +```bash +cd infrastructure/shared-data-monitoring/ansible +ansible-playbook site.yml +``` + +本机需要免交互 sudo,远程使用已有 root SSH;配置不包含秘密。当前实现仅支持 Linux amd64, +依赖现有 Python 3、OpenSSL、systemd、PG 客户端和 pgBackRest。下载 exporter 需要访问 GitHub。 + +只读查看结果: + +```bash +curl --fail http://192.168.10.127:9109/metrics +sudo systemctl status homelab-data-collect.timer homelab-data-exporter.service +sudo journalctl -u homelab-data-collect.service --since '2 hours ago' +``` + +主机端 `check_success` 应全为 1、`dev_sql_ready=1`,`node_textfile_scrape_error=0`。 +合并后检查 `up{job="shared-data-maintenance"}` 三个目标及 `shared-data-maintenance` 规则组。 +Kubernetes 资源由现有 observability Kustomization 纳管;主机端由此 Ansible 独立维护。 + +2026-09-27 验证:6 项采集测试、12 个新增 promtool 场景及既有规则回归通过;Ansible lint +零失败零告警;Kustomize 渲染通过;三主机实际采集和 vmagent 网络路径通过。未停止业务来测试告警。 + +## 故障入口与边界 + +- 采集停止:先查 exporter 和 collect timer/service,再看 `.prom` 的 collection timestamp。 +- 备份陈旧:etcd 查 `homelab-etcd-snapshot`;PG 仓库查 `homelab-postgresql-backup`。 + 不以 touch 文件消除告警。快照年龄依赖完成文件 mtime,手工复制会改变证据,不能冒充新备份。 +- 证书或续签异常:查 laptop 的 `homelab-etcd-renew` / `homelab-postgresql-renew`; + 修复 Bao/SPIRE/网络或受限身份后重跑原续签入口,不删除现有证书或重置数据库。 +- dev SQL 失败:查 `homelab-postgresql-dev`、磁盘与 socket,再核对本地 peer 认证。 + +备份年龄不能证明恢复能力或 WAL 连续性;定期隔离恢复演练仍必要。证书指标读取磁盘文件, +不证明运行进程已重载该证书。dev 检查不验证外部 DNS/TLS 路径、不执行写入。 +SQL 级 exporter、异地备份及应用迁移不在本次范围。 + +跨服务状态见 [共享 PG wiki](https://git.ddupan.top/panxiao81/homelab-wiki/src/branch/main/services/shared-postgresql.md)。 diff --git a/infrastructure/shared-postgresql/README.md b/infrastructure/shared-postgresql/README.md index 282def2..32cab3e 100644 --- a/infrastructure/shared-postgresql/README.md +++ b/infrastructure/shared-postgresql/README.md @@ -97,8 +97,9 @@ Ayatori 角色,随后停库清理;不覆盖生产 PGDATA。全站恢复及 现有 VictoriaMetrics/Alertmanager 已采集生产两节点 Patroni 原生指标,规则位于 `platform/observability/metrics/{scrapes,rules}/shared-postgresql.yaml`。覆盖成员不可采集、无可见主库、 -多主、replica 未流复制及 PG 进程停止。没有部署另一套监控栈;数据库 SQL 级 exporter、dev 运行告警、 -备份年龄与证书到期告警尚待补齐,不能宣称监控完整。 +多主、replica 未流复制及 PG 进程停止。没有部署另一套监控栈;数据库 SQL 级 exporter 仍后置。dev SQL、备份年龄、证书和续签检查的主机采集已于 2026-09-27 部署, +新增规则待 [PR #166](https://git.ddupan.top/panxiao81/homelab-infra/pulls/166) 合并; +阈值、验证边界和排障见 [维护监控](../shared-data-monitoring/README.md)。 2026-09-25 已验证: