Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SRW - Chapter 4. Monitoring

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for coffee coffee
January 05, 2025
8

SRW - Chapter 4. Monitoring

Avatar for coffee

coffee

January 05, 2025

Transcript

  1. 1. システムの可視性向上 現状把握: システム全体の稼働状況を一目で確認できる。 具体例: ダッシュボードでCPU、メモリ、ディスク使用率を確認。 依存するサービス間のトラフィックやエラー率を把握。 2. サービスの健全性を判断 指標:

    レイテンシー(遅延)、エラー率、スループットなどの主要なSLI/SLO。 具体例: 平均応答時間が300msを超えた場合に問題を検知。 SLA違反を防ぐためのリアルタイム監視。 3. 問題発生時の診断 目的: 問題の発生箇所を迅速に特定し、原因を分析。 15
  2. 2. 計算機能(Calculations) 必要な機能 長期データの保存: トレンド分析や過去の異常検出。 パーセンタイル計算: レイテンシーの分布を把握(例: P50, P95, P99)。

    増加カウンター: リクエスト数やSLOベースのアラートを計算。 実装のポイント 詳細データと集約データのバランス: 詳細データ: 異常検知や深い分析に使用。 集約データ: 長期間のトレンド把握に適する。 具体例 レポート作成: 毎日のトラフィックやエラーの集計を自動生成。 異常検知: 25
  3. 4. アラート(Alerts) アラートの役割 異常時にエンジニアに即時通知。 優先度や分類に応じた対応を促進。 必要な機能 1. 分類: エラーの重大度に応じてアラートの優先順位を設定。 軽微な問題は調査チケットを生成。

    重大な問題は即時オンコール通知。 2. アラート抑制: 不要な通知を削減し、エンジニアの負担を軽減。 例: 同一エラーについて複数の通知をまとめる。 具体例 依存サービスの問題: バックエンドの遅延が原因の場合、自身のサービスのアラートを抑制。 27
  4. 特徴 リアルタイム性: データを頻繁に収集し、即時利用可能。 可視化: ダッシュボードやアラートで使用される。 粒度: 高レベルのシステム状態を把握するためのデータ。 主な用途 サービスの状態監視 リアルタイムアラート

    長期的なトレンド分析 メトリクスの具体例 システム指標: CPU使用率、メモリ使用率、ディスクI/O アプリケーション指標: レイテンシー(P50、P95、P99)、エラー率 32
  5. 特徴 粒度の高さ: 詳細なイベント情報を記録。 遡及性: 過去のイベントを詳細に分析可能。 柔軟性: 構造化データやテキスト形式で記録。 主な用途 問題の根本原因の調査 特定のイベントに関する詳細分析

    デバッグやコンプライアンス目的のデータ保存 ログの具体例 HTTPログ: リクエストURL、ステータスコード、レスポンス時間。 エラーログ: スタックトレース、エラーコード。 33
  6. メトリクスとログの比較 特徴 メトリクス ログ 粒度 粗い 高い リアルタイム性 高い 低い

    用途 ダッシュボード、アラート 根本原因分析、詳細な調査 保存形式 数値データ、時系列データ 構造化ログ、テキストログ 34
  7. 1. 設定管理(Configuration Management) 設定をコードとして管理する 利点: 変更履歴を追跡可能: どの設定がいつ変更されたかを把握。 ロールバックが容易: 問題発生時に迅速に元の状態に戻せる。 チーム間の透明性:

    設定変更をコードレビューで確認可能。 推奨される実践 バージョン管理システムを活用: 監視設定をGitなどで管理し、チームで共有。 ツールの利用例: Grafanalib: ダッシュボード設定をコードとして扱うツール。 具体例 アラート設定のコード化: 43
  8. 2. 一貫性の確保(Consistency) なぜ一貫性が重要か? チーム間の連携を強化: 異動したメンバーでもすぐに運用環境に適応可能。 デバッグ効率の向上: 各チームで共通の設定があると問題特定が容易。 実装のポイント 1. 中央管理:

    共通フレームワークや標準ダッシュボードを導入。 2. 自動適用: 全サービスに基本的な監視設定を自動適用。 Googleの事例 Googleでは、全サービスが基本メトリクス(例: CPU使用率、リクエスト数)を自動エクスポー 44
  9. 運用管理のまとめ 1. 設定管理: コードとして扱い、バージョン管理を活用。 2. 一貫性: 中央管理で共通フレームワークを提供。 3. 疎結合: 独立したコンポーネント設計で柔軟性を確保。

    運用管理の効果 安定性: システム変更による問題を最小限に抑える。 効率性: 問題解決と運用負荷の軽減。 進化性: 監視システムが新たな要件に適応可能。 49
  10. 改善事例 1: HTTPステータスコードをメトリクス化 問題 HTTPステータスコードがログにのみ記録されており、以下の課題が発生: アラート設定が困難。 エラー率の変化をリアルタイムで把握できない。 解決策 HTTPステータスコードをメトリクスとしてエクスポート。 例:

    requests_total{status=404} の形式でデータをラベル化。 ダッシュボードでエラー率を可視化。 結果 リアルタイムの可視性が向上。 アラート設定が簡略化され、迅速な対応が可能に。 エラー種別ごとの分析が可能。 52
  11. 問題 既存の監視システムがモノリシック設計: 機能追加や修正がシステム全体に影響。 柔軟性と拡張性に制約。 解決策 各コンポーネントを独立化: データ収集: Prometheus アラート管理: Alertmanager

    可視化: Grafana ダッシュボードを独立したサービスとして分離。 結果 システムの柔軟性が向上。 新機能の追加が容易になり、ダウンタイムを最小化。 55
  12. 改善事例のまとめ 事例 改善内容 結果 HTTPステータスコードをメ トリクス化 ログのみの情報をメトリクスに変換 リアルタイム監視が可能に ログとメトリクスの統合 共通ライブラリで監視とアラートを

    一元管理 誤検知率が低下、迅速な対 応が可能に アラートメールの自動化 クエリ作成をスクリプト化 復旧速度が向上 疎結合設計への移行 モノリシック構造から独立型コンポ ーネントに再設計 柔軟性とスケーラビリティ が向上 56