Cloud Monitoring の概要

このドキュメントでは、Google Cloud のオペレーション スイートの一部である Cloud Monitoring の概要について説明します。Cloud Monitoring は、ほとんどの Google Cloud サービスと統合されており、これらのサービスに関するパフォーマンス情報を自動的に収集して保存します。また、サードパーティ アプリケーションからシステム指標とアプリケーション指標を収集することもできます。Cloud Monitoring が提供するデータ可視化と分析のツールを使用すると、次のような重要な疑問に対する回答を得ることが可能です。

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

Cloud Monitoring は、ほとんどのサービスに対し Google Cloud コンソールと API サポートを提供します。alertPolicies.list ページなどの Cloud Monitoring API リファレンス ページを使用すると、リファレンス ページから直接 API 呼び出しを試せます。

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

サービスの負荷をモニタリングする

サービスの現在の負荷を把握したり、過去 1 か月間のサービスのパフォーマンス データを表示したりするには、グラフやダッシュボードのツールを使用します。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 エラーの数をカウントする指標を作成できます。

データを可視化して傾向を表示する、外れ値を特定する、その他のデータの詳細を表示するには、次のツールを使用できます。

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

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

  • カスタム ダッシュボード: これらのダッシュボードを作成またはインストールします。 カスタム ダッシュボードでは、表示するデータとそのデータの表示方法を定義できます。 たとえば、Google Cloud プロジェクトに保存されている指標データ、アラート ポリシー、ログを表示できます。時系列データはグラフでの表示、ゲージまたはスコアカードを使用した表示、または表形式での表示が可能です。ダッシュボードではテキスト ウィジェットもサポートされます。 カスタム ダッシュボードは、Dashboards API または Google Cloud コンソールで作成できます。

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

グラフを作成するときに、表示する時系列データを選択します。たとえば、us-east-1d ゾーンにある Compute Engine VM インスタンスのデータを表示するようにグラフを構成できます。

グラフの設定では、現在のデータと以前のデータの比較、外れ値やパーセンタイルの表示、複数の指標の表示が可能です。たとえば、次のスクリーンショットは、ある 1 つの VM で読み書きされたバイト数を示すグラフを示しています。

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

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

ウェブサイトの可用性をモニタリングする

ウェブサイトが応答しているかどうかをモニタリングするには、稼働時間チェックを構成します。これらのチェックでは、お客様がサービスへアクセスする方法を模倣してサービスを定期的にプローブし、プローブの成功とレイテンシを記録します。

Cloud Monitoring には、稼働時間チェックに関する情報を表示するために、各稼働時間チェックのステータスを要約したダッシュボードと、各チェックに関する詳細情報を提供するダッシュボードが用意されています。稼働時間チェックの詳細ビューには、レスポンスの成功または失敗とレスポンスのレイテンシに加え、稼働時間チェックの詳細が表示されます。

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

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

サービスのパフォーマンス低下時に通知を受け取る

サービスのパフォーマンスが定義した基準を満たさない場合に通知を受けるには、アラート ポリシーを作成します。たとえば、サービスから HTTP 200 レスポンスのレイテンシの 90 パーセンタイルが 100 ミリ秒を超えた場合にオンコール チームに通知するアラート ポリシーを作成できます。同様に、稼働時間チェックが失敗したときに通知を受け取ることもできます。

アラート ポリシーを使用すると、1 つの時系列で条件が満たされるかどうか、またはその前に複数の時系列が条件を満たす必要があるかどうかを構成できます。アラート ポリシーは、簡単なものも複雑なものも設定できます。次に例を示します。

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

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

  • Google Cloud プロジェクトの VM インスタンスの CPU 負荷がしきい値 0.6 より大きい場合は通知します。

Cloud Monitoring には、アラート ポリシーのステータスの概要を表示するダッシュボードと、ポリシーごとに詳細情報を含むダッシュボードが用意されています。次のスクリーンショットに示すように、アラートの詳細なダッシュボードには、モニタリング対象のデータ、アラートのしきい値、通知チャネル、インシデントのリスト、通知に含まれているユーザー定義のドキュメントが表示されます。

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

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

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

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

インシデントは、モニタリング対象リソースに関する情報を格納する永続レコードです。たとえば、CPU 使用率をモニタリングするアラート ポリシーには、使用率が条件を満たしている VM に関する情報が保存されます。条件が満たされなくなると、インシデントは自動的に終結されます。アラート ダッシュボードでは、未終結と終結済みのすべてのインシデントを表示できます。

アラート ポリシーを構成するときに、通知を送信するユーザーを指定します。Monitoring は、メール、Cloud Mobile App、PagerDuty や Slack などのサービスを含む、一般的な通知チャネルをサポートしています。 通知チャネルの全一覧については、通知オプションをご覧ください。

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

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

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

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

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

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

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

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

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

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

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

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

Cloud Monitoring のデータモデル

このセクションでは、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 インスタンスの CPU 使用率は一意の時系列になります。このデータを表示するには、次のようないくつかの方法があります。

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

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

次のステップ