Docs » Splunk APMのAlwaysOn Profilingの概要 » AlwaysOn Profilingのトラブルシューティング

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エクスポーターが設定されていない場合、Collectorはプロファイリングデータを除外します。

この問題を解決するには、Collectorの設定ファイルを編集し、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よりも低いバージョンのCollectorを使用している場合は、設定を手動で編集しなければならない場合があります。

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

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

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

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

Kubernetes環境でCollectorをデプロイした場合は、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 ミリ秒より小さい値に設定します。

コールスタックが表示されないもう一つの原因は、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データが不要な場合は、Splunk Observability Cloud に不要なプロファイリングログが表示される を参照してください。

このページは 2024年05月28日 に最終更新されました。