这个项目能做什么

该项目提供了一个简单、自托管的解决方案,用于监控来自 Prometheus Alertmanager 的活动警报。它由两个独立的 Go 二进制文件组成,每个都打包为单独的容器镜像,允许灵活部署。 **组件:** 1. **接收器:** 该二进制文件作为 Alertmanager 的 webhook 端点。它监听 `/webhook` 上的 POST 请求,处理传入的警报数据,并将当前状态存储在 Valkey(与 Redis 兼容)数据库中。它专门处理 `Watchdog` 警报,通过更新最后看到的时间戳,而不将它们视为活动问题。 2. **仪表板:** 该二进制文件从 Valkey 读取状态,并提供基于 Web 的 HTML 仪表板。它还公开了一个 `GET /api/state` 端点,用于程序化访问当前警报状态。如果超过指定阈值没有收到新的 webhook,仪表板可以配置为突出显示过时的更新。 **状态管理:** 活动警报存储在以其唯一指纹为键的 Valkey 哈希中。已解决的警报会自动删除。如果缺少指纹,则从排序的标签中派生,以确保一致性。 **配置:** 两个二进制文件均通过环境变量进行配置,包括: - `LISTEN_ADDR`:HTTP 监听地址(默认 `:8080`)。 - `VALKEY_ADDR`:Valkey/Redis 实例的地址。 - `VALKEY_USERNAME` / `VALKEY_PASSWORD`:身份验证凭据。 - `STALE_AFTER`:将更新标记为过时的阈值(默认 `90m`)。 **部署:** 该项目支持 Docker Compose 进行本地开发和测试。已发布的容器镜像可在 GitHub Container Registry (`ghcr.io`) 上找到。最终的镜像针对安全性和大小进行了优化,使用 `scratch` 作为基础,以非 root 用户(UID/GID 1000)运行,并包含二进制支持的健康检查。