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/ |
custom_googleapis_com:opencensus_opencensus_io_ |
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 では、次のことができます。
- [指標を選択] フィールドに指標名を入力し、メニュー内を移動して指標を選択します。リソース メニューには、該当する指標に有効なリソースタイプ(「VM インスタンス」など)が表示されます。
- クエリビルダー ペインのツールバーで、名前が code [MQL] または code [PromQL] のボタンを選択します。
[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"}
その他のトピック
ルールとアラート
Cloud Monitoring の指標は、Managed Service for Prometheus の記録ルールとアラートルールの両方で使用できます。手順については、マネージド ルールの評価とアラートまたはセルフデプロイ ルールの評価とアラートをご覧ください。
PromQL の学習
PromQL の基本的な使用方法については、オープンソースのドキュメントを参照することをおすすめします。次のリンクが役立ちます。
PromQL の違い
Managed Service for Prometheus の PromQL は、アップストリームの PromQL とは若干異なる場合があります。これらの違いの一覧については、PromQL の違いをご覧ください。