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 は特殊文字 :_ のみをサポートしているため、Monitoring 指標名にはまず PromQL との互換性が必要です。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 の指標など)をご覧ください。ドキュメント内の各エントリでは、そのタイプの各エントリの最初の列に、関連するモニタリング対象リソースタイプが示されています。モニタリング対象リソースタイプが表示されていない場合は、指標を任意のタイプに関連付けることができます。
  • Metrics Explorer では、次のことができます。

    1. [指標を選択] フィールドに指標名を入力し、メニュー内を移動して指標を選択します。リソース メニューには、該当する指標に有効なリソースタイプ(「VM インスタンス」など)が表示されます。
    2. クエリビルダー ペインのツールバーで、名前が [MQL] または  [PromQL] のボタンを選択します。
    3. [MQL] 切り替えで [MQL] が選択されていることを確認します。言語切り替えボタンは、クエリの書式設定を行うのと同じツールバーにあります。

      表示されたクエリにリソースタイプが表示されます。特に、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_ を追加することで指標ラベルを参照できます。

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

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

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