Cloud Monitoring の概要

このドキュメントでは、Cloud Monitoring が提供するサービスの概要について説明します。これらのサービスは、アプリケーションや他の Google Cloud サービスの動作、健全性、パフォーマンスを把握するのに役立ちます。Cloud Monitoring は、ほとんどの Google Cloud サービスのパフォーマンス情報を自動的に収集して保存します。 Google Cloud Managed Service for Prometheus を使用して、Prometheus 指標を収集できます。Compute Engine 仮想マシン(VM)に Ops エージェントをインストールすると、アプリケーションとサードパーティ アプリケーションから指標とログを収集できます。

Cloud Monitoring が提供するアラート、テスト、可視化サービスにより、次のような重要な疑問に対する回答を得ることが可能です。

  • サービスの負荷はどのくらいか?
  • ウェブサイトが適切に応答しているか?
  • サービスが正しく動作しているか?

Cloud Monitoring は、ほとんどのサービスに対し Google Cloud コンソールと API サポートを提供します。一部のサービスでは Google Cloud CLI や Terraform もサポートされています。alertPolicies.list ページなどの Cloud Monitoring API リファレンス ページを使用すると、リファレンス ページから直接 API 呼び出しをテストできます。

Cloud Monitoring サービス

Cloud Monitoring には、使用しているアプリケーションやその他の Google Cloud サービスの健全性とパフォーマンスを把握するために使用できるさまざまなサービスが用意されています。

アラートと通知

パフォーマンス指標の値が、定義した基準を満たしたときに通知を受け取るには、アラート ポリシーを作成します。アラート ポリシーには、通知を受け取るユーザーまたはグループのリストが含まれています。Monitoring は、メール、Cloud Mobile App、PagerDuty や Slack などのサービスを含む、一般的な通知チャネルをサポートしています。 たとえば、VM の CPU 使用率が 80% を超えたときに通知を受け取るに、アラート ポリシーを作成できます。

各通知には障害に関する関連情報とインシデントへのリンクが含まれています。インシデントは、障害のトラブルシューティングに使用できる情報を格納する永続レコードです。通常、レコードにはインシデントのステータス、ログへのリンク、記録された指標データのグラフ、ラベル、期間が一覧表示されます。

このアラート サービスは、多くの Google Cloud サービスと統合されています。これらの統合が存在する場合、推奨アラートを一覧表示するパネルが表示されるか、アラート ポリシーを作成できるグラフにボタンが表示されます。どちらの場合もアラート ポリシーは事前構成されており、通知するユーザーまたはグループのリストのみを指定します。

アラート ポリシーは、Google Cloud コンソール、Cloud Monitoring API、Google Cloud CLI、または Terraform を使用して作成および管理できます。

プロアクティブなモニタリングと検証

サービス、アプリケーション、ウェブページ、API の可用性、整合性、パフォーマンスをテストするには、合成モニターを作成します。たとえば、HTTP、HTTPS、TCP のエンドポイントの応答性について稼働時間チェックでプローブし、エンドポイントが応答できなかった場合に通知を受け取ることができます。また、無効なリンク チェッカーを作成して、ウェブページをクロールし、無効なリンクが検出されたときに通知を受け取ることもできます。

合成モニターは、Google Cloud コンソール、Cloud Monitoring API、Google Cloud CLI、または Terraform を使用して作成および管理できます。

データの可視化

データを可視化して傾向を把握し、外れ値を特定して、データのその他の詳細の表示するには、ダッシュボード サービスとグラフサービスを使用します。

データの収集、保存

Cloud Monitoring は、次のタイプの指標データを収集して保存します。

  • Cloud Logging に書き込まれたログに関する数値情報を記録するログベースの指標。Google が定義しているログベースの指標には、サービスが検出したエラーの数と、Google Cloud プロジェクトが受信したログエントリの合計数が含まれます。ログベースの指標を定義することもできます。

クエリ言語

アラート ポリシーまたはグラフを作成するときは、モニタリングするかグラフ化するデータを記述するクエリを指定する必要があります。

  • Google Cloud コンソール: クエリを作成するには、メニューから選択することも、クエリを記述することもできます。クエリエディタは、Prometheus Query Language(PromQL)Monitoring Query Language(MQL)で使用できます。クエリエディタは構文のチェックと提案を提供します。また、モニタリング フィルタの式を作成することもできます。

  • Cloud Monitoring API: この API は、Prometheus Query Language(PromQL)、MQL クエリ、Monitoring フィルタ式をサポートしています。

大規模システムをモニタリングする

このセクションでは、リソースをコレクションとして管理する方法と、複数の Google Cloud プロジェクトに保存されている指標をモニタリングする方法について説明します。

リソースをコレクションとして管理する

リソースを個別ではなくコレクションとして管理するには、リソース グループを作成します。リソース グループは、指定した条件を満たすリソースの動的コレクションです。Compute Engine VM インスタンスを Google Cloud プロジェクトに追加するなど、リソースを追加または削除すると、グループのメンバーが自動的に変更されます。リソース グループの例を次に示します。

  • 名前が文字列 prod- で始まる Compute Engine インスタンス。
  • タグ test-cluster が付いているリソース。
  • リージョン A またはリージョン B の Amazon EC2 インスタンス。

リソース グループを定義したら、グループを単一のリソースであるかのようにモニタリングできます。たとえば、リソース グループをモニタリングする稼働時間チェックを構成できます。グラフとアラート ポリシーの場合、グループ名に基づいてフィルタリングできます。

詳細については、リソース グループを構成するをご覧ください。

複数の Google Cloud プロジェクトの指標をモニタリングする

複数の Google Cloud プロジェクトと AWS アカウントの時系列データを 1 つのインターフェースで表示してモニタリングするには、マルチプロジェクトの指標スコープを構成します。

デフォルトでは、Google Cloud コンソールの [Cloud Monitoring] ページでは、スコープ対象プロジェクトに格納されている時系列のみにアクセスできます。スコープ対象プロジェクトは、Google Cloud コンソールのプロジェクト選択ツールで選択したプロジェクトです。スコープ対象プロジェクトには、構成するアラート合成モニターダッシュボードモニタリング グループが格納されています。

スコープ対象プロジェクトは指標スコープもホストします。指標スコープは、スコープ対象プロジェクトに表示される指標を持つプロジェクトとアカウントを定義します。指標スコープを構成して、他の Google Cloud プロジェクトや AWS アカウントからの時系列データを含めることができます。指標スコープを変更する方法については、複数のプロジェクトの指標スコープを構成するをご覧ください。

Cloud Monitoring のデータモデル

このセクションでは、Cloud Monitoring データモデルについて説明します。

  • 指標タイプは、測定対象を表します。指標タイプの例として、VM の CPU 使用率や使用されるディスクの割合などがあります。

  • 時系列は、指標のタイムスタンプ付き測定値と、測定値のソースと意味に関する情報を含むデータ構造です。

時系列に何が含まれるかについては、以下の詳細をご確認ください。

  • points 配列には、タイムスタンプ付きの測定値が含まれます。

    2 つの値を持つ points 配列の例を次に示します。

      "points": [
        {
          "interval": {
            "startTime": "2020-07-27T20:20:21.597143Z",
            "endTime": "2020-07-27T20:20:21.597143Z"
          },
          "value": {
            "doubleValue": 0.473005
          }
        },
        {
          "interval": {
            "startTime": "2020-07-27T20:19:21.597239Z",
            "endTime": "2020-07-27T20:19:21.597239Z"
          },
          "value": {
            "doubleValue": 0.473025
          }
        },
      ],
    

    ある値の意味を理解するには、時系列に含まれる他のデータとそのデータの定義を参照する必要があります。

  • resource フィールドは、モニタリング対象のハードウェア コンポーネントまたはソフトウェア コンポーネントを表します。Cloud Monitoring では、ハードウェア コンポーネントまたはソフトウェア コンポーネントはモニタリング対象リソースと呼ばれます。モニタリング対象リソースの例としては、Compute Engine インスタンスや App Engine アプリケーションなどが挙げられます。モニタリング対象リソースの一覧については、モニタリング対象リソースの一覧をご覧ください。

    resource フィールドの例を次に示します。

      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "2708613220420473591",
          "zone": "us-east1-b",
          "project_id": "sampleproject"
        }
      }
    
    • type フィールドには、モニタリング対象リソースが gce_instance としてリストされます。これは、これらの測定が Compute Engine VM インスタンスで実行されることを示します。

    • labels フィールドには、モニタリング対象リソースに関する詳細情報を提供する Key-Value ペアが格納されています。gce_instance タイプの場合、ラベルはモニタリング対象の VM インスタンスを表します。

  • metric フィールドは、測定対象を表します。

    metric フィールドの例を次に示します。

      "metric": {
        "labels": {
          "instance_name": "test"
        },
        "type": "compute.googleapis.com/instance/cpu/utilization"
      },
    
    • Google サービスの場合、type フィールドで、サービスとモニタリング対象を指定します。この例では、Compute Engine サービスが CPU 使用率を測定しています。 type フィールドが custom または external で始まる場合、指標はカスタム指標またはサードパーティによって定義された指標のいずれかです。

    • labels フィールドには、測定に関する詳細情報を提供する Key-Value ペアが格納されます。これらのラベルは、MetricDescriptor の一部と定義されます。これは、測定されたデータの属性を定義するデータ構造です。指標 compute.googleapis.com/instance/cpu/utilizationMetricDescriptor には instance_name ラベルが含まれます。

  • metricKind フィールドは、時系列内の近似測定値間の関係を表します。

    • GAUGE 指標には、特定の時点で測定される値(時間単位の温度レコードなど)が格納されます。

    • CUMULATIVE 指標には、特定の時点に測定対象となったデータの累積値が保存されます(例: 車両の走行距離計)。

    • DELTA 指標には、特定の期間に測定される対象の値の変化(株式の損失や損失を示す株式の概要など)が保存されます。

  • valueTypeフィールドは、測定値のデータ型、すなわち INT64DOUBLEBOOLSTRING、または DISTRIBUTION を表します。

Cloud Monitoring は、リソースと指標のラベル値の組み合わせごとに 1 つの時系列を書き込みます。これらのラベルを使用して、時系列をグループ化したり、フィルタリングしたりできます。 たとえば、Google Cloud プロジェクトに複数の Compute Engine VM インスタンスが含まれている場合、各 VM インスタンスの CPU 使用率は一意の時系列です。このデータを表示するには、次のようないくつかの方法があります。

  • 各 VM インスタンスの CPU 使用率を表示できます。
  • 特定の VM インスタンスの CPU 使用率を表示するには、instance_id ラベルの単一の値で時系列をフィルタリングします。
  • VM インスタンスごと、machine_type ラベルごとにグループ化して、平均 CPU 使用率を表示できます。次のスクリーンショットは、この構成のグラフを示しています。

    マシンタイプ別にグループ化された平均 CPU 使用率。

料金

一般に、Cloud Monitoring システムの指標は無料であり、外部システム、エージェント、またはアプリケーションの指標はそうではありません。課金対象の指標は、取り込まれたバイト数とサンプル数のいずれかによって課金されます。

Cloud Monitoring の料金の詳細については、次のドキュメントをご覧ください。

次のステップ

  • 複数の Google Cloud プロジェクトと AWS アカウントの指標を表示するように Google Cloud プロジェクトを構成する方法については、指標スコープの概要をご覧ください。