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

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

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

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

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

  1. ニーズに合わせてすべての設定を行ったか確認してください。Splunk Distribution of OpenTelemetry .NET を設定する を参照してください。

  2. プロセスに適用される環境変数を確認します:

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

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

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

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

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

  3. デバッグログを収集します。インストルメンテーションは以下の場所にログを保存します:

    • Windows: %ProgramData%\OpenTelemetry .NET AutoInstrumentation\logs

    • Linux: /var/log/opentelemetry/dotnet

    デフォルトのログディレクトリを作成できない場合、ログはユーザーの一時フォルダに保存されます。

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

注釈

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

Find the runtime identifier for your .NET applications 🔗

If you’re using Splunk automatic discovery to instrument your .NET applications, you might need a runtime identifier to configure the appropriate instrumentation.

To find your runtime identifier, follow these steps:

  1. In your Program.cs file, make sure that your code includes the following dependency:

    using System.Runtime.InteropServices
    
  2. In your main application, add the following code to print your runtime identifier information:

    Console.WriteLine(RuntimeInformation.RuntimeIdentifier);
    
  3. Run the application and check your application logs.

  4. Verify that the runtime identifier is supported for your instrumentation.

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

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

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

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

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

  4. OTel Collector が次のアドレスを指していることを確認してください: http://<host>:4318.URL が正しいことを確認してください。

AdditionalDepsのアセンブリが見つかりませんでした。 🔗

以下のようなアセンブリエラーメッセージが表示される場合があります:

An assembly specified in the application dependencies manifest (OpenTelemetry.AutoInstrumentation.AdditionalDeps.deps.json) was not found

この問題をトラブルシューティングするには、次の例のようにホストトレースを有効にしてください:

COREHOST_TRACE=1
COREHOST_TRACEFILE=corehost_verbose_tracing.log

アプリケーションを実行してログを収集します。

高いCPU使用率 🔗

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

グローバル・インストルメンテーションをプロセス・セットに制限するには、OTEL_DOTNET_AUTO_EXCLUDE_PROCESSES 環境変数を使用します。詳細は Splunk Distribution of OpenTelemetry .NET を設定する を参照してください。

特定のインストルメンテーションを無効にする 🔗

デフォルトでは、すべてのシグナル・タイプ(トレース、メトリクス、ログ)に対して、すべてのインストルメンテーションが有効になっています。

環境変数 OTEL_DOTNET_AUTO_{SIGNAL}_ENABLED_INSTRUMENTATIONSfalse に設定することで、特定のシグナル・タイプに対するすべてのインストルメンテーションを停止することができます。

よりきめ細かなアプローチとして、OTEL_DOTNET_AUTO_{SIGNAL}_{INSTRUMENTATION}_INSTRUMENTATION_ENABLED 環境変数を false に設定することで、特定のシグナル・タイプのインストルメンテーションを無効にすることができます。{SIGNAL} はシグナルのタイプ(例えばトレース)、{INSTRUMENTATION} はインストルメンテーションの大文字と小文字を区別した名前です。

注釈

web.configファイルやapp.configファイルを使用して、インストルメンテーションを停止するための環境変数を設定することはできません。

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

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

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

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

10/12/23 12:10:31.962 PM [12096|22036] [info] ContinuousProfiler::StartThreadSampling

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

AlwaysOn Profilingの設定を確認する 🔗

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

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

AlwaysOn Profiling を使用するには、.NET のバージョンを .NET 6.0 以降にアップグレードしてください。

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

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

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

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

  1. .NET インストルメンテーションの設定、特に SPLUNK_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間の設定と通信レイヤーを確認してください。

インストルメンテーションをアンインストールする 🔗

.NET インストルメンテーションをアンインストールするには、.NETインストルメンテーションをアンインストールする を参照してください。

This page was last updated on 2024年06月27日.