Cloud Monitoring の概要

このページでは、Cloud Monitoring のツールとデータモデルの概要を紹介します。Cloud Monitoring を使用すると、次のような重要な質問に答えることができます。

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

このページは、Cloud Monitoring を初めて使用され、サービスやシステムのパフォーマンスをモニタリングできるようにしたい方を対象としています。

Cloud Monitoring の概要

Cloud Monitoring は、使用するサービスと Google Cloud リソースの重要要素の測定値を収集し、このデータを可視化してモニタリングできるツールを提供します。このセクションでは、これらのツールと収集したデータの概要を示します。このページの残りのセクションでは、これらのツールに関する詳細情報と、Cloud Monitoring データモデルを紹介します。

サービスをデプロイ済みであり、サービスが利用不能になった場合に通知を受け取るには、稼働時間チェックを構成して、アラート ポリシーをアタッチします。稼働時間チェックは、定期的にサービスの状態を精査(プローブ)し、そのプローブの成功とレイテンシを指標データとして保存します。アラート ポリシーを稼働時間チェックにアタッチすると、そのポリシーが成功ステータスをモニタリングし、プローブが失敗した場合には通知します。

アラート ポリシーを使用して他の状況をモニタリングすることもできます。たとえば、サービスからの HTTP 200 レスポンスのレイテンシの 90 パーセンタイルが 100 ミリ秒を超えた場合にオンコール チームに通知するアラート ポリシーを作成できます。

Google Cloud プロジェクトに保存されているデータを可視化する場合は、グラフとダッシュボード ツールを使用します。Cloud Monitoring は、ご利用のサービスが使用しているサービスとリソースに基づいてダッシュボードにデータを入力します。ただし、カスタム ダッシュボードを作成して、データをグラフ化したり、インジケーターまたはテキストを表示したりもできます。

Google Cloud プロジェクトで収集されたすべての(数値)指標データをグラフ化してモニタリングできます。

  • Google Cloud サービスによって生成されたシステム指標。これらの指標から、サービスの動作に関する情報を得られます。たとえば、Compute Engine は、仮想マシン(VM)インスタンスごとに 25 個以上の一意の指標を報告します。指標の一覧については、Google Cloud の指標をご覧ください。

  • Cloud Monitoring エージェントが収集するシステムとアプリケーションの指標。これらの指標は、Compute Engine インスタンスや Amazon Elastic Compute Cloud(Amazon EC2)インスタンスで動作しているシステム リソースとアプリケーションに関する追加情報を提供します。任意で、サードパーティ プラグインから指標を収集するようにエージェントを構成できます。この情報には、Apache ウェブサーバーまたは Nginx ウェブサーバーの指標、もしくは MongoDB または PostgreSQL データベースに関する指標が含まれる場合があります。

  • Cloud Monitoring API を使用するか、OpenCensus などのライブラリを使用してサービスが作成するカスタム指標

  • Cloud Logging に書き込まれたログに関する数値情報を収集するログベースの指標は、ユーザーまたは Google によって定義されます。Google が定義しているログベースの指標には、サービスが検出したエラーの数と、Google Cloud プロジェクトが受信したログエントリの合計数が含まれます。カスタム ログベースの指標を定義することもできます。たとえば、任意のクエリに一致するログエントリの数を計上できます。

このページの残りの部分では、稼働時間チェック、アラート ポリシー、グラフ、ダッシュボードに関する詳細情報を紹介します。このページでは、大規模なシステムのモニタリングを簡素化する機能についても紹介します。

指標と時系列について

Cloud Monitoring では、「指標」という用語によって、タイムスタンプ付き測定値群を表します。この測定値群は、データ取得元および測定値の意味に関する情報と合わせて保存されます。このデータは、時系列と呼ばれるデータ構造に格納されます。

時系列の一部を次に示します。

{
  "timeSeries": [
    {
      "resource": {
        "type": "gce_instance",
        "labels": {
          "instance_id": "2708613220420473591",
          "zone": "us-east1-b",
          "project_id": "sampleproject"
        }
      },
      "metric": {
        "labels": {
          "device": "sda1",
          "state": "free"
        },
        "type": "agent.googleapis.com/disk/percent_used"
      },
      "metricKind": "GAUGE",
      "valueType": "DOUBLE",
      "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
          }
        },
      ],
    },

points 配列には、タイムスタンプ付きの測定値が格納されます。ある値の意味を理解するには、測定値とともに格納された他のデータと、それらのフィールドの定義を参照する必要があります。

  • 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": {
          "device": "sda1",
          "state": "free"
        },
        "type": "agent.googleapis.com/disk/percent_used"
      },
    

    Google サービスの場合、type フィールドで、サービスとモニタリング対象を指定します。この例では、Cloud Monitoring エージェントがサービスで、使用中のディスクの割合を測定しています。type フィールドが custom または external で始まる場合、指標は、カスタム指標またはサードパーティによって定義された指標のいずれかになります。

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

    • device: デバイス名。この例では「sd1」です。
    • state: 使用タイプ。「free」、「used」、「reserved」のいずれかとなります。この例の場合、値は「free」です。
  • metricKind フィールドは、時系列内の近似測定値間の関係を表します。

    • GAUGE 指標には、任意の時点で測定される対象の値が格納されます。たとえば、1 時間ごとの一時記録が格納されます。

    • CUMULATIVE 指標には、任意の時点で測定される対象の累積値が格納されます。たとえば、車両の走行距離が格納されます。

    • DELTA 指標には、特定の期間において測定される対象の値の変化を格納します。たとえば、株価の上昇または損失を示す毎日の株式概況が挙げられます。

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

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

  • 各 VM インスタンスのディスク使用量を表示できます。
  • VM インスタンスごと、state ラベルごとにグループ化して、平均ディスク使用量を表示できます。次のスクリーンショットは、この構成のグラフを示しています。

    州ごとにグループ化されたディスクの平均使用量。

  • 特定の VM インスタンスのディスク使用量を表示するには、instance_id ラベルの単一の値で時系列をフィルタリングします。次のスクリーンショットは、この構成のグラフを示しています。

    特定のディスクのディスク使用率。

グラフとダッシュボードを使用して時系列データを表示する

Cloud Monitoring には、時系列データを可視化する方法が以下のとおり複数存在します。

  • Metrics Explorer は、時系列データをすばやくグラフ化したり分析したりできるスタンドアロンのグラフ生成ツールです。デフォルトでは、このツールを使用して作成したグラフは保存されません。ただし、これらのグラフは、カスタム ダッシュボードに保存できます。Metrics Explorer は、Google Cloud Console でのみ使用できます。

  • 事前構成済みのダッシュボードには、Cloud Monitoring によって自動的にデータが入力されます。VM インスタンス、ディスク、Pub/Sub インスタンスのダッシュボードがあります。次のスクリーンショットは、1 つの Google Cloud プロジェクトで使用できる事前構成されたダッシュボーの一覧を示しています。

    事前構成されたダッシュボードの一覧。

    たとえば、[VM インスタンス] ダッシュボードを使用して、メモリとディスクの使用状況の詳細を表示し、IP アドレスを識別し、ネットワーク パケットをドロップしている VM を特定できます。このダッシュボードには、Cloud Monitoring エージェントの使用状況に関する情報と、インストルメンテーションの提案も表示されます。

  • カスタム ダッシュボードでは、表示するデータとそのデータの表示方法を定義できます。ダッシュボードでは、グラフ、テキスト、スコアカードを表示するウィジェット使用して、最新の測定結果が危険ゾーン、警告ゾーン、または正常ゾーンのいずれに位置するかを視覚的に確認できます。すべてのダッシュボード ウィジェットの例については、ダッシュボード ウィジェットをご覧ください。

    カスタム ダッシュボードは、Dashboards API または Cloud Console を使用して作成できます。

グラフを作成するときは、モニタリング対象リソースと、表示したい時系列データの指標タイプを選択します。これらの選択を行うと、フィルタを適用して特定のラベル値に一致する時系列を選択し、ラベルごとにデータをグループ化できます。

グラフの設定では、現在のデータと以前のデータを比較したり、複数の指標の時系列データを表示するグラフを作成したりできます。たとえば、次のスクリーンショットは、ある 1 つの VM で読み書きされたバイト数を示すグラフを示しています。

ディスクの読み取りと書き込みのバイト数を表示する Metrics Explorer。

時系列データの表示の詳細については、ダッシュボードとグラフの使用をご覧ください。

アラートを構成する

アラート ポリシーを作成すると、時系列が特定の条件を満たすときに通知を受け取ることができます。アラート ポリシーは、以下のとおり簡単なものも複雑なものも設定できます。

  • 「ドメイン example.com の稼働時間チェックが 3 分以上失敗した場合は通知する」。

  • 「サーバー上の QPS が 15 未満のうちに 2 か所の Google Cloud ロケーションにある 3 つ以上のウェブサーバーから HTTP 200 レスポンスの 90 パーセンタイルが 100 ミリ秒の応答レイテンシを超えた場合、オンコール チームに通知する」。

次のスクリーンショットは、VM インスタンスの 75% の CPU 使用率が 75 を超えたときに通知するように構成されているアラート ポリシーを示しています。

CPU 使用率をモニタリングするアラート ポリシー。

アラート ポリシーは、Cloud Monitoring API と Google Cloud Console を使用して作成できます。どちらの場合も、Google Cloud Console の [アラート] ページでポリシーを管理、確認できます。

条件は、アラート ポリシーの中核となる要素です。条件は、Cloud Monitoring に監視させたいシステムで発生する可能性のある問題を表します。たとえば、次のような条件を記述できます。

  • ドメイン example.com に対する稼働時間チェックが 3 分以上失敗する。
  • モニタリング対象の VM インスタンスの空き領域が 10% 未満となる。

最初の例では、ドメイン example.com に対する各稼働時間チェックが成功すると、条件が満たされません。2 つ目の例では、VM-A と VM-B がモニタリングされており、VM-A の空き率が 8% の場合、この条件が満たされます。

アラート ポリシーの条件が満たされると、Cloud Monitoring がインシデントを開き、通知を送信します。

  • インシデントは、条件が満たされたときにモニタリング対象リソースに関する情報を格納する永続レコードです。条件が満たされなくなると、インシデントは自動的に終結されます。アラート ダッシュボードでは、未終結と終結済みのすべてのインシデントを表示できます。
  • アラート ポリシーを構成するときに、通知を送信するユーザーを指定します。Monitoring では、メール、Cloud Mobile App、および PagerDuty や Slack などのサービスのような一般的な通知チャネルを使用できます。通知チャネルの全一覧については、通知オプションをご覧ください。

アラート ポリシーの詳細については、アラートの概要をご覧ください。

稼働時間チェックでサービスにアクセスできるかを検証する

ユーザーがサービスにアクセスする方法を模倣する形でサービスの状態を定期的に精査するよう Cloud Monitoring を構成できます。稼働時間チェックを構成すると、少なくとも 3 種類のロケーションのサーバーが定期的にサービスを監視し、精査の成功とレイテンシを記録します。稼働時間チェックが失敗した場合に通知を受け取るには、アラート ポリシーを作成して uptime_check/check_passed 指標をモニタリングします。これにより、稼働時間の結果が記録されます。

Cloud Monitoring には、[稼働時間チェック] ページがあり、稼働時間チェックの概要が表示されます。表示をフィルタリングして、埋め込みリンクで特定の稼働時間チェックの詳細を表示できます。稼働時間チェックの詳細ビューには、レスポンスの成功または失敗とレスポンスのレイテンシに加え、稼働時間チェックの詳細が表示されます。

稼働時間チェックのサンプル詳細ビュー。

このトピックの詳細については、稼働時間チェックの管理をご覧ください。

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

このセクションでは、大規模なシステムの管理に役立つ機能について説明します。

リソース グループを利用する

リソース グループは、指定した記述に沿った Google Cloud または Amazon リソースの動的コレクションです。リソース グループを定義したら、グループを単一のリソースであるかのようにモニタリングできます。たとえば、リソース グループをモニタリングする稼働時間チェックを構成できます。グラフとアラート ポリシーの場合、グループ名が時系列のラベルと同様に扱われるため、グループ名に基づいてフィルタリングできます。

グループ定義のすべての例を次に示します。

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

リソースを追加または削除するたびに、グループのメンバーが自動的に変更されます。

このトピックの詳細については、リソース グループの使用をご覧ください。

複数の Google Cloud プロジェクトの指標を表示する

Cloud Monitoring は、複数の Google Cloud プロジェクトに保存されている時系列を 1 か所で表示および管理できるメカニズムとしてワークスペースを使用します。ワークスペースには、グラフ、ダッシュボード、稼働時間チェック、およびその他の構成アーティファクトが保存されます。

最も一般的なシナリオでは、Google Cloud Console で Monitoring に初めてアクセスすると、プロジェクト用にワークスペースが自動作成されます。この場合、ワークスペースは単一の Google Cloud プロジェクトをモニタリングします。

さまざまな Google Cloud プロジェクトの指標データをモニタリングするワークスペースを構成することにより、さまざまな Google Cloud プロジェクトに送信された指標をモニタリングするグラフとアラート ポリシーを作成できます。

このトピックのコンセプトの概要については、ワークスペースをご覧ください。

プログラマティック インターフェースとグラフィカル インターフェースを使用する

Google Cloud Console を使用して、指標データを表示し、アラート ポリシー、ダッシュボード、稼働時間チェックを作成、管理できます。

また、Cloud Monitoring API を直接使用して、カスタム指標データの書き込み、アラート ポリシー、ダッシュボード、稼働時間チェックの作成と管理を行えます。alertPolicies.list ページなどの Cloud Monitoring API リファレンス ページを使用すると、リファレンス ページから直接 API 呼び出しをテストできます。

通常、アラートの概要などの Cloud Monitoring トピックのドキュメントでは、Google Cloud Console と Cloud Monitoring API の使用方法について説明しています。

次のステップ

Cloud Monitoring を探索するには、Compute Engine インスタンスをモニタリングするためのクイックスタートをお試しください。このクイックスタートでは、稼働時間チェックとアラート ポリシーの作成、Cloud Monitoring コンソールを使用したカスタム ダッシュボードの作成について説明します。

Monitoring の詳細については、次のリソースをご覧ください。

Cloud Monitoring API の詳細については、API とリファレンスをご覧ください。

指標とモニタリング対象リソースのリストについては、以下をご覧ください。

料金、割り当て、制限については、リソースをご覧ください。