AlwaysOn Profilingのトラブルシューティング

アプリケーションのインストルメンテーションを行ったが、Splunk APMにプロファイリングデータが表示されないという場合は、以下のガイドラインを使用してAlwaysOn Profilingのトラブルシューティングを行います:

アプリケーションのインストルメンテーションを行ったが、Splunk APMにプロファイリングデータが表示されないという場合は、以下のガイドラインを使用してAlwaysOn Profilingのトラブルシューティングを行います:

注: AlwaysOn Profilingには、Splunk Distribution of OpenTelemetry Collectorのバージョン0.44以上が必要です。

Splunk Observability Cloudにプロファイリングデータが表示されない

プロファイリングデータがSplunk Observability Cloudに表示されない場合は、以下の手順を実行します:

アプリケーションがインストゥルメント済みであることを確認する

AlwaysOn Profiling のデータは、Splunk APM 用にアプリケーションまたはサービスをインストゥルメントした場合にのみ抽出できます。APM のインストゥルメンテーションが読み込まれない、または機能しない場合は、プロファイラーは動作しません。

これを解決するには、アプリケーションがインストゥルメント済みであることと、アプリケーションが APM にトレースデータを送信していることを確認します。詳細については、「アプリケーションやサービスをインストゥルメントする」を参照してください。

OpenTelemetry Collectorの設定を確認する

AlwaysOn Profiling では、Splunk Observability Cloud にプロファイリングデータを送信するために Splunk HTTP Event Collector(HEC)エクスポータが必要です。Splunk HEC エクスポータが設定されていない場合、コレクタはプロファイリングデータを除外します。

この問題を解決するには、コレクタ の設定ファイルを編集し、OTLP gRPC レシーバーと Splunk HEC エクスポータを持つプロファイリングパイプラインが存在することを確認します。詳細については、「Splunk HEC エクスポータ」を参照してください。

次の例は、agent-config.yaml ファイルでパイプラインを設定する方法を示しています。SPLUNK_ACCESS_TOKEN 環境変数を使って、アクセストークンを設定します。「Splunk Observability Cloud を使用した組織のアクセストークンの作成および管理」を参照してください。

receivers:
  otlp:
    protocols:
      grpc:

exporters:
  # Profiling
  splunk_hec/profiling:
    token: "${SPLUNK_ACCESS_TOKEN}"
    endpoint: "${SPLUNK_INGEST_URL}/v1/log"
    log_data_enabled: false

processors:
  batch:
  memory_limiter:
    check_interval: 2s
    limit_mib: ${SPLUNK_MEMORY_LIMIT_MIB}

service:
  pipelines:
    logs/profiling:
      receivers: [otlp]
      processors: [memory_limiter, batch]
      exporters: [splunk_hec, splunk_hec/profiling]

エクスポータは、Splunk OTel Collector バージョン 0.44.0 以降に対して自動的に構成されます。0.44.0 より前のバージョンのコレクタを使用している場合は、設定を手動で編集する必要がある場合があります。

AlwaysOn Profiling が有効になっていることを確認する

プログラミング言語に応じて、システムプロパティ、関数引数、または環境変数を設定して、AlwaysOn Profiling を有効化できます。システムプロパティと関数引数は常に優先されます。プロファイラがアクティブ化されていない場合、Splunk Observability Cloud はプロファイリングデータを受信できません。

この問題を解決するには、プロファイラが有効になっていることを確認してください。詳細については、「AlwaysOn Profiling の有効化」を参照してください。

Helmチャートの設定を確認する

Kubernetes 環境でコレクタをデプロイした場合は、splunkObservability.profilingEnabled=true が存在していることを確認してください。詳細は を参照してください。詳細については、「Helm チャートを使用した展開」を参照してください。

プロファイリングデータのエクスポートエラー、「エラー:14 UNAVAILABLE:接続が確立されていません」

以下の設定を確認します:

  1. プロファイリングのエクスポートエンドポイントが、OTELコレクターが実行されているホストとポートに正しく設定されていること。

    • SPLUNK_PROFILER_LOGS_ENDPOINT 環境変数または splunk.profiler.logs-endpoint システムプロパティが設定されている場合、この値が使用されます。

    • そうでない場合、OTEL_EXPORTER_OTLP_ENDPOINT 環境変数または otel.exporter.otlp.endpoint システムプロパティが設定されていれば、この値が使用されます。

    • 最後に、どちらも設定されていない場合は、デフォルト値の http://localhost:4317 になります。

  2. OTelコレクターが動作しており、ポートが開いていて、プロファイルされたアプリケーションが動作しているホストからアクセ ス可能であること。

  3. OTLP/gRPCのレシーバーが、OTelコレクターの設定内で有効になっていること。

  4. プロファイリングパイプラインが、OTelコレクターの設定内で有効になっていること。

スパンに使用可能なコールスタックがない

スパンの期間がコールスタックをキャプチャするスナップショット間隔よりも短い場合、スパンでコールスタックが不足する可能性があります。たとえば、Java インストゥルメンテーションのデフォルトのスナップショット間隔は 10 秒であるため、10 秒未満のスパンにはコールスタックが含まれない場合があります。間隔を短く設定するには、SPLUNK_PROFILER_CALL_STACK_INTERVAL 環境変数を 10000 ミリ秒未満の値に設定します。

コールスタックが表示されないもう 1 つの原因は、HTTP 要求が async/await パターンに従う場合です。スナップショットが記録されたときに、別のトレースからのスパンの範囲内で処理スレッドが実行されていた場合。

Splunk Observability CloudでAlwaysOn Profilingにアクセスできない

Splunk Observability Cloud にプロファイリングデータを送信しているにもかかわらず、Splunk APM に AlwaysOn Profiling が表示されない場合は、組織にプロファイラーのエンタイトルメントがない可能性があります。

AlwaysOn Profiling は、すべてのホストベースのサブスクリプションで有効になっています。TAPM ベースのサブスクリプションの場合、契約によっては AlwaysOn Profiling が非アクティブになっていることがあります。

この問題を解決するには、Splunkサポートに連絡して、AlwaysOn Profiling機能の有効化を依頼してください。

インストルメンテーション固有のトラブルシューティング

一部のプロファイラの問題は、APM のインストゥルメンテーションに固有である可能性があります。インストゥルメンテーション固有の問題のトラブルシューティングについては、以下の説明を参照してください。

特定のホストのプロファイリングログデータを無効にする

特定のホストまたはコンテナの AlwaysOn Profiling データが不要な場合は、「Unwanted profiling logs appearing in Splunk Observability Cloud」を参照してください。