インフラストラクチャモニタリング
インフラストラクチャモニタリング
1)目的とフレーム
インフラ監視は、プラットフォームの健全性、パフォーマンス、可用性に関するシグナルのシステムです。彼は次のようにしなければなり:- ユーザーがクラッシュする前に警告する(早期発見)。
- 根本原因(症状から原因)の診断を行います。
- リリースと自動ロールバックのSLOゲートをサポートします。
- インシデント後の分析(データとしての証拠)をフィードします。
支持の主義:設計によって観察できる、より少ない騒音-より多くの信号、反作用の自動化、真実の単一のパネル。
2)観察可能性のトライアド
時系列-レート/デマンド/エラー/彩度(USE/RED)
ログ:コンテキストを含むイベントの詳細;秘密/PIIを含まない。
トレース:因果関係を持つ分散ケース。
- プロファイリング(CPU/ヒープ/ロック/io)、システムレベルのeBPF。
- イベント/監査(K8sイベント、configs/secretsの変更)。
3) SLI/SLO/SLA-品質言語
SLI: 'availability'、 'error_rate'、 'p95_latency'、 'queue_lag'。
SLO(ターゲット): "成功したリクエスト≥ 99。30日で9%"
エラーの予算:許容;自動ストップリリースに使用されます。
SLOの例(YAML):yaml service: "api-gateway"
slis:
- name: success_rate query_good: sum(rate(http_requests_total{status!~"5.."}[5m]))
query_total: sum(rate(http_requests_total[5m]))
slo: 99. 9 window: 30d
4)モニタリングレイヤーマップ
1.ホスト/VM/ノード: CPU/ロード/盗難、 RAM/スワップ、 ディスクIOPS/レイテンシ、ファイルシステム。
2.ネットワーク/LB/DNS: RTT、パケット/ドロップ、バックログ、SYN/タイムアウト、健康プローブ。
3.Kubernetes/Orchestrator: APIサーバー、etcd、コントローラ、スケジューラ;pods/nodes、保留中/evicted、スロットリング、kube-events。
4.サービス/コンテナ:RED (Rate/Errors/Duration)、 readiness/liveness。
5.データベース/キャッシュ:QPS、ロック待ち、レプリケーションラグ、バッファヒット、遅いクエリ。
6.キュー/バス:コンシューマラグ、リクエスト/デッドレター、スループット。
7.ストレージ/クラウド:S3/Blobエラーとレイテンシ、プロバイダからの429/503。
8.境界境界:WAF/Rate Limits、 4xx/5xx by route、 CDN。
9.合成:HTTPスクリプトチェック(デポジット/出力)、TLS/証明書。
10.経済/容量:サービス、利用、ヘッドルームあたりのコスト。
5)ホワイトボックスブラックボックス
ホワイトボックス:サービス内のエクスポート/SDK (Prometheus、 OpenTelemetry)。
Blackbox:異なる地域の外部サンプル(可用性、レイテンシー、TLS有効期限)。
コンバイン:「外側に記号」+「内側に診断」。
yaml modules:
https_2xx:
prober: http http:
method: GET preferred_ip_protocol: "ip4"
6) Kubernetes: 主要な信号
'apiserver_request_total'、 'etcd_server_has_leader'、 etcd fsync。
'container_cpu_cfs_throttled_seconds_total'、 'node_pressure'。
パッド:保留中/CrashLoopBackOff、 OOMKilled、再起動。
プラン/制限:リクエストと制限、PodDisruptionBudget、 HPA/VPA。
ネットワーク:NetworkPolicyが低下し、conntrackの枯渇。
「クラスタの健康」「、ワークロードの飽和」「、トップエラーサービス」。
7) DBおよびキュー
PostgreSQL/MySQL:レプリケーションの遅延、デッドロック、遅いクエリ%、チェックポイントI/O。
Redis/Memcached:ヒット率、立ち退き、拒否された接続。
Kafka/RabbitMQ:消費者の遅延、unacked、 requeue、 ブローカーISR、ディスク使用量。
8) RED/USE指標とビジネス相関
RED: 'rate' (RPS)、 'errors' (4xx/5xx)、' duration '(p95/p99)。
USE(リソース用):使用率、彩度、エラー。
プロダクトと関連付けて下さい:沈殿物/支払の成功、詐欺の旗、転換-これらはカナリア解放のための「監視」です。
9)アラート構造
階層1(ページ):SLOに影響を与えるインシデント(可用性、5xx、レイテンシ、クラスタクリティカルなコンポーネント障害)。
Tier-2(チケット):容量の劣化、SLOに影響を与えないエラーの増加。
Tier-3(お知らせ):トレンド、予測能力、期限切れの証明書。
エスカレーションルール:沈黙時間/重複圧縮、オンコール回転、フォローザサン。
Alertmanagerルートの例:yaml route:
group_by: ["service","severity"]
receiver: "pager"
routes:
- match: { severity: "critical" }
receiver: "pager"
- match: { severity: "warning" }
receiver: "tickets"
10)プロメテウス規則の例
10.SLOしきい値を持つ1 5xxエラー
yaml groups:
- name: api rules:
- alert: HighErrorRate expr:
sum(rate(http_requests_total{status=~"5.."}[5m])) /
sum(rate(http_requests_total[5m])) > 0. 005 for: 10m labels: { severity: "critical", service: "api-gateway" }
annotations:
summary: "5xx > 0. 5% 10m"
runbook: "https://runbooks/api-gateway/5xx"
10.2書き込みエラー予算(マルチウィンドウ書き込み)
yaml
- alert: ErrorBudgetBurn expr:
(1 - (
sum(rate(http_requests_total{status!~"5.."}[1m])) /
sum(rate(http_requests_total[1m]))
)) > (1 - 0. 999) 14 for: 5m labels: { severity: "critical", slo: "99. 9" }
annotations: { summary: "Fast burn >14x for 5m" }
10.3システム彩度(CPUスロットリング)
yaml
- alert: CPUThrottlingHigh expr: rate(container_cpu_cfs_throttled_seconds_total[5m]) > 0. 1 for: 10m labels: { severity: "warning" }
annotations: { summary: "CPU throttling >10%" }
11)ログ: コレクション、正規化、保持
標準化:JSONログ:'ts'、 'level'、 'service'、 'trace_id'、 'user/tenant'。
パイプライン:エージェント(Fluent Bit/Vector)→バッファ→インデックス/ストレージ。
改訂:PII/シークレットマスキング。
保持:速い貯蔵のクラス(7-14日)、冷たいアーカイブ(30-180日)。
セマンティクス:error budgets/deprecates-別々のチャンネル。
12)トレイルとOpenTelemetry
インストゥルメント入力ポイント(ゲートウェイ)、kliyent→servis呼び出し、DB/caches/queues。
クイックナビゲーションのためにメトリックをトレース属性(Exemplars)にバインドします。
中央ゲートウェイとしてのOTel Collector:フィルタリング、サンプリング、選択したバックエンドへのエクスポート。
yaml receivers: { otlp: { protocols: { http: {}, grpc: {} } } }
processors: { batch: {}, tail_sampling: { policies: [ { name: errors, type: status_code, status_codes: [ERROR] } ] } }
exporters: { prometheus: {}, otlp: { endpoint: "traces. sink:4317" } }
service:
pipelines:
metrics: { receivers: [otlp], processors: [batch], exporters: [prometheus] }
traces: { receivers: [otlp], processors: [tail_sampling,batch], exporters: [otlp] }
13)合成および外的な点検
ビジネスシナリオ(ログイン、入金、出金、購入)のHTTP実行。
TLS/Domain:証明書の用語/CAA/DNSの健康。
地域性:主要国/プロバイダ(ルーティング/ブロックリスト)からのサンプル。
合成は、緑色の内部テレメトリーであっても、ユーザーが利用できない場合に警告する必要があります。
14)プロファイリングおよびeBPF
連続的なプロファイリング:熱い機能、ロックの同一証明。
eBPF:システムイベント(syscalls、 TCP retransmitts)、オーバーヘッドを最小限に抑えた製品。
プロファイルアラート(チケット)、およびリリース後のリグレッション-ロールバックのシグナルとして。
15)ダッシュボードと「真実のパネル」
最小セット:1.プラットフォームの概要:主要サービス、エラー予算、アラートによるSLI/SLO。
2.API RED:ルート別のRPS/ERRORS/DURATION。
3.K8sクラスター:コントロールプレーン、容量ヘッドルーム。
4.DB/キャッシュ: lag/locks/slow query%、 hit ratio。
5.キュー:backlog/lag、 fail/retry。
6.Per-release:メトリックの前後の比較(カナリアウィンドウ)。
7.FinOps:名前空間/サービスごとのコスト、アイドル/特大のSS。
16)インシデント、アラートノイズ、エスカレーション
重複排除: サービス/原因グループ化、カスケード抑制
沈黙/メンテナンス:リリース/マイグレーションはすべて赤で「ペイント」しないでください。
Runbooks:診断手順とロールバック「ボタン」を備えた各クリティカルアラート。
Postmortem:タイムライン、彼らが学んだこと、追加/クリーニングされた信号。
17)モニタリングにおける安全性
ルール/データソースの読み取り/編集のためのRBAC。
秘密:エクスポーター/エージェントトークン-シークレットマネージャ経由。
分離:クライアント/テナントメトリクス-別々のスペース/タブに。
Integrity:エージェント/ビルドの署名、GitOpsによる設定(マージレビュー)。
18)ファイナンス&キャパシティ(FinOps)
クォータと予算;異常な成長への警報。
右サイジング:要求/限界の分析、CPU/RAM使用率、重要でないタスクのスポットインスタンス。
パフォーマンスKPIとして「リクエスト/テナントあたりのコスト」。
19)アンチパターン
カスタムSLIを使用しないインフラストラクチャメトリクスのみ。
100+alerts 「about everything」→blindness on-call。
唯一のソースとしてログ(メトリックとトレースなし)。
バージョニング/レビューなしで変更可能なダッシュボード。
合成の欠如:「すべてが緑色です」、しかし、フロントは利用できません。
リリースとの接続はありません。「現時点で変更されたもの」に答えることは不可能です。
20)実装チェックリスト(0-60日)
0-15日
3-5キーサービスのSLI/SLOを定義します。
基本的なエクスポート/エージェントを有効にし、JSONログを標準化します。
Tier-1アラート(可用性、5xx、 p95)を構成します。
16-30日
重要なシナリオの合成を追加します。
入力/重要なサービスでOTelを有効にします。
ダッシュボード「Per-release」とerror-budget burn-rules。
31-60日
高度な信号でDB/キュー/キャッシュをカバーします。
高CPUサービスのeBPF/プロファイリングを実装します。
ルール/ダッシュボード/アラート、定期的なノイズクリーニングのためのGitOps。
21)成熟度の指標
主要サービスのSLOカバレッジ≥ 95%です。
MTTA/MTTR(目標:分/分の数十)。
自動アクションまたはクイックロールバックで閉じられたTier-1アラートの割合。
「便利「/」騒々しい「アラートの比率は>3:1です。
すべての「お金」パスの合成カバレッジ=100%。
22)アプリケーション: ミニテンプレート
Prometheus-ステータスクラスによる空室状況
yaml
- record: job:http:availability:ratio_rate5m expr: sum(rate(http_requests_total{status!~"5.."}[5m])) / sum(rate(http_requests_total[5m]))
グラファナ-カナリアのためのヒント
expr: histogram_quantile(0. 95, sum(rate(http_request_duration_seconds_bucket{version=~"stable canary"}[5m])) by (le,version))
Alertmanager-義務と沈黙
yaml receivers:
- name: pager slack_configs:
- channel: "#oncall"
send_resolved: true inhibit_rules:
- source_match: { severity: "critical" }
target_match: { severity: "warning" }
equal: ["service"]
23)結論
監視はグラフのセットではありませんが、SREオペレーティングシステム:品質契約としてのSLI/SLO、真実の源としてのメトリック/トレイル/ログ、制御信号としてのアラート、「ユーザーボイス」としての合成、変更の規律としてのGitOps。ホストからAPIへの単一のループを構築し、それをリリースとロールバックに結び付けます。プラットフォームは予測可能で、高速で経済的です。