Splunk Observability Cloud の Python インストルメンテーションのトラブルシューティング

インストルメンテーションされた Python アプリケーションが Splunk Observability Cloud にデータを送信しない、またはデータが欠落している場合は、以下の手順に従って問題を特定し、解決してください。

Splunk Distribution of OpenTelemetry Python を使用して Python アプリケーションをインストルメンテーションしているときに、Splunk Observability Cloud にデータが表示されない場合は、以下のトラブルシューティング手順に従ってください。

Python OpenTelemetryの問題のトラブルシューティングの手順

以下の手順は Python エージェントの問題のトラブルシューティングに役立ちます:

  1. PATH に pip のインストールディレクトリがあるか確認します

  2. デバッグロギングを有効にします

PATHにpipのインストールディレクトリがあるか確認します。

opentelemetry-instrumentopentelemetry-bootstrap を実行するには、pip のインストールディレクトリが、システムの PATH 環境変数上になければなりません。

pip がユーザーローカル環境にパッケージをインストールする場合、ユーザーベース bin ディレクトリを PATH に追加します。

  1. python -m site --user-base を実行して、Pythonのユーザー数を調べます。

  2. ユーザー・ベース・ディレクトリをパスに追加します:

    export PATH="<user-base-path>:$PATH"

デバッグロギングを有効にする

デバッグロギングを有効にすると、Python のインストルメンテーションの問題のトラブルシューティングに役立ちます。

ロギングを有効にするには、logging モジュールをインポートし、ロギング・レベルを DEBUG に設定します:

import logging

logging.basicConfig(level=logging.DEBUG)

デバッグロギングを有効にしてエージェントを実行すると、デバッグ情報がコンソール(stderr)に送信されます。デバッグログエントリは、次の例のようになります。

...
[opentelemetry.auto.trace 2021-10-10 10:57:05:814 +0200] [main] DEBUG io.opencensus.tags.Tags - <Could not load lite implementation for TagsComponent, now using default implementation for TagsComponent.3>
[opentelemetry.auto.trace 2021-10-10 10:57:05:722 +0200] [main] DEBUG io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent0 - direct buffer constructor: unavailable
...

すべてのデバッグ・エントリーが Python のインストルメンテーションに影響する問題に関連するとは限りませんが、根本的な原因はデバッグログに現れる可能性が高いです。

注: デバッグロギングは必要な場合にのみ有効にします。デバッグモードでは、より多くのリソースが必要です。

トレース・エクスポーターの問題

デフォルトでは、Splunk Distribution of OpenTelemetry Python は OTLP/gRPC エクスポータを使用します。トレースのエクスポートに影響する問題があると、デバッグログにエラーが表示されます。

OTLP がスパンをエクスポートできない

ログの以下のエラーは、エージェントがトレースデータを OpenTelemetry Collector に送信できないことを意味します。

DEBUG:opentelemetry.exporter.otlp.proto.grpc.exporter:Waiting 1s before retrying export of span
DEBUG:opentelemetry.exporter.otlp.proto.grpc.exporter:Waiting 2s before retrying export of span

OTLPエクスポーターとOTel Collector 間の接続不足をトラブルシューティングするには、以下を試してください:

  1. OTEL_EXPORTER_OTLP_ENDPOINT が正しい OpenTelemetry Collector インスタンスホストを指していることを確認します。

  2. OTel Collector インスタンスが構成され、実行されていることを確認します。「Splunk OpenTelemetry Collector のトラブルシューティング」を参照してください。

  3. OTLP gRPC レシーバーが OTel Collector でアクティブになり、トレースパイプラインに接続されていることを確認します。

  4. OTel Collector がアドレス http://<host>:4317 を指していることを確認します。URL が正しいことを確認します。

チャンネル・パイプライン・エラー

ログに以下のようなエラーが表示される場合は、Python エージェントが OTLP によってまだサポートされていないトレースデータを Splunk Observability Cloud の取り込みエンドポイントに送信しようとしている可能性があります。

E0908 16:23:32.337704280    5881 ssl_transport_security.cc:1468] Handshake failed with fatal error SSL_ERROR_SSL: error:10000095:SSL routines:OPENSSL_internal:ERROR_PARSING_EXTENSION.
E0908 16:23:32.556405854    5881 ssl_transport_security.cc:1468] Handshake failed with fatal error SSL_ERROR_SSL: error:10000095:SSL routines:OPENSSL_internal:ERROR_PARSING_EXTENSION.

この問題を解決するには、別のエクスポータを使用するか、Splunk Observability Cloud に直接データを送信します。 「Exporters configuration」と「Splunk Observability Cloud に直接データを送信する」を参照してください。

スパン送信時の401エラー

トレースを Splunk Observability Cloud に直接送信して 401 エラーコードを受け取った場合、SPLUNK_ACCESS_TOKEN で指定した認証トークンが無効です。考えられる原因は次のとおりです。

  • 値はnullです。

  • 値が整形式トークンではありません。

  • このトークンは、authScope が ingest に設定されているアクセストークンではありません。

Splunk プラットフォームインスタンスに直接データを送信する場合は、有効な Splunk アクセストークンを使用していることを確認してください。「Splunk Observability Cloud を使用したユーザー API アクセストークンの取得と管理」を参照してください。

__ ___ ___ _ ______ _____________ _____ ________ ___ ___ ___ ____ __ ___ ____ ____ __ ______ _____________ ______ ___ ___ ___ ____ __ ___ _________ _____

_________ __ ______ _____________ _____ _________

_________ __ ___________ _________ ___ ____ _____ _____

  • ___ _ ________ ___ ___ _______ _______ _________ _______ __ ______ ________

  • ____ ___ ______ ______________ ____ _____ _____ _______ __ ___________ ____ __________ _________ ___ ______ _________ __________ __ _____ ___ ____ _______