Cloud Monitoring の概要

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

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

このページは、サービスまたはシステムのパフォーマンスのモニタリングを必要とするデベロッパーとシステム管理者を対象としています。

Cloud Monitoring の概要

Cloud Monitoring は、サービスと使用している Google Cloud リソースの測定値を収集します。このセクションでは、これらの測定値の可視化とモニタリングに使用できる Cloud Monitoring ツールの概要について説明します。

アラート ポリシーと稼働時間チェック

サービスのパフォーマンスが定義した基準を満たさない場合に通知を受ける必要がある場合は、アラート ポリシーを作成します。たとえば、サービスからの HTTP 200 レスポンスのレイテンシの 90 パーセンタイルが 100 ミリ秒を超えた場合にオンコール チームに通知するアラート ポリシーを作成できます。

デプロイしたサービスにアクセスできない場合や、正しい応答がない場合に通知を希望する場合は、稼働時間チェックを構成して、通知ポリシーを添付してください。

  • 稼働時間チェックは、定期的にサービスの状態を精査(プローブ)し、そのプローブの成功とレイテンシを指標データとして保存します。
  • アラート ポリシーは、稼働時間チェックの成功ステータスをモニタリングし、プローブが失敗したときに通知します。

グラフとダッシュボード

サービスの現在の負荷を把握したり、過去 1 か月間のサービスのパフォーマンス データを表示したりするには、グラフやダッシュボードのツールを使用します。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 Cloud プロジェクトが受信したログエントリの合計数が含まれます。ログベースの指標を定義することもできます。たとえば、App Engine にデプロイされたアプリケーションの 404 Not Found エラーの数をカウントする指標を作成できます。

指標と時系列について

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

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

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

たとえば、以下は時系列を表しています。

  "timeSeries": [
    {
      "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": {
        "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 配列には、タイムスタンプ付きの測定値が含まれます。

    前の例では、points 配列に 2 つの値が含まれています。

      "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": {
          "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 には、device ラベルと state ラベルが含まれます。

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

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

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

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

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

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

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

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

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

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

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

Cloud Monitoring では、次のような方法で時系列データを可視化できます。

  • 事前定義されたダッシュボード: Cloud Monitoring は、Google Cloud プロジェクトで使用されるリソースに基づいて、これらのダッシュボードを自動的に作成します。

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

  • カスタム ダッシュボード: これらのダッシュボードを作成またはインストールします。カスタム ダッシュボードでは、表示するデータとそのデータの表示方法を定義できます。ダッシュボードには、グラフ、テキスト、ゲージ、スコアカードを表示するウィジェットを追加できます。カスタム ダッシュボードは、Dashboards API または Cloud Console で作成できます。

  • グラフ: グラフをカスタム ダッシュボードに追加することも、Metrics Explorer を使用することもできます。これは、時系列データをすばやくグラフ化し、探索するために設計されたスタンドアロンのグラフ化ツールです。Metrics Explorer でグラフを作成する場合は、そのグラフをカスタム ダッシュボードに保存できます。

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

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

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

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

アラートを構成する

アラート ポリシーを作成すると、1 つの時系列が特定の条件を満たしている場合、または複数の時系列がその条件を満たす場合に通知を受け取ることができます。アラート ポリシーには、単純なものから複雑なものまで、さまざまなものがあります。

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

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

  • Google Cloud プロジェクトの VM インスタンスの CPU 負荷がしきい値 0.6 より大きい場合は通知します。次のスクリーンショットは、このアラート ポリシーを示しています。

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

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

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

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

アラート ポリシーの条件が満たされている場合(たとえば、ドメイン example.com の稼働時間チェックがすべて 3 分間失敗した場合)、Cloud Monitoring はインシデントを開き、通知します)。

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

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

サービスにアクセスできることを確認する

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

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

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

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

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

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

リソース グループの使用

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

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

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

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

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

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

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

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

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

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

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

次のステップ