Cloud Monitoring の指標と PromQL のマッピング

Prometheus Query Language(PromQL)を使用して、Google Cloud システム指標Kubernetes 指標カスタム指標ログベースの指標など、Cloud Monitoring により保存されたすべての指標をクエリできます。

Cloud Monitoring の指標名と PromQL のマッピング

Cloud Monitoring の指標名には、ドメイン(compute.googleapis.com/ など)とパス(instance/disk/max_read_ops_count など)の 2 つのコンポーネントが含まれます。PromQL は特殊文字 :_ のみをサポートしているため、PromQL と互換性のある Monitoring 指標名にする必要があります。Monitoring の指標名を PromQL にマッピングするには、次のルールを適用します。

  • 最初の /: に置き換えます。
  • 他のすべての特殊文字(. と他の / 文字を含む)は _ に置き換えます。

次の表に、指標名と同等の PromQL を示します。

Cloud Monitoring の指標名 PromQL の指標名
kubernetes.io/container/cpu/limit_cores kubernetes_io:container_cpu_limit_cores
compute.googleapis.com/instance/cpu/utilization compute_googleapis_com:instance_cpu_utilization
logging.googleapis.com/log_entry_count logging_googleapis_com:log_entry_count
custom.googleapis.com/opencensus/opencensus.io/
http/server/request_count_by_method
custom_googleapis_com:opencensus_opencensus_io_
http_server_request_count_by_method
agent.googleapis.com/disk/io_time agent_googleapis_com:disk_io_time

Cloud Monitoring の分布指標に対するクエリを行うには、Prometheus ヒストグラムと同様に、指標名に _count_sum_bucket サフィックスを追加して、クエリを実行できます。

Cloud Monitoring の指標名 PromQL の指標名
networking.googleapis.com/vm_flow/rtt networking_googleapis_com:vm_flow_rtt_sum
networking_googleapis_com:vm_flow_rtt_count
networking_googleapis_com:vm_flow_rtt_bucket

モニタリング対象リソースタイプの指定

指標が単一の Cloud Monitoring モニタリング対象リソースタイプにのみ関連付けられている場合、手動でリソースタイプを指定しなくても PromQL クエリは機能します。ただし、一部のシステム指標やログベースの指標によって生成された指標など、Cloud Monitoring 内の一部の指標は複数のリソースタイプにマッピングされています。

モニタリング対象リソースタイプが指標にマッピングされていることを確認するには、次のいずれかを行います。

  • Google が選んだ指標については、使用可能な指標のリスト(Google Cloud の指標Kubernetes の指標など)をご覧ください。ドキュメント内の各エントリでは、そのタイプの各エントリの最初の列に、関連するモニタリング対象リソースタイプが示されています。モニタリング対象リソースタイプが表示されていない場合は、指標を任意のタイプに関連付けることができます。
  • Cloud Monitoring の Metrics Explorer で [構成] タブに移動して、指標名を入力します。有効なリソースタイプのリストが表示されます(「VM インスタンス」など)。指標を選択して [MQL] タブに移動すると、fetch フィールドに基盤となるモニタリング対象リソースタイプ(gce_instance など)が表示されます。[MQL] タブは、ログベースの指標、カスタム指標、任意のユーザー定義指標など、多くのモニタリング対象リソースタイプに関連付けることができる指標に便利です。

指標が複数のリソースタイプに関連付けられている場合は、PromQL クエリでリソースタイプを指定する必要があります。特別なラベル monitored_resource があり、これを使用してリソースタイプを選択できます。

ほとんどの場合、モニタリング対象リソースタイプgce_instance のような短い文字列ですが、monitoring.googleapis.com/MetricIngestionAttribution のように完全な URI として表示されることもあります。正しい形式の PromQL クエリは次のようになります。

  • logging_googleapis_com:byte_count{monitored_resource="k8s_container"}
  • custom_googleapis_com:opencensus_opencensus_io_http_server_request_count_by_method{monitored_resource="global"}
  • loadbalancing_googleapis_com:l3_external_egress_bytes_count{monitored_resource="loadbalancing.googleapis.com/ExternalNetworkLoadBalancerRule"}

monitored_resource ラベルの "" の値は特別なもので、Managed Service for Prometheus 指標に使用されるデフォルトの prometheus_target リソースタイプです。

必要なときに monitored_resource ラベルを使用しない場合、次のようなエラーが表示されます。

metric is configured to be used with more than one monitored resource type; series selector must specify a label matcher on monitored resource name

メタデータ ラベルの使用

PromQL では、他の指標と同様にメタデータ ラベルを使用できますが、指標名と同様に PromQL と互換性を持たせる必要があります。メタデータ システムラベル version を参照する構文は metadata_system_version で、メタデータ ユーザーラベル version の構文は metadata_user_version です。メタデータ ラベルを使用した正しい形式の PromQL クエリは、次のようになります。

  • compute_googleapis_com:instance_cpu_utilization{monitored_resource="gce_instance",metadata_user_env="prod"}
  • sum(compute_googleapis_com:instance_cpu_utilization) by (metadata_system_region)

メタデータ ラベルキーで使用できる特殊文字は _ 文字のみです。MULTI_STRING または KEY_VALUE タイプのメタデータ ラベルを使用した集計はサポートされていません。

ラベル競合の解決

Cloud Monitoring では、ラベルは指標またはリソースに属します。指標ラベルのキー名がリソースラベルと同じ場合、クエリのラベルキー名に接頭辞 metric_ を追加することで指標ラベルを参照できます。

たとえば、指標 logging.googleapis.com/user/widget_count でリソースラベルと指標ラベルの両方の名前が pod_name であるとします。

  • リソースラベルの値でフィルタリングするには、次の構文を使用します。
    logging_googleapis_com:user_widget_count{pod_name="RESOURCE_LABEL_VALUE"}

  • 指標ラベルの値でフィルタリングするには、次の構文を使用します。
    logging_googleapis_com:user_widget_count{metric_pod_name="METRIC_LABEL_VALUE"}