Splunk OpenTelemetry Lambda レイヤーのトラブルシューティング

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

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

Splunk Observability Cloud にデータが表示されない

インストルメンテーションされた AWS Lambda 関数からのデータが Splunk Observability Cloud に表示されない場合は、以下の手順をお試しください:

  1. AWS Lambda 関数の CloudWatch メトリクスを確認します。Lambda 関数が呼び出しに応答していることを確認します。エラーを確認することもできます。

  2. SPLUNK_REALMSPLUNK_ACCESS_TOKEN 環境変数を指定したことを確認してください。「Splunk OpenTelemetry Lambda Layer を設定する」を参照してください。

  3. バックエンドやネットワークが遅い場合は、OTEL_INSTRUMENTATION_AWS_LAMBDA_FLUSH_TIMEOUT 環境変数の値を増やしてみてください。

  4. 拡張機能の冗長ロギングを有効にします。「デバッグロギングを有効にする」を参照してください。

Splunk Observability Cloud にデータポイントやメトリクスがない

インストルメンテーションされた AWS Lambda 関数からのメトリクスデータが Splunk Observability Cloud に表示されない場合は、次の手順をお試しください:

  1. AWS Lambda 関数の CloudWatch メトリクスを確認します。Lambda 関数が呼び出しに応答していることを確認します。エラーを確認することもできます。

  2. SPLUNK_REALMSPLUNK_ACCESS_TOKEN 環境変数を指定したことを確認してください。「Splunk OpenTelemetry Lambda Layer を設定する」を参照してください。

  3. バッファリングモードにより、データポイントが大幅に遅延して送信されている可能性があります。「メトリクスの設定」を参照してください。

  4. 拡張機能の冗長ロギングを有効にします。「デバッグロギングを有効にする」を参照してください。

SPLUNK_ACCESS_TOKENとSPLUNK_REALMに関するエラー

以下のエラーが表示される場合は、SPLUNK_ACCESS_TOKEN 環境変数の値を設定する必要があります:

[ERROR] SPLUNK_REALM is set, but SPLUNK_ACCESS_TOKEN is not set. To export data to Splunk Observability Cloud, define a Splunk Access Token.

詳細については、「一般情報の設定」を参照してください。

エクスポーター・エンドポイントとSPLUNK_REALMに関するエラー

以下のエラーが表示される場合は、SPLUNK_REALMSPLUNK_ACCESS_TOKEN 環境変数の値を設定するか、エクスポータエンドポイントを定義する必要があります。

[ERROR] Exporter endpoint must be set when SPLUNK_REALM is not set. To export data, either set a realm and access token or a custom exporter endpoint.

カスタム エクスポータ エンドポイントを定義する方法については、「エクスポータの設定」を参照してください。

自動的にロードされるインストルメンテーションを無効にする

Splunk OpenTelemetry Lambda レイヤーに含まれるラッパーの中には、一般的なライブラリやフレームワークのインストルメンテーションを自動的にロードするものがあります。自動的にロードされるインストルメンテーションを無効にするには、以下の手順に従ってください。

Python

非アクティブ化したいインストルメンテーションを OTEL_PYTHON_DISABLED_INSTRUMENTATIONS 環境変数のカンマ区切りの値として入力します。自動的にロードされるインストルメンテーションのリストについては、GitHub の OpenTelemetry リポジトリにある要件リストを参照してください(https://github.com/open-telemetry/opentelemetry-lambda/blob/main/python/src/otel/otel_sdk/nodeps-requirements.txt)。

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

それでも関数のトレースデータが Splunk Observability Cloud に表示されない場合は、ロギングを有効にしてデバッグ情報を収集します。

  1. インストルメンテーションされた関数に対し、環境変数 OTEL_LAMBDA_LOG_LEVELDEBUG に設定します。

  2. AWS CloudWatchでスパンを確認します。

  3. バックエンドで特定のスパンを検索します。

メトリクスデータについては、以下の手順に従ってください:

  1. 環境変数 VERBOSEtrue に設定します。

  2. 環境変数 HTTP_TRACINGtrue に設定します。

  3. AWS CloudWatchで関連するログメッセージを検索します。

サーバーレス・フレームワークのサポート

Serverless Frameworkのいくつかの機能は、Python Lambda関数のOpenTelemetryトレースに影響を与える可能性があります。

Pythonライブラリの圧縮

pythonRequirementszip 機能を使用すると、Lambda の依存関係を圧縮ファイルとしてパックおよび展開できます。サーバレスフレームワークを使用して圧縮されたパッケージをインストルメンテーションするには、SPLUNK_LAMBDA_SLS_ZIP 環境変数を true に設定します。詳細については、GitHub(https://github.com/serverless/serverless-python-requirements#dealing-with-lambdas-size-limitations)を参照してください。

スリム機能

スリム機能は、dist-info フォルダを含む一部のファイルを削除することで、Lambda パッケージのサイズを削減します。スリム機能によって削除されたファイルの一部は、OpenTelemetry Python 自動インストルメンテーションに必要です。serverless.yml ファイルの slim オプションを無効にするか、カスタム slimPatterns を定義します。詳細については、GitHub(https://github.com/serverless/serverless-python-requirements#slim-package)を参照してください。