このドキュメントでは、Google Kubernetes Engine(GKE)用のマネージド OpenTelemetry について説明します。これにより、GKE で実行されているアプリケーションから OpenTelemetry Protocol(OTLP)のトレース、指標、ログを Google Cloud Observability に送信できます。Managed OpenTelemetry は、GKE でトレースデータを収集するための Google Cloud の唯一のマネージド ソリューションです。
Google Kubernetes Engine(GKE)用のマネージド OpenTelemetry を使用するには、OpenTelemetry プロトコルを使用してシグナルを生成するようにアプリケーションがすでに計測されている必要があります。詳細については、サポートされているワークロードをご覧ください。
Managed OpenTelemetry for GKE には 2 つのコンポーネントがあります。
- マネージド コレクション: マネージド コレクタは、コレクタを管理することなく、ワークロードが OTLP 形式でトレース、指標、ログを送信するための宛先として、クラスタ内 OpenTelemetry Protocol エンドポイントを提供します。
自動構成:
Instrumentationというカスタム リソースを使用すると、GKE ワークロードの自動構成が可能になり、関連付けられた OpenTelemetry トレース、指標、ログを生成して取り込むことができます。このアプローチでは、Agent Development Kit(ADK)がサポートされます。OpenTelemetry SDK を使用し、標準の OpenTelemetry 環境変数で構成されているワークロードには、
Instrumentationカスタム リソースを使用できます。このInstrumentationカスタム リソースinstrumentations.telemetry.googleapis.comは、OpenTelemetry オペレーターのInstrumentationリソースとは異なるリソースです。
Managed OpenTelemetry for GKE を使用する手順については、Managed OpenTelemetry for GKE をデプロイするをご覧ください。
GKE 用マネージド OpenTelemetry を使用すると、OpenTelemetry Collector を管理、運用することなく OTLP テレメトリーを収集できます。独自のコレクタを実行すると、認証、構成、アップグレード、モニタリングなどのオーバーヘッドが発生する可能性があります。ただし、コレクタレベルのフィルタリングと制御が必要な場合は、このマネージド サービスではなく、Google が構築した OpenTelemetry Collector を使用できます。
OpenTelemetry は、アプリケーション モニタリング用に分散トレース、指標、ログを生成するための API、ライブラリ、SDK を備えています。OpenTelemetry の詳細については、OpenTelemetry と OpenTelemetry Protocol(OTLP)に関するドキュメントをご覧ください。アプリケーションのランタイム動作データの生成と収集の詳細については、計測とオブザーバビリティをご覧ください。
GKE 用マネージド OpenTelemetry の仕組み
Managed OpenTelemetry for GKE には、マネージド コレクションと自動構成の 2 つのコンポーネントがあります。
マネージド モードでの収集
マネージド コレクションは、マネージド OpenTelemetry コレクタをクラスタにデプロイすることで、クラスタ内 OTLP エンドポイントを提供します。このクラスタ内 OTLP エンドポイントは、OTLP 形式のトレース、指標、ログを受信します。ワークロードからデータを受信するには、コレクタにデータを送信するようにワークロードを構成する必要があります。
マネージド コレクタのエンドポイントは http://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318 です。
マネージド コレクションは、収集したデータを Google Cloud Observability に送信します。データは、次のサービスで利用できるようになります。
マネージド コレクタは、コンソールまたは gcloud CLI を使用して GKE クラスタで有効にできます。手順については、クラスタで GKE 用マネージド OpenTelemetry を有効にするをご覧ください。
自動設定
自動構成により、GKE で実行されているワークロードが、マネージド コレクタのエンドポイントにシグナルを送信するように構成されます。
ワークロードの構成に使用できる方法はいくつかあります。自動構成では、ワークロードのコンテナに挿入された環境変数を使用して、ワークロードがマネージド コレクタにシグナルを送信するようにします。ワークロードを手動で構成する場合は、他の方法を使用できます。詳細については、手動設定をご覧ください。
自動構成を使用する場合は、Instrumentation カスタム リソースを使用して構成を定義します。次に、GKE は OTLP エクスポータ エンドポイントなどの環境変数をワークロードのコンテナに挿入します。ワークロードのコンテナにこれらの環境変数がある場合、ワークロードの実行時に OpenTelemetry データがマネージド コレクタに送信されます。
自動構成は、OpenTelemetry をネイティブにサポートするワークロードで使用できます。つまり、OpenTelemetry SDK を使用し、標準の OpenTelemetry 環境変数を使用して構成されます。詳細については、サポートされているワークロードをご覧ください。
自動構成を使用してアプリケーションを構成する手順については、マネージド OpenTelemetry Collector を使用するようにアプリケーションを構成するをご覧ください。
Instrumentation カスタム リソース
Instrumentation カスタム リソースを使用して、次の操作を行います。
- 選択した Pod のコンテナに環境変数を挿入するか、Namespace 内のすべての Pod のコンテナに環境変数を挿入するかを指定します。
- 収集するデータの種類(ログ、指標、トレース)を制御します。
- 指標データがマネージド コレクタに送信される頻度を制御します。
- トレースデータのサンプリング レートを制御します。
Instrumentation カスタム リソースの使用方法の詳細については、構成を変更するをご覧ください。
環境変数を自動的に挿入する
OpenTelemetry 環境変数を GKE ワークロードに自動的に挿入するには、クラスタで Instrumentation オブジェクトを構成する必要があります。次に、Instrumentation オブジェクトを使用してクラスタにアプリケーションをデプロイすると、GKE によって変数が挿入されます。
アプリケーションがデプロイされ、Pod が作成されるときに、Instrumentation オブジェクトがクラスタ内に存在する必要があります。Instrumentation オブジェクトを作成する前にアプリケーションをデプロイした場合は、アプリケーションの Pod を再起動して、環境変数の自動挿入をトリガーする必要があります。
環境変数
自動構成が有効になっている Namespace にワークロードがデプロイされると、GKE は環境変数をワークロードのコンテナに挿入します。これらの環境変数は、OpenTelemetry SDK 構成の OpenTelemetry 変数です。
次のリストには、Managed OpenTelemetry for GKE によって挿入できるすべての環境変数が含まれています。コンテナに挿入される特定の環境変数は、Instrumentation カスタム リソースの構成によって異なります。
コンテナに自動的に挿入できる環境変数は次のとおりです。
- OpenTelemetry エクスポータ エンドポイント。
OTEL_EXPORTER_OTLP_ENDPOINT: 任意のシグナル タイプのベース エンドポイント URL。このエンドポイントは、ログ、指標、トレースのクラスタ内マネージド OpenTelemetry コレクタ HTTP エンドポイントを常に指します。エンドポイントはhttp://opentelemetry-collector.gke-managed-otel.svc.cluster.local:4318です。
- トレース サンプリング比率の構成。
OTEL_TRACES_SAMPLER: SDK がトレースのサンプリングに使用するサンプラーを次のいずれかに設定します。- カスタム リソースでトレース サンプリングが構成されている場合は
parentbased_traceidratio。 parentbased_always_onは、この環境変数のデフォルト値です。この環境変数が構成されていない場合、またはカスタム リソースで null の場合に使用されます。
- カスタム リソースでトレース サンプリングが構成されている場合は
OTEL_TRACES_SAMPLER_ARG: トレースのサンプリング比率(0.0 ~ 1.0)を指定します。カスタム リソースで構成されていない場合は、1.0 が使用されます。
- 2 つの連続する指標エクスポートの開始間の遅延間隔。
OTEL_METRIC_EXPORT_INTERVAL: 2 回のエクスポート試行の開始間の時間間隔(ミリ秒単位)(最小: 5,000、最大: 300,000、デフォルト: 60,000)。
- シグナルタイプによる OTLP テレメトリー エクスポートの無効化。
Instrumentationファイルでtracer_provider、meter_provider、logger_providerのいずれかがnullに設定されている場合、シグナル エクスポータは無効になります。OTEL_TRACES_EXPORTER:noneに設定すると、トレースのエクスポートが無効になります。デフォルト値:otlp。OTEL_METRICS_EXPORTER:noneに設定すると、指標のエクスポートが無効になります。デフォルト値:otlp。OTEL_LOGS_EXPORTER:noneに設定すると、ログのエクスポートが無効になります。デフォルト値:otlp。
- OpenTelemetry Collector の Kubernetes 属性プロセッサによるメタデータの関連付けのための hostNetwork Pod の識別。
K8S_POD_UID:OTEL_RESOURCE_ATTRIBUTES環境変数のk8s.pod.uid設定を設定するための hostNetwork Pod の Pod UID。OTEL_RESOURCE_ATTRIBUTES: 値にはk8s.pod.uid=$(K8S_POD_UID)が含まれており、Kubernetes 属性プロセッサがk8s.namespace.name、k8s.deployment.name、k8s.node.nameなどのメタデータを hostNetwork Pod に関連付けることができます。メタデータと hostNetwork Pod の関連付けにより、抽出されたメタデータをリソース属性としてスパン、指標、ログに追加できます。
手動設定
ワークロードを構成して、マネージド コレクタのエンドポイントにシグナルを送信するには、さまざまな方法があります。ワークロードを手動で構成する場合は、環境変数を手動で追加して変更するか、コマンドライン フラグなどの別の方法を使用できます。
自動構成は手動変更をオーバーライドする可能性があるため、同じワークロードで手動構成と自動構成の両方を使用することはおすすめしません。この組み合わせでは、構成の変更を追跡することが難しくなる可能性があります。
自動構成の詳細については、自動構成をご覧ください。
対応しているワークロード
サポートされているワークロードは、OpenTelemetry を使用してアプリケーションのランタイム動作に関するデータを収集するワークロードです。ワークロードが OpenTelemetry SDK を使用し、標準の OpenTelemetry 環境変数を使用して構成されている場合、ワークロードは OpenTelemetry をネイティブにサポートします。たとえば、Agent Development Kit(ADK)は OpenTelemetry をネイティブにサポートしています。
アプリケーションのランタイム動作データの生成と収集の方法について詳しくは、計測とオブザーバビリティをご覧ください。
ワークロードが一部の OTLP データ型をサポートし、他の OTLP データ型をサポートしていない場合、Managed OpenTelemetry for GKE は OTLP データを収集します。たとえば、ワークロードが OpenTelemetry SDK を使用してトレースを実装しているが、ログや指標には使用していない場合、ログと指標のデータは Managed OpenTelemetry for GKE によって収集されません。収集するデータの種類を制御する方法について詳しくは、収集するシグナルタイプを選択するをご覧ください。
OpenTelemetry 構成の挿入は、GKE Autopilot パートナーの特権ワークロードではサポートされていません。
課金
テレメトリー データを Google Cloudに送信する場合は、取り込み量に基づいて課金されます。指標は Google Cloud Managed Service for Prometheus の料金で課金され、ログは Cloud Logging の料金で課金され、トレースは Cloud Trace の料金で課金されます。
トレース、ログ、Google Cloud Managed Service for Prometheus 指標の取り込みに関連する費用については、Google Cloud Observability の料金をご覧ください。
割り当て
Managed OpenTelemetry for GKE を使用すると、Google Cloud Observability サービスの割り当てが適用されます。詳細については、以下をご覧ください。
次のステップ
- コレクタをデプロイするには、Managed OpenTelemetry for GKE をデプロイするをご覧ください。
- GKE 用のマネージド OpenTelemetry のセルフデプロイ代替については、Google が構築した OpenTelemetry Collector をご覧ください。
- OpenTelemetry 計測を設定してアプリケーションからトレース、指標、ログを生成する方法については、以下をご覧ください。
- OpenTelemetry を使用してアプリにカスタム トレースとカスタム指標を追加する。