運用とアラート→システム容量別管理
システム容量アラート
1)なぜそれを必要とします
容量性警報は、事件のずっと前に技術的な限界に近づいていることを警告します。"食料品業界では、これは直接お金についてです:賭け/預金を逃した、セッションの低下、ライブゲームの遅延とプロバイダの失敗=収益の損失、評判、罰金、キックバック。
目的:- 予測可能にピーク負荷(イベント、トーナメント、ストリーム、大規模なキャンペーン)に耐えます。
- 時間の自動スケーリングをオンにし、容量のアップリフトを計画します。
- SLO/moneyが危険にさらされているときに、ノイズを減らし、ビジネス上で目を覚まします。
- ランブックを通じてエンジニアに正確な推奨事項を提供します。
2)基本的な概念
容量:最大安定したスループット(RPS/TPS、接続、IOPS、スループット)。
ヘッドルーム:現在の負荷と限界の間のマージン。
SLO/SLA:可用性/応答時間の目標レベル。アラートは「SLO対応」でなければなりません。
燃焼率:エラー/レイテンシのSLO予算を「燃焼」する速度。
High/Low Watermark:アクチュエーションと自動リカバリの上下レベル。
3)信号アーキテクチャとデータソース
テレメトリー:メトリック(Prometheus/OTel)、ログ(ELK/ClickHouse)、トレース(OTel/Jaeger)。
レイヤーアプローチ:レイヤーによるアラート(Edge→API→ビジネスサービス→キュー/ストリーム→データベース/キャッシュ→ファイル/オブジェクトストア→外部プロバイダ)。
コンテキスト:機能フラグ、リリース、マーケティングキャンペーン、トーナメント、ジオアライメント。
インシデントタイヤ:Alertmanager/PagerDuty/Opsgenie/Slack;runbookとescalation行列へのバインディング。
4)レイヤー別の主な指標(監視すべきものとその理由)
エッジ/L7
RPS、 95/99パーセンタイル遅延、エラー率(5xx/4xx)、オープン接続。
レート制限/クォータは、CDN/WAF/ファイアウォールをドロップします。
API-шлюз/バックエンド・フォー・フロントエンド
ワーカー/ワークプールによる飽和、リクエストキュー、ダウンストリームへのタイムアウト。
劣化分数(フォールバック、サーキットブレーカ)。
キュー/ストリーミング(カフカ/ラビット/パルサー)
遅延/消費者遅延、バックログの成長率、スループット(msg/s、 MB/s)。
パーティションスキュー、チャーンのリバランス、ISR(カフカ用)、リトレイ/祖父後。
非同期ワーカー
タスクのタイムアウト、キューの長さ、期限切れのSLAタスクの割合。
プールの飽和CPU/メモリ/FD。
キャッシュ(Redis/Memcached)
ヒット比、レイテンシ、立ち退き、中古メモリ、接続されたクライアント/ops/s。
クラスタ:スロット/レプリカ、フェイルオーバーイベント。
PostgreSQL/MySQL/ClickHouse)
アクティブ接続と最大接続、ロック待ち、レプリケーションラグ、バッファ/キャッシュのヒット。
IOPS、読み取り/書き込み遅延、チェックポイント/フラッシュ、膨らみ/断片化。
オブジェクト/ファイルストレージ
PUT/GETレイテンシー、4xx/5xx、 egress、 requests/sec、プロバイダ制限。
外部プロバイダ(決済/LCC/ゲームプロバイダ)
TPS制限、QPSウィンドウ、エラー率/タイムアウト、リトレイキュー、「コールあたりのコスト」。
インフラ
CPU/メモリ/FD/IOPS/ノード/ポッド/ASG上のネットワーク飽和。
HPA/VPAイベント、保留中のポッド、コンテナOOM/スロットリング。
5)容量性アラートの種類
1.静的しきい値
シンプルで簡単:'db_connections> 80% max'。ビーコン信号としては良い。
2.適応的(動的)しきい値
季節性と傾向に基づいて(圧延窓、STL分解)。「週のこの時間/日のために異常に高い」キャッチを許可します。
3.SLO指向(バーンレート)
これらは、エラー予算の摂食率がX時間の地平線でSLOを危険にさらすときにトリガーされます。
4.予後(予報アラート)
「現在のトレンドで20分後、キューは90%に達します。」短いウィンドウでの線形/堅牢/預言者のような予測が使用されます。
5.マルチシグナル
'queue_lag'+'consumer_cpu 85%'+'max'→「手動介入が必要です」という組み合わせでトリガーします。
6)しきい値の方針および反騒音
ハイ・ロー・ウォーターマーク:- アップ:警告70-75%、クレタ島85-90%。Down:ヒステリシス5-10 pp「しきい値で見た」しないために。
- 'for: 5m'基準のため、'for: 10-15m'警告のため。ナイトモード:ページングなしでチャットにノンクリティカルをルーティングします。
- インシデントカードを作成しないように、サービス/クラスタ/ジオグループでグループ化します。
- KYCプロバイダが終了し、APIエラーが発生した場合は、すべての消費者ではなく、統合所有者をページングします。
- 在庫期間中、「予想される成長」のノイズしきい値を上げますが、SLOアラートはそのままにしておきます。
7)ルール例(疑似プロメテウス)
DB接続:
ALERT PostgresConnectionsHigh
IF (pg_stat_activity_active / pg_max_connections) > 0. 85
FOR 5m
LABELS {severity="critical", team="core-db"}
ANNOTATIONS {summary="Postgres connections >85%"}
カフカラグ+オートスケーリングの制限:
ALERT StreamBacklogAtRisk
IF (kafka_consumer_lag > 5_000_000 AND rate(kafka_consumer_lag[5m]) > 50_000)
AND (hpa_desired_replicas == hpa_max_replicas)
FOR 10m
LABELS {severity="critical", team="streaming"}
バーンレートSLO (APIレイテンシー):
ALERT ApiLatencySLOBurn
IF slo_latency_budget_burnrate{le="300ms"} > 4
FOR 15m
LABELS {severity="page", team="api"}
ANNOTATIONS {runbook="wiki://runbooks/api-latency"}
Redisメモリとevikshens:
ALERT RedisEvictions
IF rate(redis_evicted_keys_total[5m]) > 0
AND (redis_used_memory / redis_maxmemory) > 0. 8
FOR 5m
LABELS {severity="warning", team="caching"}
決済プロバイダー-制限:
ALERT PSPThroughputLimitNear
IF increase(psp_calls_total[10m]) > 0. 9 psp_rate_limit_window
FOR 5m
LABELS {severity="warning", team="payments", provider="PSP-X"}
8) SLOアプローチとビジネス優先度
シグナルからビジネスへの影響:キャパシティアラートはSLO(特定のゲーム/地理/GGR指標、入金変換)にリスクを参照する必要があります。
Multilevel:オンコールサービスのための警告;クレタ島-ドメイン所有者ページ;SLOドロップ-主要なインシデントとチームの「概要」チャンネル。
劣化機能:自動負荷低減(部分的な読み取り専用、重い機能の削減、ジャックポット放送の頻度の低下、ライブゲームでの「重い」アニメーションのオフ)。
9)自動スケーリングと「正しい」トリガー
HPA/VPA: CPU/Memoryだけでなく、ビジネスメトリック(RPS、キューラグ、p99レイテンシ)によってもターゲットとなります。
ウォームアップタイミング:コールドスタートとプロバイダの制限(ASGスピンアップ、コンテナビルダー、ウォームアップキャッシュ)を考慮してください。
ガードレール:エラーの雪崩のような成長の停止条件。「scalim問題」に対する保護。
容量-プレイブック:シャード/パーティー/レプリカを追加する場所と方法、トラフィックを地域ごとに再配布する方法。
10)プロセス: 設計から操作への
1.リミットマッピング:各レイヤー(最大コン、IOPS、 TPS、クォータプロバイダ)の「true」ボトルネック制限を収集します。
2.予測メトリクスの選択:最初に「N分で残り」を示す信号。
3.しきい値設計:high/low+SLO-burn+compound。
4.各クレタのRunbook:診断手順(「何を開くか」「、どのコマンドをエスカレートするか」)、アクションの3つのオプション:高速トラバーサル、スケーリング、劣化。
5.テスト:負荷シミュレーション(混乱/ゲーム日)、アラートの乾燥開始、アンチノイズチェック。
6.レビューと採用:signal owner=service owner。所有者なし-ページなし。
7.レトロスペクティブとチューニング:false/missedの毎週の分析;メトリック「MTTA (ack)、 MTTD、 MTTR、ノイズ/信号比」。
11)アンチパターン
CPU> 90%→パニック:レイテンシー/キューとの相関なしでは、これは正常かもしれません。
「すべてのための1つのしきい値」:異なるリージョン/タイムゾーン-異なるトラフィックプロファイル。
runbookなしのアラート:クリアアクションなしのページは、オンコールでドレインします。
プロバイダへの失明:外部クォータ/制限は、多くの場合、スクリプト(PSP、 KYC、不正防止、ゲームプロバイダ)を「破る」最初のものです。
ヒステリシスなし:80%/79%の境界で「ソーイング」。
12) iGaming/金融プラットフォームの特徴
スケジュールのピーク:プライムタイム、トーナメント決勝、主要試合;ターゲットレプリカを宣伝し、事前にキャッシュを埋める。
ライブストリームとジャックポット:ブロードキャストイベントのバースト→ブローカー/ウェブサイトの制限。
支払いとKYC:プロバイダーウィンドウ、不正防止のスコア;予備のルートおよび「優美モード」沈殿物を保って下さい。
ジオバランス:ローカルプロバイダの障害-ヘッドルームがある近隣地域にトラフィックを流用する。
責任:賭け/ジャックポットを失うリスクがある-ドメインチームへのインスタントページ+ビジネスアラート。
13)ダッシュボード(最小セット)
容量の概要:層によってヘッドルーム、上3危険な区域、焼跡率SLO。
ストリームとキュー:遅延、バックログの増加、消費者飽和、HPA状態。
DBとキャッシュ:接続、repl-lag、 p95/p99レイテンシ、ヒット比、立ち退き。
プロバイダ:TPS/windows/クォータ、タイムアウト/エラー、コールコスト。
Release/Featureコンテキスト:カーブの横にあるreleases/phicheflags。
14)実装チェックリスト
- 「真の」制限と所有者のリスト。
- 予測メトリクスマップ+層間の関連付け。
- 静的しきい値+ヒステリシス。
- クリティカルパスのSLOバーンアラート(デポジット、ベット、ライブゲームの起動)。
- キュー/ストリーム/接続の予測アラート。
- ウィンドウの抑制/メンテナンス;アンチノイズ政治。
- Runbook'とコマンド、グラフ、劣化フィルタ。
- 偽陽性とチューニングの毎週の分析。
- マーケティングキャンペーンとイベントカレンダーのアカウント。
15) runbookパターンの例(略称)
シグナル: 'StreamBacklogAtRisk'
目的:遅延の成長を防ぐため>1,000万および処置の遅れ>5分。
診断(3-5分):1.'hpa_desired/max'、スロットル/ルームピットをチェックします。
2.'rate (lag)'、 partitioning (skew)を表示します。
3.ブローカー(ISR、 under-replicated、 network)をチェックします。
アクション:- 消費者レプリカを+N増加させ、最大飛行時間を短縮します。
- 「重要なトピック」の優先度プールを有効にします。
- 一時的に二次治療/濃縮の頻度を減らします。
- 'ASG at max'-クラウドから一時的なアップリフトを要求する場合。並列に-重い機能の劣化を可能にします。
- ロールバック:'lag <100万'15分後に通常のトラフィックプロファイルに戻ります。
- エスカレーション:Kafkaクラスタオーナー、SREプラットフォーム。
16) KPIおよび信号の質
カバレッジ:容量性アラートによって閉じられたクリティカルパスの%。
ノイズ/シグナル:オンコール/週に1ページ以下の偽ページ。
MTTD/MTTR:容量性インシデントは、SLOが発生する5分前≤検出されます。
プロアクティブセーブ:(死後に)予防されたインシデントの数。
17)速い開始(保守的なデフォルト)
DB: 警告75%の接続/IOPS/lat;クレタ85%、ヒステリシス8-10 pp
キャッシュ:'ヒット<0。9'そして'立ち退き>0'>5分-警告;'used_mem> 85%'-クレタ島。
キュー:'lag' height> 30d+'hpa at max'の平均の3 σ-クレタ島。
API: 'p99> SLO1。3'10分-警告;'バーンレート>4'15分-クレタ島。
プロバイダ:'スループット>90%クォータ'-警告;'timeouts> 5%'-クレタ島。
18) FAQ
Q: 「CPU> 80%」だけではないのはなぜですか?
A:レイテンシ/キューコンテキストがなければ、それはノイズです。CPU自体はリスクと同等ではありません。
Q:適応しきい値は必要ですか?
A:はい、毎日/毎週の季節性のために-偽陽性を減らします。
Q:マーケティング/イベントを検討するには?
A:キャンペーンカレンダー→グラフ上の注釈+一時的なノイズ防止調整ですが、SLOアラートには触れません。