このドキュメントでは、OpenTelemetry Collector をデプロイし、otlphttp エクスポータと Telemetry(OTLP)API を使用するようにコレクタを構成し、テレメトリー ジェネレータを実行して Cloud Monitoring に指標を書き込む方法について説明します。これらの指標は、Cloud Monitoring で確認できます。
Google Kubernetes Engine を使用している場合は、Telemetry API を使用する OpenTelemetry Collector を手動でデプロイして構成する代わりに、GKE 用のマネージド OpenTelemetry を使用できます。
SDK を使用してアプリケーションから Telemetry API に指標を直接送信する場合は、SDK を使用してアプリケーションから指標を送信するで詳細と例をご覧ください。
OpenTelemetry Collector と Telemetry API を OpenTelemetry のゼロコード計測と組み合わせて使用することもできます。詳細については、Java 用の OpenTelemetry ゼロコード計測を使用するをご覧ください。
始める前に
このセクションでは、コレクタのデプロイと使用のために環境を設定する方法について説明します。
Google Cloud プロジェクトを選択または作成する
このチュートリアルで使用する Google Cloud プロジェクトを選択します。 Google Cloud プロジェクトが存在しない場合は作成します。
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
コマンドライン ツールをインストールする
このドキュメントでは、次のコマンドライン ツールを使用します。
gcloudkubectl
gcloud ツールと kubectl ツールは Google Cloud CLI に含まれています。インストールの詳細については、Google Cloud CLI コンポーネントの管理をご覧ください。インストールされている gcloud CLI コンポーネントを確認するには、次のコマンドを実行します。
gcloud components list
gcloud CLI を使用するように構成するには、次のコマンドを実行します。
gcloud auth login gcloud config set project PROJECT_ID
API を有効にする
Google Cloud プロジェクトで Cloud Monitoring API と Telemetry API を有効にします。テレメトリー API(telemetry.googleapis.com)に特に注意してください。この API を初めて使用する可能性があります。
次のコマンドを実行して API を有効にします。
gcloud services enable monitoring.googleapis.com gcloud services enable telemetry.googleapis.com
クラスタの作成
GKE クラスタを作成する。
次のコマンドを実行して、
otlp-testという名前の Google Kubernetes Engine クラスタを作成します。gcloud container clusters create-auto --location CLUSTER_LOCATION otlp-test --project PROJECT_IDクラスタを作成したら、次のコマンドを実行してクラスタに接続します。
gcloud container clusters get-credentials otlp-test --region CLUSTER_LOCATION --project PROJECT_ID
Kubernetes サービス アカウントを承認する
次のコマンドは、必要な Identity and Access Management(IAM)ロールを Kubernetes サービス アカウントに付与します。これらのコマンドは、Workload Identity Federation for GKE を使用していることを前提としています。
export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
gcloud projects add-iam-policy-binding projects/PROJECT_ID \
--role=roles/logging.logWriter \
--member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
--condition=None
gcloud projects add-iam-policy-binding projects/PROJECT_ID \
--role=roles/monitoring.metricWriter \
--member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
--condition=None
gcloud projects add-iam-policy-binding projects/PROJECT_ID \
--role=roles/telemetry.tracesWriter \
--member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
--condition=None
サービス アカウントの形式が異なる場合は、Google Cloud Managed Service for Prometheus のドキュメントにあるコマンドを使用して、次の変更を加えてサービス アカウントを承認できます。
- サービス アカウント名
gmp-test-saを実際のサービス アカウントに置き換えます。 roles/monitoring.metricWriterロールだけでなく、前のコマンドセットに示されているロールを付与します。
OpenTelemetry Collector をデプロイする
次の YAML ファイルのコピーを作成し、collector.yaml という名前のファイルに配置して、コレクタ構成を作成します。次の構成は、GitHub の otlp-k8s-ingest リポジトリにもあります。
コピーでは、${GOOGLE_CLOUD_PROJECT} の出現箇所をプロジェクト ID PROJECT_ID に置き換えてください。
Prometheus 指標の OTLP は、OpenTelemetry Collector バージョン 0.140.0 以降を使用する場合にのみ機能します。
デプロイされた OpenTelemetry Collector を構成する
Kubernetes リソースを作成して、コレクタのデプロイを構成します。
次のコマンドを実行して、
opentelemetryNamespace を作成し、Namespace にコレクタ構成を作成します。kubectl create namespace opentelemetry kubectl create configmap collector-config -n opentelemetry --from-file=collector.yaml次のコマンドを実行して、Kubernetes リソースでコレクタを構成します。
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/2_rbac.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/3_service.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/4_deployment.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/5_hpa.yamlコレクタ Pod が「実行中」になり、1/1 コンテナの準備が整うまで待ちます。Autopilot では、最初のワークロードをデプロイする場合、これに約 3 分かかります。Pod を確認するには、次のコマンドを使用します。
kubectl get po -n opentelemetry -wPod のステータスの監視を停止するには、Ctrl+C キーを押してコマンドを停止します。
コレクタログを調べて、明らかなエラーがないことを確認することもできます。
kubectl logs -n opentelemetry deployment/opentelemetry-collector
テレメトリー生成ツールをデプロイする
オープンソースの telemetrygen ツールを使用して構成をテストできます。このアプリはテレメトリーを生成し、コレクタに送信します。
opentelemetry-demoNamespace にtelemetrygenアプリをデプロイするには、次のコマンドを実行します。kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/main/sample/app.yamlデプロイを作成した後、Pod が作成されて実行を開始するまでに時間がかかることがあります。Pod のステータスを確認するには、次のコマンドを実行します。
kubectl get po -n opentelemetry-demo -wPod のステータスの監視を停止するには、Ctrl+C キーを押してコマンドを停止します。
Metrics Explorer を使用して指標をクエリする
telemetrygen ツールは、gen という指標に書き込みます。この指標は、Metrics Explorer のクエリビルダー インターフェースと PromQL クエリエディタの両方からクエリできます。
Google Cloud コンソールで leaderboard Metrics explorer のページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。
- Metrics Explorer のクエリビルダー インターフェースを使用する場合、指標の完全名は
prometheus.googleapis.com/gen/gaugeです。 - PromQL クエリ エディタを使用する場合は、名前
genを使用して指標をクエリできます。
次の図は、Metrics Explorer の gen 指標のグラフを示しています。
クラスタの削除
指標をクエリしてデプロイを確認したら、クラスタを削除できます。クラスタを削除するには、次のコマンドを実行します。
gcloud container clusters delete --location CLUSTER_LOCATION otlp-test --project PROJECT_ID
次のステップ
- OpenTelemetry ゼロコード インストルメンテーションで OpenTelemetry コレクタと Telemetry API を使用する方法については、Java 用の OpenTelemetry ゼロコード インストルメンテーションを使用するをご覧ください。
- SDK を使用するアプリケーションから指標を送信する方法については、SDK を使用してアプリケーションから指標を送信するをご覧ください。
- 別のエクスポータから
otlphttpエクスポータに移行する方法については、OTLP エクスポータに移行するをご覧ください。 - Telemetry API の詳細については、Telemetry(OTLP)API の概要をご覧ください。