このプロジェクトについて

このプロジェクトは、Prometheus Alertmanagerからアクティブなアラートを監視するためのシンプルでセルフホスト可能なソリューションを提供します。2つの独立したGoバイナリで構成されており、それぞれが個別のコンテナイメージとしてパッケージ化されているため、柔軟なデプロイが可能です。 **コンポーネント:** 1. **Receiver:** このバイナリはAlertmanager用のWebhookエンドポイントとして機能します。`/webhook`でPOSTリクエストを待ち受け、受信したアラートデータを処理し、現在の状態をValkey(Redis互換)データベースに保存します。特に`Watchdog`アラートは、アクティブな問題として扱うのではなく、最終更新時刻を更新するだけで処理します。 2. **Dashboard:** このバイナリは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)で実行され、バイナリベースのヘルスチェックが含まれています。