アップタイムとハートビートモニタリング
1)なぜそれを必要とします
周囲と内部の停電の早期検出(エッジ↔コア)。
ユーザーの可用性の確認(「Podが生きている」だけではありません)。
SLA/SLO契約上の報告および法的義務。
バックグラウンドプロセス(cron、 ETL、決済打撲傷)をハートビートで監視します。
方法論:ゴールデンシグナル(レイテンシ/トラフィック/エラー/彩度)、RED、 SLOへのリンク、誤った予算。
2)チェックの種類(合成)
ICMP:基本的なネットワーク/IPの可用性。
TCP: ポートが生きている/ハンドシェイク(例:443/5432).
TLS:証明書の有効性/用語/チェーン。
HTTP (S):レスポンスコード、レイテンシ、ヘッダー、キーのサブストリング。
DNS:決断、TTL、 NXDOMAIN/SERVFAIL。
ヘッドレスブラウザ(ユーザーパス):login→action→logout。
カスタムプローブ:サンドボックスPSPでの支払い承認、内部ビジネス合成(入金シミュレーション)。
ヒント:(VPC/K8s内から)エッジとプライベートエンドポイントの両方が異なるリスクドメインであることを確認します。
3)稼働時間監視アーキテクチャ
地域ごとのトライアルエージェント(最低3つのジオポイント)。
HTTP/TCP/TLS/DNS用のBlackboxエクスポート。
パスによる合成(シーケンシャルステップ)別に;スクリプトを保存します。
Prometheus/Mimir/Thanos:メトリックの収集、SLO/アラートルール。
Alertmanager/Pager:ルーティングP1/P2、エスカレーション。
ステータスページ:ビジネス/顧客のための透明な更新。
ログ/トレース:'trace_id'/相関によるドリルダウン。
4)健康エンドポイント: デザイン
/healthz (liveness)-「生きているプロセス」です。
/readyz (readiness)-「トラフィックを受信する準備ができました」(しきい値を持つ依存関係)。
/startupz-「initialized」。
/check-高度なビジネスヘルス(タイムアウトとサーキットブレーカによる簡単なデータベース/キャッシュチェック)。
セマンティックヘルス:重要な依存関係が機能している場合にのみコード200;→503の劣化。
ルール:タイムアウト≤ 2-3秒、制限されたサブチェック、応答のPIIなし、重い部分のキャッシュ。
5)仕事と労働者のためのハートビート
デッドマンスイッチモデル:ダニが時間通りに到着しなかった場合は、警告します。
使用法:cron/ETL/invoiceの仕事、オフチェーン支払の点検、背景の労働者。
- Push-heartbeat HTTP:終了時のジョブは'POST/heartbeat/< job>'を行います。
- Metrics-pull: 'last_success_timestamp'とアラートを「N分以上」で公開します。
- ウォッチドッグ:エージェントからの一定の信号。missing-アラート「monitoring break」。
6)構成例
6.1 Blackbox-exporter (HTTP+TLS+DNS)
yaml modules:
http_2xx:
prober: http http:
method: GET preferred_ip_protocol: "ip4"
fail_if_not_ssl: true valid_http_versions: ["HTTP/1. 1","HTTP/2"]
tls_config:
insecure_skip_verify: false headers:
User-Agent: "uptime-probe"
body: ""
ip_protocol_fallback: false
tls_cert:
prober: tcp tcp:
query_response: []
tls: true tls_config:
insecure_skip_verify: false
dns:
prober: dns dns:
query_name: "api. example. com"
valid_rcodes: ["NOERROR"]
preferred_ip_protocol: "ip4"
6.2プロメテウス:ターゲットとジャブ
yaml scrape_configs:
- job_name: 'blackbox-http'
metrics_path: /probe params:
module: [http_2xx]
static_configs:
- targets:
- https://api. example. com/healthz
- https://pay. example. com/readyz relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- target_label: __address__
replacement: blackbox-exporter:9115
- source_labels: [__param_target]
target_label: instance
6.3ハートビートジョブメトリック(Prometheus exporter)
メトリックを公開します:
job_last_success_timestamp_seconds{job="settlement"} 1. 730000e+09
アラート:
promql
(time() - job_last_success_timestamp_seconds{job="settlement"}) > 900
6.4ウォッチドッグ(デッドマンスイッチ)
Alertmanagerで、アラート'Watchdog'のルートを有効にします(常に発火します)→アラートが来ない場合、監視が壊れます。
7)稼働時間のためのPromQLの例
HTTPの可用性(0/1):promql probe_success{job="blackbox-http"} == 1
サンプルによるp95レイテンシ:
promql histogram_quantile(0. 95, sum by (le, instance) (rate(probe_http_duration_seconds_bucket[5m])))
TLSの有効期限<7日:
promql
(min_over_time(probe_ssl_earliest_cert_expiry[5m]) - time()) < 7243600
DNSエラー:
promql rate(probe_dns_rcode{rcode!="NOERROR"}[5m]) > 0
稼働時間SLI(圧延28d):
promql sum_over_time((probe_success==1)[28d]) / (28246060)
8)警告: しきい値とアンチノイズ
マルチリージョンクォーラム:2つのリージョン≥ドロップが表示された場合にトリガーされます。
複数の窓:1-5分(速いチャネル)+30-60分(安定した傾向)。
感度:debounce/for:フラップに対して2-5分。
相関:アップタイムアラートをレザーメトリック(エッジ、DNS、 WAF、 origin)に関連付けます。
メンテナンスウィンドウ:'maintenance=true'タグでアラートを抑制します。
promql
≥2 regions simultaneously failed sum by (target) (max_over_time (probe _ success = = 0) [3m]))> = 2
9)複数の地域および複数のベンダーの点検
最低3地域(EU/NA/APAC)と異なるASN。
重複:独自のサンプル+外部アップタイムプロバイダ。
IPv4/IPv6、 HTTP/2/3、異なるCDN POPおよびWAFプロファイル。
10)セキュリティチェック
WAF/LBのサンプルのIP範囲を許可します。
ヘルスエンドポイント/プローブのレート制限とキャプチャバイパス。
個人の健康のためのタイトル署名(HMAC)。
別のドメイン:パブリックサンプルとプライベート(/internal/health)。
/healthzに内部バージョン/configsを返さないでください。ステータスのみ。
11) SLOおよびアップタイムレポート
SLI可用性:2xx/3xx HTTPプローブ成功率。
SLOの例:≥ 99。ほとんどの地域で28日で95%。
誤った予算:'1 − SLO'→リリースを管理します。
バーンレートアラート:サンプル障害の割合が速い/遅いチャネル。
12)支払および重大な仕事のためのハートビート
ジョブ「お金の周り」(転送、レジストリ)-ダブルコントロール:ハートビート+ビジネスカウンター(レコードの処理数)。
「沈黙」(新しいイベントはありません>N分)とラグ(リアルタイムの遅れ)によるアラート。
13)ステータスページ
個別のコンポーネント(API、支払い、バックエンド、CDN)。
アラートからの自動更新、Commsロールによる手動コメント。
事件の歴史、死後のリンク、計画された作業。
14)インシデントプロセスとの統合
quorum rules+durationによるアラートSEV。
インシデントカード、ウォールルーム、IC割り当ての自動作成。
コミュニケーションテンプレート(内部/外部)、必要に応じて法定保留。
検証後:合成グリーン≥「解決済み」にX分。
15)性能および費用
サンプリング周波数:重要-30〜60秒ごと;セカンダリ-1-5分。
ストレージ:長いウィンドウのダウンサンプリング/録音ルール。
外部プロバイダの予算:高度なブラウザスクリプトをスケジュールに制限します。
16)質のチェックリスト
- /healthz 、/readyz 、/startupzがあり、明確な意味を持つ。
- 3つの地域/ASN、 からのサンプル 。
- TLS/DNSは、T-30/T-7/T-1日間のチェックとアラートを行います。
- すべての重要な仕事(およびビジネス「沈黙」)をハートビート。
- マルチウィンドウ+クォーラム、フラップなし。
- Drilldown:ログ/トラック/ダッシュボードのボタン。
- ステータスページと通信テンプレート。
- SLO/メトリックと所有者のドキュメント。
17)実施計画(3つの反復)
1.第1週: HTTP/TLS/DNS blackboxプローブ(クリティカルドメイン、ステータスページ、基本アラート)
2.第2週:複数の地域性、クォーラムルール、ハートビートトップジョブ、ウォッチドッグ。
3.週3:ヘッドレススクリプト(ログイン/デポジット)、SLOレポート、インシデントプロセスとの統合。
18) ミニFAQ
外部サンプルが内部サンプルより優れているのはなぜですか?
外部ユーザーは実際のユーザーパス(DNS/CDN/WAF)を、内部ユーザーはオリジン状態を表示します。両方が必要だ。
有料PSPをチェックする必要がありますか?
はい:サンドボックスとステータスページの監視における合成;劣化の場合-自動スマートルーティング。
ノイズを減らすには?
Quorum、マルチウィンドウ、for-delay、メンテナンスの抑制、SLOのしきい値と所有権のクリア。
合計
稼働時間の監視はpingだけではありません。これはシステムです:多地域合成+高品質の健康エンドポイント+ハートビートジョブ+SLO/alert+ステータスページ。チェックを標準化し、ノイズを低減し、サンプルを保護し、すべてをインシデントプロセスにリンクします。これにより、MTTRを削減し、誤った予算を節約できます。