このドキュメントでは、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 を使用して作成および管理できます。
データの可視化
データを可視化して傾向を把握し、外れ値を特定して、データのその他の詳細の表示するには、ダッシュボード サービスとグラフサービスを使用します。
Google Cloud プロジェクトにリソースを追加すると、ダッシュボード サービスによって Google Cloud マネージド ダッシュボードが自動的に作成されます。たとえば、Compute Engine インスタンス、アラート ポリシー、または合成モニターを作成すると、ダッシュボードが作成されます。これらのダッシュボードを使用して、ディスク使用量や IP アドレスなどのパフォーマンスと構成情報を表示し、イベントを表示できます。
表示するデータとそのデータの表示形式を制御するには、カスタム ダッシュボードを作成します。たとえば、Grafana ダッシュボードをインポートしたり、テンプレートからダッシュボードをインストールしたりできます。カスタム ダッシュボードには、グラフ、テーブル、ログとエラーグループ、アラート ポリシーとインシデント、テキストを表示できます。組織内のユーザーやグループとカスタム ダッシュボードを共有し、イベントを表示するようにこれらのダッシュボードを構成することもできます。
ダッシュボードは、Google Cloud コンソールまたは API を使用して作成および管理できます。
グラフサービスである Metrics Explorer を使用すると、時系列データをすばやく可視化して探索できます。グラフの設定では、現在のデータと以前のデータの比較、外れ値やパーセンタイルの表示、複数の指標の表示が可能です。カスタム ダッシュボードにグラフを保存することもできます。
データの収集、保存
Cloud Monitoring は、次のタイプの指標データを収集して保存します。
- Google Cloud サービスによって生成されたシステム指標。 これらの指標から、サービスの運用に関する情報を得られます。
- Ops エージェントが Compute Engine インスタンス上で実行されているシステム リソースやアプリケーションついて収集するシステムとアプリケーションの指標。Apache または Nginx ウェブサーバー、MongoDB または PostgreSQL データベースなどのサードパーティ プラグインから指標を収集するように Ops エージェントを構成できます。
Cloud Monitoring API を使用するか、OpenTelemetry などのライブラリを使用して作成されるユーザー定義指標。
オープンソース ライブラリまたはサードパーティ プロバイダによって定義される [外部指標][metrics-external]。
Google Cloud Managed Service for Prometheus、または Ops エージェントと Prometheus レシーバーまたは OLTP レシーバーを使用して収集される Prometheus 指標。
- 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/utilization
のMetricDescriptor
にはinstance_name
ラベルが含まれます。
metricKind
フィールドは、時系列内の近似測定値間の関係を表します。GAUGE
指標には、特定の時点で測定される値(時間単位の温度レコードなど)が格納されます。CUMULATIVE
指標には、特定の時点に測定対象となったデータの累積値が保存されます(例: 車両の走行距離計)。DELTA
指標には、特定の期間に測定される対象の値の変化(株式の損失や損失を示す株式の概要など)が保存されます。
valueType
フィールドは、測定値のデータ型、すなわちINT64
、DOUBLE
、BOOL
、STRING
、またはDISTRIBUTION
を表します。
Cloud Monitoring は、リソースと指標のラベル値の組み合わせごとに 1 つの時系列を書き込みます。これらのラベルを使用して、時系列をグループ化したり、フィルタリングしたりできます。 たとえば、Google Cloud プロジェクトに複数の Compute Engine VM インスタンスが含まれている場合、各 VM インスタンスの CPU 使用率は一意の時系列です。このデータを表示するには、次のようないくつかの方法があります。
- 各 VM インスタンスの CPU 使用率を表示できます。
- 特定の VM インスタンスの CPU 使用率を表示するには、
instance_id
ラベルの単一の値で時系列をフィルタリングします。 VM インスタンスごと、
machine_type
ラベルごとにグループ化して、平均 CPU 使用率を表示できます。次のスクリーンショットは、この構成のグラフを示しています。
料金
一般に、Cloud Monitoring システムの指標は無料であり、外部システム、エージェント、またはアプリケーションの指標はそうではありません。課金対象の指標は、取り込まれたバイト数とサンプル数のいずれかによって課金されます。
Cloud Monitoring の料金の詳細については、次のドキュメントをご覧ください。
次のステップ
- Cloud Monitoring を探索するには、Compute Engine インスタンスをモニタリングするためのクイックスタートをお試しください。
- 複数の Google Cloud プロジェクトと AWS アカウントの指標を表示するように Google Cloud プロジェクトを構成する方法については、指標スコープの概要をご覧ください。
Cloud Monitoring データモデルについては、指標、時系列、リソースをご覧ください。
Cloud Monitoring API の詳細については、API とリファレンスをご覧ください。
指標とモニタリング対象リソースの一覧については、指標の一覧とモニタリング対象リソースの一覧をご覧ください。