Docs » Splunk Observability Cloud でサポートされているインテグレーション » バックエンドアプリケーションをインストルメンテーションして、スパンを Splunk APM に送信する » Splunk Observability Cloud (OpenTelemetry) 用 .NET アプリケーションのインストルメンテーション » SignalFx Instrumentation for .NET(非推奨) » Splunk Observability Cloud の .NET インストルメンテーションのトラブルシューティング

注意

SignalFx Instrumentation for .NETは、2024年2月21日をもって非推奨となり、2025年2月21日にサポート終了となります。それまでは、重要なセキュリティ修正とバグ修正のみが提供されます。それ以降は、ライブラリはアーカイブされ、保守されなくなります。

新規に .NET エコシステムをインストルメンテーションするお客様は、Splunk Distribution of OpenTelemetry .NET をご利用ください。既存のお客様は、同様の機能を提供する Splunk Distribution of OpenTelemetry .NET への移行をご検討ください。移行方法については、SignalFx .NET Instrumentationからの移行 を参照してください。

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

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

一般的なトラブルシューティング 🔗

以下の手順に従って、一般的なインストルメンテーションの問題をトラブルシューティングしてください:

  1. ニーズに合わせてすべての設定を行ったか確認してください。SignalFx Instrumentation for .NETの設定 を参照してください。

  2. プロセス・エクスプローラーなどのツールを使って、どの環境変数が自分のプロセスに適用されるかを確認します。Linuxでは、cat /proc/<pid>/environ を実行します。<pid> はプロセスIDです。

  3. 以下のコマンドを使用して、すべての環境変数が設定されていることを確認します:

    # Run a tool like Process Explorer or execute the following:
    
    [System.Diagnostics.Process]::GetProcessById(<pid>).StartInfo.EnvironmentVariables
    

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

SignalFx Instrumentation for .NETは、起動時に INF のログ・メッセージを使用して設定を記録します。

デバッグロギングを有効にして、問題についての詳細な情報を得ることができます:

  1. インストルメンテーションされたアプリケーションを起動する前に、環境変数 SIGNALFX_TRACE_DEBUGtrue に設定します。

  2. アプリケーションまたはサービスを実行し、アクティビティを生成します。

  3. デバッグログを収集します。デフォルトでは、ログファイルは以下の場所にあります:

    • Windows: %ProgramData%\SignalFx .NET Tracing\logs\

    • Linux: /var/log/signalfx/dotnet/.存在しない場合は、/opt/signalfx/createLogPath.sh を実行してください。

デフォルトの場所は、SIGNALFX_TRACE_LOG_DIRECTORY 環境変数を更新することで変更できます。詳細と設定については 診断ロギングの設定 を参照してください。

注釈

デバッグロギングを有効にしてアプリケーションを再起動しても、以前の場所にログが見つからない場合は、他のAPMエージェントが実行されていないか、ホストにインストールされていないかを確認してください。複数のAPMエージェントが、SignalFx Instrumentation for .NET によるアプリケーションのインストルメンテーションを妨げている可能性があります。

注意

必要なときだけデバッグロギングを有効にします。デバッグモードはより多くのリソースを必要とします。

Splunk Observability Cloud にトレースが表示されない 🔗

インストルメンテーションされたアプリケーションまたはサービスからのトレースが Splunk Observability Cloud で利用できない場合は、OpenTelemetry Collector の設定を確認してください:

  • Splunk Distribution of OpenTelemetry Collectorが実行されていることを確認します。

  • zipkin レシーバーと sapm エクスポーターが設定されていることを確認します。

  • access_tokenendpoint フィールドが設定されていることを確認します。

  • トレースパイプラインが zipkin レシーバーと sapm エクスポーターを使用するように設定されていることを確認します。

Splunk Observability Cloud にメトリクスが表示されない 🔗

インストルメンテーションされたアプリケーションまたはサービスからのメトリクスが Splunk Observability Cloud で利用できない場合は、以下の条件が真であることを確認してください:

  • Splunk Distribution of OpenTelemetry Collectorが実行されています。

  • A signalfx receiver and a signalfx exporter are configured.

  • access_tokenrealm フィールドを設定します。

  • メトリクス・パイプラインは、 signalfx レシーバーと signalfx エクスポーターを使用するように構成されています。

Linux上で.NETインストルメンテーションが動作しない 🔗

互換性のないパッケージを使用すると、Linuxへのインストルメンテーションのインストールに失敗することがあります。

お使いのLinuxディストリビューションと互換性のあるインストール・パッケージを使用していることを確認してください。お使いのディストリビューションまたはパッケージ・マネージャーを調べるには、以下のコマンドを実行してください:

lsb_release -a
cat /etc/*release
cat /etc/issue*
cat /proc/version

高いCPU使用率 🔗

デフォルトでは、SignalFx Instrumentation for .NET は、ホスト上で実行されているすべての.NETプロセスを自動的にインストルメンテーションします。システム・スコープまたはユーザー・スコープでインストルメンテーションを有効にしている場合、CPU使用率が大幅に増加する可能性があります。インストルメンテーションの環境変数が常にプロセス・スコープまたはターミナル・スコープに設定されていることを確認してください。

グローバル・インストルメンテーションをプロセス・セットに制限するには、SIGNALFX_PROFILER_PROCESSESSIGNALFX_PROFILER_EXCLUDE_PROCESSES 環境変数を使用します。この環境変数は、インストルメンテーションにプロセスを含めたり除外したりします。詳細は SignalFx Instrumentation for .NETの設定 を参照してください。

AlwaysOn Profiling for .NET のトラブルシューティング 🔗

AlwaysOn Profilingに関する一般的な問題と修正については、以下を参照してください:

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

.NET インストルメンテーションでは、info ログレベルで始まる AlwaysOnProfiler::MemoryProfiling という文字列がログに記録されます。AlwaysOn Profilingが有効になっているかどうかを確認するには、次のような文字列をログから検索します:

10/12/22 12:10:31.962 PM [12096|22036] [info] AlwaysOnProfiler::MemoryProfiling started.

文字列が表示されない場合は、SIGNALFX_PROFILER_ENABLED 環境変数を true に設定して、プロファイラが有効になっていることを確認してください。AlwaysOn Profilingの .NET 設定 を参照してください。

サポートされていないランタイム・バージョンでCPUプロファイラまたはメモリ・プロファイラを有効にした場合、以下のようなエントリーがログに表示されます:

2022-10-12 12:37:18.640 +02:00 [WRN] Cpu profiling activated but not supported.
2022-10-12 12:37:18.640 +02:00 [WRN] Memory profiling activated but not supported.

AlwaysOn Profilingの設定を確認する 🔗

AlwaysOn Profiling が 意図したとおりに動作しない場合は、構成設定を確認してください。.NET インストルメンテーションは、起動時に INF メッセージを使用して AlwaysOn Profiling の設定をログに記録します。TRACER CONFIGURATION という文字列を検索してください。

サポートされていない.NETバージョン 🔗

AlwaysOn Profilingを使用するには、.NET のバージョンを .NET Core 3.1 または .NET 5.0 以降にアップグレードします。メモリプロファイリングには、.NET 5.0 以降が必要です。ランタイムで ICorProfilerInfo10 を使用できる必要があるためです。

どの.NET Frameworkバージョンもサポートしていません。

AlwaysOn Profiling のデータとログが Splunk Observability Cloud に表示されない 🔗

Collector 構成の問題により、AlwaysOn Profilingデータとログが Splunk Observability Cloud に表示されない場合があります。

この問題を解決するには、次のようにしてください:

  1. SignalFx Instrumentation for .NET、特に SIGNALFX_PROFILER_LOGS_ENDPOINT の設定を確認してください。

  2. Splunk Distribution of OpenTelemetry Collectorが期待されるエンドポイントで実行されていること、アプリケーションホストまたはコンテナがホスト名を解決して OTLP ポートに接続できることを確認します。

  3. Splunk Distribution of OpenTelemetry Collectorを実行していることと、バージョンが 0.34 以上であることを確認してください。メモリプロファイリングに必要なバージョンは 0.44 です。他のコレクタディストリビューションでは、プロファイリングデータを含むログデータをルーティングできない場合があります。

  4. カスタム設定は、コレクタにプロファイリングデータを処理させる設定をオーバーライドする場合があります。正しいトークンとエンドポイントフィールドを持つ otlp レシーバーと splunk_hec エクスポーターを設定してください。profiling パイプラインは、設定した OTLP レシーバーと Splunk HEC エクスポーターを使用する必要があります。詳細は Splunk HEC エクスポーター を参照してください。

次のスニペットには、profiling パイプラインのサンプルが含まれています:

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 OpenTelemetry Collector にデータを送信できない場合、AlwaysOn Profiling はエスケープハッチを起動し、バッファが空になるまで、プロファイリングデータを含むすべてのログを削除します。

エスケープハッチが作動すると、以下のメッセージが記録されます:

Skipping a thread sample period, buffers are full.

また、** THIS WILL RESULT IN LOSS OF PROFILING DATA **. のメッセージを探すこともできます。

スレッドサンプラーは、いずれかのバッファが空になるとアクティビティを再開します。

フルバッファによるプロファイリングデータの損失を回避するには、プロセスとSplunk Distribution of OpenTelemetry Collector間の設定と通信レイヤーを確認してください。

SignalFx Instrumentation for .NETをアンインストールします。 🔗

SignalFx Instrumentation for .NETを削除するには、各オペレーティング・システムの手順に従ってください。

Windows 🔗

以下の手順に従って、SignalFx Instrumentation for .NETを削除してください:

  1. インストルメンテーションされたサービスまたはアプリケーションをすべて停止します。

  2. インストルメンテーション用に設定した可能性のある環境変数をすべて削除します。

  3. Programs and Features コントロールパネルから SignalFx .NET Tracing をアンインストールします。

Linux 🔗

以下の手順に従って、SignalFx Instrumentation for .NETを削除してください:

  1. インストルメンテーションされたサービスまたはアプリケーションをすべて停止します。

  2. インストルメンテーション用に設定した可能性のある環境変数をすべて削除します。

  3. パッケージ・マネージャーを使って signalfx-dotnet-tracing を削除するか、tar ファイルを使ってインストルメンテーションをインストールした場合は /opt/signalfx からファイルを削除してください。

Splunk Observability Cloudをご利用のお客様で、Splunk Observability Cloudでデータを確認できない場合は、以下の方法でサポートを受けることができます。

Splunk Observability Cloudをご利用のお客様

見込み客および無料トライアルユーザー様

  • Splunk Answers のコミュニティサポートで質問し、回答を得る

  • Splunk #observability ユーザーグループの Slack チャンネルに参加して、世界中の顧客、パートナー、Splunk 社員とのコミュニケーションを図る。参加するには、Get Started with Splunk Community マニュアルの チャットグループ を参照してください。

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