Google Cloud アーキテクチャ フレームワークのこのドキュメントでは、モニタリング、アラート、ロギングを設定し、システムの動作に基づいて動作させる方法について説明します。有用な指標を特定して追跡し、システムに関する情報が見やすくなるようにダッシュボードを構築します。
DevOps Resource and Assessment(DORA)の研究プログラムでは、次のようにモニタリングを定義しています。
「ビジネス上の意思決定を行うことを目的として、アプリケーションやインフラストラクチャをトラックして情報を収集、分析、使用するプロセス。モニタリングは、システムと作業に関する分析情報を提供する重要な機能です。」
Monitoring により、サービス オーナーは次のことができます。
- サービスへの変更がパフォーマンスに影響する場合に、十分な情報に基づいて判断を行う。
- インシデント対応に科学的アプローチを適用する
- ビジネス目標との整合性を測定する
モニタリング、ロギング、アラートを使用すると、次のことが可能になります。
- 長期的な傾向を分析する
- 一定期間のテストを比較する
- 重要な指標に関するアラートを定義する
- 関連性の高いリアルタイム ダッシュボードを作成する
- 振り返り分析を行う。
- ビジネス主導の指標とシステムの健全性の指標の両方をモニタリングする。
- ビジネス主導の指標は、システムがビジネスをどの程度サポートしているかを理解するのに役立ちます。たとえば、指標を使用して次の対象をモニタリングします。
- ユーザーにサービスを提供するためのアプリケーションのコスト
- デザイン刷新後のサイトのトラフィック量の変化
- ユーザーがサイトで商品を購入するまでの時間
- システムの健全性の指標は、システムが正常に動作しているかどうかと、パフォーマンスが許容できるレベル内にあるかどうかを把握する助けになります。
- ビジネス主導の指標は、システムがビジネスをどの程度サポートしているかを理解するのに役立ちます。たとえば、指標を使用して次の対象をモニタリングします。
システムをモニタリングするには、次の 4 つのシグナルを使用します。
- レイテンシ。リクエストのレスポンスにかかる時間。
- トラフィック。システムに対する需要はどれくらいか。
- エラー。失敗したリクエストの割合です。失敗は、明示的(HTTP 500 など)、暗黙的(HTTP 200 の成功レスポンスが間違ったコンテンツと結合されているなど)、またはポリシー別(たとえば、commit のレスポンス時間が 1 秒である場合、1 秒を超えるリクエストはエラーになります)です。
- 飽和度。サービスの完全性。飽和度はシステムの割合の測定であり、最も制約のあるリソースを強調します(メモリ制約のあるシステムではメモリを表示し、I/O 制約のあるシステムでは I/O を表示)。
モニタリング プランを作成する
組織のミッションとその運用戦略に沿ったモニタリング プランを作成します。アプリケーション開発時のモニタリングとオブザーバビリティのプランニングを含めます。アプリケーション開発の早い段階でモニタリング プランを取り入れることで、組織のオペレーショナル エクセレンスを実現できます。
モニタリング プランには次の情報を含めます。
- オンプレミス リソースやクラウド リソースなど、すべてのシステムを含めます。
- クラウドコストのモニタリングを使用して、スケーリング イベントによって使用量が予算のしきい値を超えないようにします。
- インフラストラクチャのパフォーマンス、ユーザー エクスペリエンス、ビジネスの重要業績評価指標(KPI)を測定するさまざまなモニタリング戦略を構築します。たとえば、静的なしきい値はインフラストラクチャのパフォーマンスを測定するのには適していますが、ユーザー エクスペリエンスを正確に反映していない場合などがあります。
モニタリング戦略が成熟したら、プランを更新します。システムの改善に向けてプランを継続的に見直します。
組織のあらゆる側面を測定する指標を定義する
デプロイの動作の測定に必要な指標を定義します。手順は次のとおりです。
- ビジネス目標を定義する。
- パフォーマンスを測定するための定量化可能な情報を提供する指標と KPI を特定する。指標の定義は、ビジネスニーズ(クラウドコストを含む)から技術コンポーネントまで、組織のあらゆる側面に対応するようにします。
- これらの指標を使用して、アプリケーションのサービスレベル指標(SLI)を作成する。詳しくは、適切な SLI の選択をご覧ください。
各コンポーネントの共通指標
指標は、インフラストラクチャやネットワーキングからビジネス ロジックまで、サービスのあらゆるレベルで生成されます。次に例を示します。
- インフラストラクチャ指標:
- 仮想マシン統計情報。インスタンス、CPU、メモリ、使用率、カウントなど。
- コンテナベースの統計。クラスタ使用率、クラスタ容量、Pod レベルの使用率、カウントなど。
- ネットワーク統計。上り(内向き)/ 下り(外向き)、コンポーネント間の帯域幅、レイテンシ、スループットなど。
- ロードバランサによって測定される 1 秒あたりのリクエスト数
- ディスクあたりの合計読み取りディスク ブロック数
- 特定のネットワーク インターフェースを介して送信されたパケット
- 特定のプロセスのメモリ ヒープサイズ
- レスポンス レイテンシの分布
- データベース インスタンスによって拒否された無効なクエリの数
- アプリケーション指標:
- アプリケーション固有の動作。秒間クエリ数、1 秒あたりの書き込み数、1 秒あたりの送信メッセージ数など。
- マネージド サービス統計の指標:
- Google マネージド サービス(BigQuery、App Engine、Bigtable などの API またはプロダクト)の QPS、スループット、レイテンシ、使用率
- ネットワーク接続統計の指標:
- オンプレミス システムまたは Google Cloud 外のシステムへの接続に関する VPN / 相互接続関連の統計。
- SLI
- システムの全体的な正常性に関連する指標。
モニタリングを設定する
オンプレミス リソースとクラウド リソースの両方をモニタリングするようにモニタリングを設定します。
次のようなモニタリング ソリューションを選択してください。
- プラットフォームに依存しない
- オンプレミス、ハイブリッド、マルチクラウドの環境をモニタリングするための統一された機能を提供する
1 つのソースから取得したモニタリング データを他のソースからのデータと統合することで、統合されたダッシュボードで指標と可視化を表示する
モニタリングを設定する際は、可能であればモニタリング タスクを自動化してください。
Google Cloud によるモニタリング
Cloud Monitoring などのモニタリング サービスを使用すると、モニタリング サービスを自分で構築するよりも簡単です。複雑なアプリケーションのモニタリングは、それ自体がエンジニアリングに多大な労力を要する作業です。インストルメンテーション、データの収集と表示、アラート設定の既存のインフラストラクチャがあったとしても、構築と保守は片手間でできるものではなく、フルタイムの仕事になります。
Cloud Monitoring を使用して、オンプレミス リソースとクラウド リソースの両方の、アプリケーションおよびインフラストラクチャのパフォーマンス、可用性、正常性を可視化することを検討してください。
Cloud Monitoring は、Google Cloud Observability に含まれるマネージド サービスです。Cloud Monitoring を使用すると、Google Cloud サービスとカスタム指標をモニタリングできます。Cloud Monitoring には、サードパーティのモニタリング ツールと統合するための API が用意されています。
Cloud Monitoring は、システムのクラウドベースのインフラストラクチャからの指標、ログ、イベントを集約します。このデータは、デベロッパーとオペレーターにとって、豊富な観測可能シグナルのセットとなります。これらのシグナルにより、根本原因の分析を迅速に行い、解決までの平均時間を短縮できます。Cloud Monitoring を使用すると、ビジネス目標に応じたアラートとカスタム指標を定義し、システムの健全性の集計、可視化、モニタリングを行うことができます。
Cloud Monitoring は、クラウドとオープンソース アプリケーション サービス用のデフォルトのダッシュボードを提供します。指標モデルを使用すると、強力な可視化ツールでカスタム ダッシュボードを定義し、Metrics Explorer でグラフを構成できます。
アラートの設定
優れたアラート システムにより、機能のリリース能力が向上します。パフォーマンスを時系列で比較することで、機能のリリースの速度やロールバックの必要性を判断できます。ロールバックの詳細については、以前のリリースをシームレスに復元するをご覧ください。
アラートを設定する際に、アラートを重要な指標に直接マッピングします。これらの重要な指標としては、次のようなものがあります。
- 4 つのゴールデン シグナル:
- レイテンシ
- トラフィック
- エラー
- 飽和度
- システムの健全性
- サービスの使用状況
- セキュリティ イベント
- ユーザー エクスペリエンス
解決までの時間を短縮するために、アラートから行動に移せるようにします。そのためには、アラートごとに以下のことを行います。
- モニタリングの対象やビジネスへの影響など、明確な説明を記述します。
- すぐに対処するために必要なすべての情報を用意します。アラートの意味を把握するのに数回のクリックやナビゲーションが必要であれば、すぐに行動を起こすのは難しいでしょう。
- アラートの優先度を定義します。
- アラートに対応するユーザーやチームを明確に定義します。
重要なアプリケーションやサービスに対しては、サービスの健全性の低下、構成の変更、スループットの急増など、一般的な障害条件によってトリガーされるアラートに自動修復を設定します。
アラートを設定する際は、手間を省くようにします。たとえば、よく発生するエラーへの対応をなくすには、こうしたエラーの修正を自動化し、アラートがトリガーされないようにします。これにより、担当のユーザーは、アプリケーションの運用コンポーネントの信頼性を向上させることに集中できます。詳細については、自動化の文化を創るをご覧ください。
モニタリング ダッシュボードとアラート ダッシュボードを作成する
モニタリングを実施したら、モニタリングとアラートのシステムからの情報を含む、関連性のある複雑でないダッシュボードを作成します。
信頼性の目標に関連付けるために、ダッシュボードを可視化する適切な方法を選択することが難しい場合があります。以下の両方を表示するダッシュボードを作成します。
- 短期的分析とリアルタイム分析
- 長期的分析
ビジュアル管理の実装の詳細については、機能に関する記事のビジュアル管理をご覧ください。
重要なアプリケーションのロギングを有効にする
ロギング サービスはシステムのモニタリングに不可欠です。指標はモニタリングする特定の項目の基礎となりますが、ログにはデバッグ、セキュリティ関連の分析、コンプライアンス要件に必要な、重要な情報が含まれます。
システムが生成したデータをログに記録することで、効果的なセキュリティ ポスチャーを実現できます。ロギングとセキュリティの詳細については、アーキテクチャ フレームワークのセキュリティ カテゴリにあるロギングと検出制御の実装をご覧ください。
Cloud Logging は、ログデータとイベントの保存、検索、分析、モニタリング、アラートに使用できる統合ロギング サービスです。Logging は、Google Cloud やその他のクラウド プロバイダのサービスからログを自動的に収集します。これらのログを使用して、モニタリング用の指標を作成し、Cloud Storage、BigQuery、Pub/Sub などの外部サービスにログをエクスポートできます。
監査証跡を設定する
Google Cloud プロジェクトで「誰がいつどこで何をしたか」を調べるには、Cloud Audit Logs を使用します。
Cloud Audit Logs には、次のような数種類のアクティビティがキャプチャされます。
- 管理アクティビティ ログには、リソースの構成またはメタデータを変更する API 呼び出しなどの管理操作に関するログエントリが含まれます。管理アクティビティ ログは常に有効です。
- データアクセス監査ログには、ユーザー提供データを作成、変更、または読み込む API 呼び出しが記録されます。データアクセス監査ログは、非常に大きくなる可能性があるため、デフォルトでは無効になっていますが、データ アクセスログを生成する Google Cloud サービスを構成できます。
監査ログを書き込む Google Cloud サービスの一覧については、監査ログ付きの Google サービスをご覧ください。Identity and Access Management(IAM)コントロールを使用して、監査ログにアクセスできるユーザーを制限します。
次のステップ
- クラウド サポート プロセスとエスカレーション プロセスを確立する(このシリーズの次のドキュメント)。
- Google Cloud Observability を確認する。
- Cloud Monitoring をデプロイして、アプリケーションとインフラストラクチャのパフォーマンス、可用性、健全性を可視化する。
- モニタリングとオブザーバビリティの詳細を確認する。
- アーキテクチャ フレームワークの他のカテゴリ(システム設計、セキュリティ、プライバシー、コンプライアンス、信頼性、コストの最適化、パフォーマンスの最適化)を確認する。