コンテンツにスキップ

Prometheus で監視する(SLO、メトリクス、アラート)

エンジンは HTTP リスナー上で 3 つの運用エンドポイントを公開しており、いずれも プローブに適しています。

エンドポイント認証目的
/livezなしプロセスの生存確認 — 依存関係チェックなし。そのためストア障害が再起動ループを引き起こすことはない
/readyzなしレディネス — ストアへの ping(および HA リーダーシップ):200 {"status":"ok","store":"up","leader":true,…}503 {"status":"unavailable","store":"down"}、または HA スタンバイ時に 503 {"status":"standby",…,"leader":false}
/metricsなしPrometheus エクスポジション。意図的に未認証:運用系列を運び、テナントデータは決して運ばない

/readyz への到達性が可用性 SLI そのもの です。

すべての系列はエンジンによって登録されています(現行コードに照らして検証済み)。 中核を担うものは次のとおりです。

系列何を示すか
olivares_store_upストアが ping に応答する — あらゆるランブックが最初に確認するもの
olivares_http_requests_total{code}リクエスト成功 SLI(code!~"5.."
olivares_http_request_duration_secondsAPI レイテンシ(下記の p99 ターゲット)
olivares_ingest_duration_secondsバックプレッシャー SLI — サブスクライバーが飽和するとインジェスト p99 が上昇する
olivares_ingest_observations_total / olivares_ingest_rejected_totalインジェストのスループットと拒否
olivares_eventbus_queue_depth / _queue_capacity(サブスクライバーごと)どのモジュールが遅いコンシューマーか
olivares_eventbus_publish_blocked_totalバックプレッシャーイベント(バスはブロックする。ドロップはしない)
olivares_eventbus_bridge_*分散バスが有効なときの NATS ブリッジの健全性 — _connected_pending_messages_dropped_total(ノード間配信は at-most-once。ドロップはカウントされ、決して黙殺されない)
olivares_audit_checkpoint_age_seconds改ざん検知の鮮度 — チェックポイント間隔の 2 倍を超えたらアラート
olivares_auth_login_attempts_total{outcome}ログインの成功 / 失敗 / ロックアウト
olivares_http_ratelimit_decisions_total{decision}レートリミットの圧力
olivares_grpc_requests_total / olivares_grpc_request_duration_secondsコレクター→コアのインジェストプレーン

SLO ターゲット(公開済み、正直)

Section titled “SLO ターゲット(公開済み、正直)”

シングルノードのターゲット — デフォルトのトポロジーが実際に支えられるもの — と HA ティアです。

SLIシングルノードHA ティア(Postgres)
可用性(/readyz99.5% / 28d99.9% / 28d
リクエスト成功(非 5xx)99.9%99.95%
API レイテンシ p99< 300 ms< 200 ms
インジェストレイテンシ p99< 250 ms< 150 ms
インジェスト成功99.9%99.95%

数値における誠実さ:1 ノード上の単一ライターは可用性のスリーナイン(99.9%)を約束できないので、 ドキュメントもそう約束しません。99.5%(28 日あたり約 3 時間 39 分のバジェット)がシングルノードの真実であり、 99.9% のティアは楽観ではなく HA トポロジー によって獲得されます。

同梱のアラートルールを読み込む

Section titled “同梱のアラートルールを読み込む”

deploy/monitoring/olivares-slo.rules.yaml は、Prometheus にすぐ使える 14 個のアラートを同梱しています。 リクエスト成功バジェットに対するマルチウィンドウのバーンレートアラート(高速 14.4× ページ / 中速 6× ページ / 低速 1× チケット)、絶対的なレイテンシと可用性の発火(OlivaresIngestP99HighOlivaresApiLatencyP99HighOlivaresStoreDownOlivaresControlPlaneUnscrapeable)、飽和 (OlivaresEventBusSaturated、キュー >90% が 10 分継続)、ブリッジの健全性 (OlivaresEventBusBridgeDroppingOlivaresEventBusBridgeDisconnected)、そして 台帳の鮮度(OlivaresAuditCheckpointStale、経過時間 > 2h)です。

prometheus.yml
rule_files:
- olivares-slo.rules.yaml
scrape_configs:
- job_name: olivares
scheme: https
tls_config: { insecure_skip_verify: true } # or pin the real cert
static_configs: [{ targets: ["olivares.internal:8443"] }]

Kubernetes では、チャートの ServiceMonitor オプションが Prometheus オペレーター向けに スクレイプを配線します。外部からの /readyz プローブ用の Gatus ステータスページ設定が、 ルールと並んで同梱されています(deploy/monitoring/status-page.gatus.yaml)。

症状ごとの診断 — ストアダウン、インジェスト p99 高、バス飽和、チェックポイント陳腐化 — は トラブルシューティングページ にあります。これはアラートのアノテーションが 参照するのと同じランブックから抽出されています。