指標のクエリと表示

GDC プロジェクトにデプロイされたワークロードから指標を収集した後、プロジェクトのシステム モニタリング インスタンスでダッシュボードの指標をクエリして表示するか、GDC エアギャップ アプライアンスの HTTP API から指標をクエリできます。

ダッシュボードで指標をクエリして表示する

プロジェクトの Grafana インスタンス(システム モニタリング インスタンスとも呼ばれます)には、CPU 使用率、ストレージ使用量、ネットワーク モニタリング、サーバー モニタリング、ログ、アラート、指標など、データ オブザーバビリティのプロジェクト レベルのコンポーネントをモニタリングするためのデータが含まれています。

指標を表示するには、システム モニタリング インスタンスの [探索] ページのダッシュボードを使用します。特定の指標を表示するには、[探索] ページからクエリを実行します。

始める前に

ダッシュボードで指標をクエリして表示する前に、モニタリング インスタンスへのアクセス権を取得する必要があります。詳細については、ダッシュボードへのアクセス権を取得するをご覧ください。

指標のクエリを作成する

プロジェクトのシステム モニタリング インスタンスを使用して、アプリケーションのデータ オブザーバビリティの指標をモニタリングして表示します。インスタンスの統合ユーザー インターフェース(UI)には、標準コンポーネントのデフォルトのダッシュボードと、特定のユースケースのニーズに合わせて作成したカスタマイズされたダッシュボードが含まれています。環境が稼働していると、[使用可能なダッシュボード] ページにいくつかの指標ダッシュボードがすぐに表示されます。

UI から指標をクエリして、プロジェクトから指標を視覚的に取得し、アプリケーションをモニタリングするための統合ビューを取得します。結果をフィルタするには、クエリ言語式を使用してラベルで指標を検索します。

システム モニタリング インスタンス エンドポイント

次の URL は、platform-obs プロジェクトのモニタリング インスタンスのエンドポイントです。

https://GDC_URL/PROJECT_NAMESPACE/grafana

次のように置き換えます。

  • GDC_URL: GDC の組織の URL
  • PROJECT_NAMESPACE: プロジェクトの Namespace

指標をクエリする

プロジェクトから指標をクエリするには、次の操作を行います。

指標を取得する手順は次のとおりです。

  1. GDC コンソールで、プロジェクトを選択します。
  2. ナビゲーション メニューで、[オペレーション] > [モニタリング] をクリックします。
  3. [Grafana で全て表示] をクリックします。

新しいページが開き、プロジェクトのモニタリング インスタンスの URL が表示されます。

  1. モニタリング インスタンスの UI で、ナビゲーション メニューから [探索] Explore をクリックして、[Explore] ページを開きます。
  2. [Explore] バーのプルダウン メニューから [prometheus] を選択して、指標を取得します。
  3. PromQL(Prometheus Query Language)式を使用して指標を検索するクエリを入力します。この手順は、次のいずれかの方法で行います。

    • [指標] プルダウン メニューと [ラベルフィルタ] プルダウン メニューから、クエリの指標とラベルを選択します。[追加] 追加 をクリックして、クエリにラベルを追加します。[クエリを実行] をクリックします。
    • [指標] テキスト フィールドにクエリを直接入力し、Shift+Enter キーを押してクエリを実行します。

    このページには、クエリに一致する指標が表示されます。

Grafana UI の [Explore] ページで prometheus オプションが選択され、指標が取得されます。

図 1: Grafana UI から指標をクエリするメニュー オプション。

図 1 の prometheus オプションには、Grafana からクエリを作成して指標を取得できるインターフェースが表示されます。

指標のクエリに使用できるラベルの値の例については、サンプルクエリとラベルをご覧ください。

サンプルクエリとラベル

収集された指標は、指標名とキーと値のラベルを使用してクエリできます。このため、PromQL クエリの構文は次のようになります。

metric_name{label_one="value", label_two="value"}

ラベルを使用すると、指標の特性を区別できます。このようにして、コンテナ作成者はワークロードで指標を生成し、必要に応じて指標をフィルタするタグを追加します。たとえば、受信した HTTP リクエストの数をカウントする api_http_requests_total 指標を設定できます。次に、この指標に request_method ラベルを追加できます。このラベルは POSTGETPUT の値を取ります。したがって、受信する可能性のあるリクエスト タイプごとに 3 つの指標ストリームを作成します。この場合、HTTP GET リクエストの数を取得するには、次のクエリを実行します。

api_http_requests_total{request_method="GET"}

MonitoringTarget カスタム リソースが追加し、指標のクエリに使用できるデフォルトのラベルを次に示します。

  • _gdch_service: サービスの短い名前
  • cluster: クラスタの名前
  • container_name: Pod 内のコンテナの名前
  • namespace_name: プロジェクトの Namespace
  • pod_name: Pod 名の接頭辞

次の表に、スクレイピング サービスが自動的に追加するラベルを示します。

スクレイピング サービスのデフォルト ラベル
指標ラベル 説明
job 指標の収集に使用されるスクレイピング ジョブの内部名。MonitoringTarget カスタム リソースによって作成されたジョブには、次のパターンで名前が付けられます。

PROJECT_NAME-obs-system/MONITORINGTARGET_NAME.MONITORINGTARGET_NAMESPACE/I/J

PROJECT_NAME-obs-system/MONITORINGTARGET_NAME.MONITORINGTARGET_NAMESPACE/I/J

IJ は、名前の競合を避けるために内部で決定される一意の番号です。
instance スクラップされたサービスの $IP:$PORT。ワークロード リソースに複数のレプリカがある場合は、このフィールドを使用してレプリカを区別します。

次のコードサンプルは、ラベルと値を使用してデータ オブザーバビリティのさまざまな指標をクエリする方法を示しています。

  • プロジェクトで処理されたオペレーションのすべての指標ストリームを表示します。

    processed_ops_total
    
  • クラスタで収集された処理済みオペレーションを表示します。

    processed_ops_total{cluster="CLUSTER_NAME"}
    
  • クラスタで収集された CPU 使用率を表示します。

    cpu_usage{cluster="CLUSTER_NAME"}
    

指標の再ラベル付けツールを使用して、スクレイピングされたコンテナで最初に公開されなかったラベルを追加し、生成された指標の名前を変更します。収集する指標にラベルを追加するには、MonitoringTarget CR を構成する必要があります。これらのラベルを CR の metricsRelabelings フィールドで指定します。詳細については、ラベル指標をご覧ください。

Cortex API から指標をクエリする

Cortex は、GDC の Prometheus 指標の長期保存です。オブザーバビリティ プラットフォームは、プロジェクトから指標、アラート、その他の Prometheus 時系列データをクエリして読み取るための Cortex HTTP API エンドポイントを公開します。

HTTP API から指標を直接クエリして、指標やその他の時系列データを読み取って外部ツールにエクスポートし、自動タスクを設定し、レスポンスを適応させ、システム モニタリングのユースケースに応じてインテグレーションを構築します。たとえば、出力を別のコマンドに挿入したり、詳細をテキスト ファイル形式にエクスポートしたり、Linux cron ジョブを構成したりします。コマンドライン インターフェース(CLI)またはウェブブラウザから API を呼び出し、クエリ言語式をエンドポイント パラメータとして使用して、結果を JSON 形式で取得できます。

このセクションでは、Prometheus API 仕様を使用して CLI から Cortex API エンドポイントを呼び出し、データ オブザーバビリティの指標をクエリする方法について説明します。

始める前に

CLI から指標をクエリする権限を取得する必要があります。Cortex API エンドポイントにアクセスするために必要な権限を取得するには、プロジェクト IAM 管理者に Project Cortex Prometheus 閲覧者(project-cortex-prometheus-viewer)ロールの付与を依頼してください。

kubectl コマンドを使用して、各ペルソナの Cortex Prometheus に次のロール バインディングを作成します。

  1. インフラストラクチャ オペレーター(IO)ルート管理者 - Project Cortex Prometheus Viewer:

    kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
    io-cortex-prometheus-viewer-binding -n infra-obs 
    --user=fop-infrastructure-operator@example.com 
    --role=project-cortex-prometheus-viewer
    
  2. Platform-Admin(PA)Root-Admin - Project Cortex Prometheus Viewer:

    kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
    pa-cortex-prometheus-viewer-binding -n platform-obs 
    --user=fop-platform-admin@example.com --role=project-cortex-prometheus-viewer
    
  3. アプリケーション オペレーター(AO)ルート管理者 - Project Cortex Prometheus Viewer :

    kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
    project-cortex-prometheus-viewer-binding -n PROJECT_NAME 
    --user=USER_NAME --role=project-cortex-prometheus-viewer
    

    次のように置き換えます。

    • PROJECT_NAME: プロジェクトの名前。
    • USER_NAME: ロール バインディングが必要なユーザーのアカウント名。

ロール バインディングを作成すると、ログイン ユーザー名で Prometheus API にアクセスできます。

HTTP API エンドポイント

次の URL は、platform-obs プロジェクトの指標にアクセスするための HTTP API エンドポイントです。

https://GDC_URL/PROJECT_NAME/cortex/prometheus/

次のように置き換えます。

  • GDC_URL: GDC 内の組織の URL。
  • PROJECT_NAME: プロジェクトの名前。

API エンドポイントを呼び出す

次の手順に沿って、CLI から Cortex API エンドポイントにアクセスし、指標をクエリします。

  1. 前提条件を満たしていることを確認します。
  2. CLI を開きます。
  3. curl ツールを使用して Cortex エンドポイントを呼び出し、標準の https://prometheus.io/docs/prometheus/latest/querying/api/ を使用して URL を拡張し、指標をクエリします。次に例を示します。

    curl https://console.org-1.zone1.google.gdch.test/alice/cortex/prometheus/api/v1/query?query=my_metric{cluster="org-1-system"}&time=2015-07-01T20:10:51.781Z
    

コマンドの後に CLI で出力が取得されます。API レスポンスの形式は JSON です。