指標のクエリと表示

Google Distributed Cloud(GDC)エアギャップにデプロイされたワークロードから指標を収集したら、分析を開始できます。指標を分析するには、有益な Grafana ダッシュボードで指標を可視化してフィルタリングするか、curl ツールを使用して Cortex から直接アクセスし、柔軟なスクリプト作成と自動化を行います。

このページでは、Grafana ユーザー インターフェースと Cortex エンドポイントの curl ツールを使用して指標をクエリして可視化し、ワークロードのパフォーマンスに関する分析情報を取得する方法について詳しく説明します。

指標には、次の 2 つの方法のいずれかでアクセスできます。

  • Grafana ダッシュボード: CPU 使用率、ストレージ消費量、ネットワーク アクティビティなどの主要な指標を直感的に可視化して、傾向を把握し、異常を特定します。Grafana は、ダッシュボードでワークロード データをフィルタして分析するための使いやすいインターフェースを提供します。
  • Cortex エンドポイント: より高度なユースケースでは、コマンドラインで curl ツールを使用して、プロジェクトの Cortex インスタンスを直接クエリします。Cortex は、プロジェクトの Prometheus 指標を保存し、プログラムによるアクセス用の HTTP エンドポイントを提供します。このアクセス権により、データのエクスポート、タスクの自動化、カスタム統合の構築が可能になります。

始める前に

Grafana ダッシュボードで指標をクエリして可視化するために必要な権限を取得するには、組織 IAM 管理者またはプロジェクト IAM 管理者に、事前定義された組織 Grafana 閲覧者ロールまたはプロジェクト Grafana 閲覧者ロールのいずれかを付与するよう依頼します。必要なアクセスレベルと権限に応じて、組織またはプロジェクトで Grafana ロールを取得できます。

または、Cortex エンドポイントから指標をクエリするために必要な権限を取得するには、プロジェクトの IAM 管理者に、プロジェクトの Namespace で Project Cortex Prometheus 閲覧者のロールを付与するよう依頼します。

これらのロールの詳細については、IAM 権限を準備するをご覧ください。

指標を取得してフィルタリングする

次のいずれかの方法を選択して、クエリを作成し、傾向を可視化して、プロジェクト ワークロードの指標をフィルタします。

Grafana ダッシュボード

このセクションでは、Grafana ダッシュボードを使用して指標にアクセスする方法について説明します。

Grafana エンドポイントを特定する

次の URL は、プロジェクトの Grafana インスタンスのエンドポイントです。

  https://GDC_URL/PROJECT_NAMESPACE/grafana

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

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

    たとえば、org-1 組織の platform-obs プロジェクトの Grafana エンドポイントは https://org-1/platform-obs/grafana です。

Grafana ユーザー インターフェースで指標を表示する

Grafana ユーザー インターフェースで指標を取得します。

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

    新しいページが開き、Grafana エンドポイントとユーザー インターフェースが表示されます。

  4. ユーザー インターフェースで、ナビゲーション メニューの [Explore] Explore をクリックして、[Explore] ページを開きます。

  5. [Explore] バーのメニューから、ユニバースのタイプに応じて指標を取得するデータソースを選択します。

    • シングルゾーン ユニバース: [prometheus] を選択して、ユニバースのシングルゾーンの指標を表示します。

    • マルチゾーン ユニバース: Grafana は異なるゾーンに接続し、ゾーン間のデータを表示できます。指標 ZONE_NAME を選択すると、ログインしているゾーンに関係なく、ユニバースの任意のゾーンの指標が表示されます。

      また、単一のダッシュボードでゾーン間のデータ可視化を行い、クエリに複数のゾーンを追加するには、データソースとして [混合] を選択します。

  6. PromQL(Prometheus Query Language)式を使用して指標を検索するクエリを入力します。この手順は、次のいずれかの方法で行います。

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

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

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

    図 1: Grafana ユーザー インターフェースから指標をクエリするメニュー オプション。

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

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

Cortex エンドポイント

このセクションでは、Cortex を使用して指標にアクセスする方法について説明します。

Cortex エンドポイントを特定する

次の URL は、プロジェクトの Cortex インスタンスのエンドポイントです。

  https://GDC_URL/PROJECT_NAMESPACE/cortex/prometheus/

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

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

    たとえば、org-1 組織の platform-obs プロジェクトの Cortex エンドポイントは https://org-1/platform-obs/cortex/prometheus/ です。

curl リクエストを認証する

  1. gdcloud CLI をダウンロードしてインストールします
  2. gdcloud core/organization_console_url プロパティを設定します。

    gdcloud config set core/organization_console_url
    https://GDC_URL
    
  3. 構成済みの ID プロバイダでログインする:

    gdcloud auth login
    
  4. ユーザー名とパスワードを使用して認証し、ログインします。

    ログインに成功すると、gdcloud auth print-identity-token コマンドを使用して cURL リクエストで認証ヘッダーを使用できます。詳細については、gdcloud auth をご覧ください。

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

curl ツールを使用して Cortex エンドポイントにアクセスする手順は次のとおりです。

  1. curl リクエストを認証します
  2. curl を使用して Cortex エンドポイントを呼び出し、標準の Prometheus HTTP API(https://prometheus.io/docs/prometheus/latest/querying/api/)を使用して URL を拡張し、指標をクエリします。

    curl リクエストの例を次に示します。

    curl https://GDC_URL/PROJECT_NAME/cortex/prometheus/api/v1/query?query=my_metric{cluster="my-cluster"}&time=2015-07-01T20:10:51.781Z \
    -H "Authorization: Bearer $(gdcloud auth print-identity-token \
    --audiences=https://GDC_URL)"
    

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

サンプルクエリとラベル

指標名とラベルの Key-Value ペアを使用して指標をクエリできます。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"}

指標とラベルの詳細については、https://prometheus.io/docs/practices/naming/ をご覧ください。

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

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

次の表に、Prometheus が自動的に追加するラベルを示します。

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

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

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

次のコードサンプルは、ラベルの Key-Value ペアを使用してさまざまな指標をクエリする方法を示しています。

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

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

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

    cpu_usage{cluster="CLUSTER_NAME"}
    

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