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 ユーザー インターフェースで指標を取得します。
- GDC コンソールで、プロジェクトを選択します。
- ナビゲーション メニューで、[オペレーション] > [モニタリング] を選択します。
[Grafana で全て表示] をクリックします。
新しいページが開き、Grafana エンドポイントとユーザー インターフェースが表示されます。
ユーザー インターフェースで、ナビゲーション メニューの [Explore] Explore をクリックして、[Explore] ページを開きます。
[Explore] バーのメニューから、ユニバースのタイプに応じて指標を取得するデータソースを選択します。
シングルゾーン ユニバース: [prometheus] を選択して、ユニバースのシングルゾーンの指標を表示します。
マルチゾーン ユニバース: Grafana は異なるゾーンに接続し、ゾーン間のデータを表示できます。指標 ZONE_NAME を選択すると、ログインしているゾーンに関係なく、ユニバースの任意のゾーンの指標が表示されます。
また、単一のダッシュボードでゾーン間のデータ可視化を行い、クエリに複数のゾーンを追加するには、データソースとして [混合] を選択します。
PromQL(Prometheus Query Language)式を使用して指標を検索するクエリを入力します。この手順は、次のいずれかの方法で行います。
- [指標] メニューと [ラベルフィルタ] メニューから、クエリの指標とラベルを選択します。[追加] 追加 をクリックして、クエリにラベルを追加します。[クエリを実行] をクリックします。
- [指標] テキスト フィールドにクエリを直接入力し、Shift+Enter キーを押してクエリを実行します。
このページには、クエリに一致する指標が表示されます。
図 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
リクエストを認証する
- gdcloud CLI をダウンロードしてインストールします。
gdcloud
core/organization_console_url
プロパティを設定します。gdcloud config set core/organization_console_url https://GDC_URL
-
gdcloud auth login
ユーザー名とパスワードを使用して認証し、ログインします。
ログインに成功すると、
gdcloud auth print-identity-token
コマンドを使用して cURL リクエストで認証ヘッダーを使用できます。詳細については、gdcloud auth をご覧ください。
Cortex エンドポイントを呼び出す
curl
ツールを使用して Cortex エンドポイントにアクセスする手順は次のとおりです。
curl
リクエストを認証します。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
ラベルを追加できます。このラベルは POST
、GET
、PUT
の値を取ります。したがって、受信する可能性のあるリクエスト タイプごとに 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 I と J は、名前の競合を避けるために内部で決定される一意の番号です。 |
instance |
スクラップされたサービスの $IP:$PORT 。ワークロード リソースに複数のレプリカがある場合は、このフィールドを使用して区別します。 |
次のコードサンプルは、ラベルの Key-Value ペアを使用してさまざまな指標をクエリする方法を示しています。
プロジェクトで処理されたオペレーションのすべての指標ストリームを表示します。
processed_ops_total
Kubernetes クラスタで収集された処理済みオペレーションを表示します。
processed_ops_total{cluster="CLUSTER_NAME"}
Kubernetes クラスタで収集された CPU 使用率を表示します。
cpu_usage{cluster="CLUSTER_NAME"}
指標の再ラベル付けツールを使用して、スクレイピングされたコンテナで最初に公開されていないラベルを追加し、生成された指標の名前を変更します。収集する指標にラベルを追加するには、MonitoringTarget
カスタム リソースを構成する必要があります。これらのラベルは、カスタム リソースの metricsRelabelings
フィールドで指定します。詳細については、ラベル指標をご覧ください。