Google Distributed Cloud(GDC)エアギャップ アプライアンスにデプロイされたワークロードから指標を収集したら、分析を開始できます。指標を分析するには、有益な Grafana ダッシュボードで指標を可視化してフィルタリングするか、curl ツールを使用して Cortex から直接アクセスして、柔軟なスクリプト作成と自動化を行うことができます。
指標には、次の 2 つの方法のいずれかでアクセスできます。
- Grafana ダッシュボード: CPU 使用率、ストレージ消費量、ネットワーク アクティビティなどの主要な指標を直感的に可視化して、傾向を把握し、異常を特定します。Grafana は、ダッシュボードでワークロード データをフィルタして分析するためのユーザー フレンドリーなインターフェースを提供します。
- Cortex エンドポイント: より高度なユースケースでは、コマンドラインで
curlツールを使用して、プロジェクトの Cortex インスタンスを直接クエリします。Cortex は、プロジェクトの Prometheus 指標を保存し、プログラムによるアクセス用の HTTP エンドポイントを提供します。このアクセス権により、データのエクスポート、タスクの自動化、カスタム統合の構築が可能になります。
始める前に
Grafana ダッシュボードで指標をクエリして可視化するために必要な権限を取得するには、組織 IAM 管理者またはプロジェクト IAM 管理者に、事前定義された組織 Grafana 閲覧者ロールまたはプロジェクト Grafana 閲覧者ロールのいずれかを付与するよう依頼してください。必要なアクセスレベルと権限に応じて、組織またはプロジェクトで Grafana ロールを取得できます。
または、Cortex エンドポイントから指標をクエリするために必要な権限を取得するには、プロジェクトの IAM 管理者に、プロジェクトの Namespace で Project Cortex Prometheus 閲覧者のロールを付与するよう依頼します。
これらのロールの詳細については、IAM 権限を準備するをご覧ください。
次の表に、PA and AO persona の Role 要件をまとめます。
| ペルソナ | オブジェクト | クラスタ | ロール | 名前空間 | グループ / ユーザー | 構成 |
|---|---|---|---|---|---|---|
| PA | grafana | org-admin | project-grafana-viewer |
platform-obs | グループ | 1 |
| PA | cortex | org-admin | project-cortex-prometheus-viewer |
platform-obs | グループ | 2 |
| PA | grafana | org-admin | project-grafana-viewer |
platform-obs | ユーザー | 3 |
| PA | cortex | org-admin | project-cortex-prometheus-viewer |
platform-obs | ユーザー | 4 |
| AO | grafana | org-admin | project-grafana-viewer |
PROJECT_NAMESPACE | グループ | 1 |
| AO | cortex | org-admin | project-cortex-prometheus-viewer |
PROJECT_NAMESPACE | グループ | 2 |
| AO | grafana | org-admin | project-grafana-viewer |
PROJECT_NAMESPACE | ユーザー | 3 |
| AO | cortex | org-admin | project-cortex-prometheus-viewer |
PROJECT_NAMESPACE | ユーザー | 4 |
次の変数を適切に置き換えます。
| 変数 | 説明 |
|---|---|
KUBECONFIG |
この RoleBinding が適用される NAMESPACE を含む特定のクラスタの kubeconfig が必要になります。 |
RULE_NAME |
Namespace 内のこの RoleBinding リソースの一意の名前。例: io-root-cortex-prometheus-viewer |
NAMESPACE |
この RoleBinding が作成され、適用される Kubernetes Namespace。前の表の Namespace 列を探します。 |
EMAIL_ADDRESS |
ロールが付与されるユーザーの ID。多くの場合、メールアドレスです。例: platform-administrator@example.com |
ROLE |
ユーザーに付与する権限を含む Role の名前。前の表に記載されているロールを探します。 |
GROUP_NAME |
PA/AO ユーザーが属する Group の名前。例: pa-group |
ZONE |
ゾーンの名前 |
構成 1
この構成により、org クラスタの PA/AO Grafana にアクセスする権限がユーザー グループに付与されます。この構成を設定したら、このドキュメントの Grafana ダッシュボード セクションを参照して、Grafana で指標を表示します。
kubectl コマンド
一般的なコマンド形式は次のとおりです。
kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --group=`GROUP_NAME` --role=project-grafana-viewer例:
kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-grafana-viewers-binding --role=project-grafana-viewer --group=my-team --namespace=platform-obsYaml ファイル
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: RULE_NAME namespace: NAMESPACE subjects: - kind: Group name: GROUP_NAME apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: project-grafana-viewer apiGroup: rbac.authorization.k8s.io
構成 2
この構成により、org クラスタの PA/AO 指標にプログラムでアクセスできるように、ユーザー グループに権限が付与されます。この構成を設定したら、このドキュメントの cortex エンドポイント セクションを参照して、指標をプログラムでクエリします。
kubectl コマンド
一般的なコマンド形式は次のとおりです。
kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --group=`GROUP_NAME` --role=project-cortex-prometheus-viewer例:
kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-prometheus-viewer-binding --role=project-cortex-prometheus-viewer --group=my-team --namespace=platform-obsYaml ファイル
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: RULE_NAME namespace: NAMESPACE subjects: - kind: Group name: GROUP_NAME apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: project-cortex-prometheus-viewer apiGroup: rbac.authorization.k8s.io
構成 3
この構成により、org クラスタの PA/AO Grafana にアクセスする権限がユーザーに付与されます。この構成を設定したら、このドキュメントの Grafana ダッシュボード セクションを参照して、Grafana で指標を表示します。
kubectl コマンド
一般的なコマンド形式は次のとおりです。
kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --user=`EMAIL_ADDRESS` --role=project-grafana-viewer例:
kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-grafana-viewers-binding --role=project-grafana-viewer --user=my-email@example.com --namespace=platform-obsYaml ファイル
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: RULE_NAME namespace: NAMESPACE subjects: - kind: User name: EMAIL_ADDRESS apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: project-grafana-viewer apiGroup: rbac.authorization.k8s.io
構成 4
この構成により、org クラスタの PA/AO 指標にプログラムでアクセスする権限がユーザーに付与されます。この構成を設定したら、このドキュメントの cortex エンドポイント セクションを参照して、指標をプログラムでクエリします。
kubectl コマンド
一般的なコマンド形式は次のとおりです。
kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --user=`EMAIL_ADDRESS` --role=project-cortex-prometheus-viewer例:
kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-prometheus-viewer-binding --role=project-cortex-prometheus-viewer --user=my-email@example.com --namespace=platform-obsYaml ファイル
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: RULE_NAME namespace: NAMESPACE subjects: - kind: User name: EMAIL_ADDRESS apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: project-cortex-prometheus-viewer apiGroup: rbac.authorization.k8s.io
これらのロールの詳細については、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] を選択して、ユニバースの単一ゾーンの指標を表示します。
PromQL(Prometheus Query Language)式を使用して指標を検索するクエリを入力します。この手順は、次のいずれかの方法で行います。
- [指標] メニューと [ラベルフィルタ] メニューから、クエリの指標とラベルを選択します。[追加] [追加] をクリックして、クエリにラベルを追加します。[クエリを実行] をクリックします。
- [指標] テキスト フィールドにクエリを直接入力し、Shift+Enter キーを押してクエリを実行します。
このページには、クエリに一致する指標が表示されます。
![[Explore] ページで prometheus オプションが選択され、指標が取得されます。](https://docs.cloud.google.com/static/distributed-cloud/hosted/docs/latest/appliance/admin/images/metrics.png?hl=ja)
図 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 形式です。
サンプルクエリとラベル
指標名とラベルのキーと値のペアを使用して指標をクエリできます。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/JI と J は、名前の競合を避けるために内部で決定される一意の番号です。 |
instance |
スクラップされたサービスの $IP:$PORT。ワークロード リソースに複数のレプリカがある場合は、このフィールドを使用して区別します。 |
次のコードサンプルは、ラベルの Key-Value ペアを使用してさまざまな指標をクエリする方法を示しています。
プロジェクトで処理されたオペレーションのすべての指標ストリームを表示します。
processed_ops_totalKubernetes クラスタで収集された処理済みオペレーションを表示します。
processed_ops_total{cluster="CLUSTER_NAME"}Kubernetes クラスタで収集された CPU 使用率を表示します。
cpu_usage{cluster="CLUSTER_NAME"}
指標の再ラベル付けツールを使用して、スクレイピングされたコンテナで最初に公開されていないラベルを追加し、生成された指標の名前を変更します。収集する指標にラベルを追加するように MonitoringTarget カスタム リソースを構成する必要があります。これらのラベルは、カスタム リソースの 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 エンドポイントにアクセスするために必要な権限を取得するには、Project IAM 管理者に Project Cortex Prometheus 閲覧者(project-cortex-prometheus-viewer)ロールの付与を依頼してください。
kubectl コマンドを使用して、各ペルソナの Cortex Prometheus に次のロール バインディングを作成します。
インフラストラクチャ オペレーター(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-viewerPlatform-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アプリケーション オペレーター(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 エンドポイントにアクセスし、指標をクエリします。
- 前提条件を満たしていることを確認します。
- CLI を開きます。
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 です。