注意
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アプリケーション、.NETアプリケーションを実行するWindowsサービス、IIS上にデプロイされたASP.NETアプリケーション、およびAzure App Serviceアプリケーションを自動的にインストルメンテーションします。
開始するには、SignalFx Instrumentation for .NET を手動でインストールする手順に従ってください。
SignalFx Instrumentation for .NETを手動でインストールします。 🔗
ガイド付きセットアップを使用しない場合は、以下の手順に従って SignalFx Instrumentation for .NET を手動でインストールしてください:
.NETアプリケーションのインストルメンテーション 🔗
以下の手順に従って、アプリケーションを自動的にインストルメンテーションしてください:
条件を満たしているか確認してください。.NETインストルメンテーションの互換性と要件 を参照してください。
お使いのオペレーティング・システムに対応したSignalFx Instrumentation for .NETの最新リリースは、GitHub のReleasesページか らダウンロードしてください。
お使いのオペレーティングシステム用のパッケージをインストールしてください:
msiexec /i signalfx-dotnet-tracing-<version-here>-x64.msi /quiet
msiexec /i signalfx-dotnet-tracing-<version-here>-x86.msi /quiet
rpm -ivh signalfx-dotnet-tracing-<version-here>.rpm ./opt/signalfx/createLogPath.sh # Optional
dpkg -i signalfx-dotnet-tracing-<version-here>.deb ./opt/signalfx/createLogPath.sh # Optional
tar -xf signalfx-dotnet-tracing-<version-here>.tar.gz -C /opt/signalfx ./opt/signalfx/createLogPath.sh # Optional
以下の環境変数を設定します:
# Set the following variables in the process scope $Env:COR_ENABLE_PROFILING = "1" $Env:COR_PROFILER = "{B4C89B0F-9908-4F73-9F59-0D77C5A06874}" $Env:CORECLR_ENABLE_PROFILING = "1" $Env:CORECLR_PROFILER = "{B4C89B0F-9908-4F73-9F59-0D77C5A06874}" $Env:SIGNALFX_SERVICE_NAME = "<my-service-name>" $Env:SIGNALFX_ENV = "<your-environment>"
恒久的な自動インストルメンテーションが必要な場合を除き、Windowsのシステム・スコープやユーザー・スコープに環境変数を設定するのは避けます。自動インストルメンテーションにプロセスを含めたり除外したりする方法については、SignalFx Instrumentation for .NETの設定 を参照してください。
export CORECLR_ENABLE_PROFILING="1" export CORECLR_PROFILER="{B4C89B0F-9908-4F73-9F59-0D77C5A06874}" export CORECLR_PROFILER_PATH="/opt/signalfx/SignalFx.Tracing.ClrProfiler.Native.so" export SIGNALFX_DOTNET_TRACER_HOME="/opt/signalfx" export SIGNALFX_SERVICE_NAME="<my-service-name>" export SIGNALFX_ENV="<your-environment>"
(オプション) 自動メトリクス収集を有効にするには、メトリクス・コレクションを有効にする を参照してください。
アプリケーションを実行します。
APM にデータが表示されない場合は、Splunk Observability Cloud の .NET インストルメンテーションのトラブルシューティング を参照してください。
スパンにカスタム属性を追加する必要がある場合、またはスパンを手動で生成する場合は、.NETアプリケーションまたはサービスを手動でインストルメンテーションしてください。Splunk Observability Cloud 用に .NET アプリケーションを手動でインストルメンテーションする を参照してください。
AlwaysOn Profilingの有効化 🔗
AlwaysOn Profiling を有効にするには、環境変数 SIGNALFX_PROFILER_ENABLED
を true
に設定します。
メモリプロファイリングを有効にするには、AlwaysOn Profilingを有効にした後、SIGNALFX_PROFILER_MEMORY_ENABLED
環境変数を true
に設定します。
詳細は Splunk APMのAlwaysOn Profilingにデータを取り込む を参照してください。その他の設定については、AlwaysOn Profilingの .NET 設定 を参照してください。
メトリクス・コレクションを有効にする 🔗
自動メトリクス収集を有効にするには、SIGNALFX_TRACE_METRICS_ENABLED
環境変数を true
に設定します。
ランタイム・メトリクスを有効にするには、SIGNALFX_RUNTIME_METRICS_ENABLED
環境変数を true
に設定します。
インストルメンテーションによって収集されるメトリクスの詳細については、SignalFx Instrumentation for .NETによって収集されたメトリクス を参照してください。その他のメトリクス設定については、メトリクス設定 を参照してください。
注釈
AlwaysOn Profiling が有効になっている場合、ランタイム・メトリクスは常に収集されます。
.NETアプリケーションを実行しているWindowsサービスをインストルメンテーションする 🔗
Windowsサービスをインストルメントするには、インストルメントをインストールし、以下の環境変数を設定します:
$svcName = "MySrv" # Name of the Windows service you want to instrument
[string[]] $vars = @(
"COR_ENABLE_PROFILING=1", # Activate .NET Framework Profiler
"COR_PROFILER={B4C89B0F-9908-4F73-9F59-0D77C5A06874}", # Select .NET Framework Profiler
"CORECLR_ENABLE_PROFILING=1", # Activate .NET (Core) Profiler
"CORECLR_PROFILER={B4C89B0F-9908-4F73-9F59-0D77C5A06874}", # Select .NET (Core) Profiler
"SIGNALFX_SERVICE_NAME=<my-service-name>", # Set service name
"SIGNALFX_ENV=<environment-name>" # Set environment name
)
Set-ItemProperty HKLM:SYSTEM\CurrentControlSet\Services\$svcName -Name Environment -Value $vars
# Every time you start the service, it will be auto-instrumented.
デフォルトのサービス名の詳細については、デフォルトのサービス名の変更 を参照してください。
IISにデプロイされたASP.NETアプリケーションをインストルメンテーションする 🔗
IIS上で動作するASP.NETアプリケーションをインストルメンテーションするには、インストルメンテーションをインストールし、web.configファイルを編集して以下の設定を追加します。詳細については、設定方法 を参照してください。
web.configファイルの <appSettings>
ブロック内に以下の設定を追加します:
<add key="SIGNALFX_SERVICE_NAME" value="service-name" />
<add key="SIGNALFX_ENV" value="environment-name" />
web.configファイルに変更を適用した後、以下のコマンドを実行してIISを再起動します:
Start-Process "iisreset.exe" -NoNewWindow -Wait
場合によっては、マシンを再起動する必要がある可能性があります。
web.configファイルの <aspNetCore>
ブロック内に以下の設定を追加します:
<environmentVariables>
<environmentVariable name="CORECLR_ENABLE_PROFILING" value="1" />
<environmentVariable name="CORECLR_PROFILER" value="{B4C89B0F-9908-4F73-9F59-0D77C5A06874}" />
<environmentVariable name="SIGNALFX_SERVICE_NAME" value="service-name" />
<environmentVariable name="SIGNALFX_ENV" value="environment-name" />
</environmentVariables>
web.configファイルに変更を適用した後、以下のコマンドを実行してIISを再起動します:
Start-Process "iisreset.exe" -NoNewWindow -Wait
場合によっては、マシンを再起動する必要がある可能性があります。
注釈
ASP.NET Coreインストルメンテーションは、デフォルトでクエリー文字列を収集し、難読化します。詳細は クエリー文字列の設定 を参照してください。
注釈
デフォルトでは、インストーラーは、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
フォルダにある W3SVC と WAS サービス用の Environment
レジストリキーを設定することで、.NET Framework 用の IIS インストルメンテーションを有効にします。
Azure App Serviceでアプリケーションをインストルメンテーションする 🔗
Azure App Serviceでアプリケーションやサービスをインストルメンテーションするには、以下の手順に従います:
SignalFx .NET Tracing 拡張機能を探し、アプリケーションにインストールします。詳細は、Azure ドキュメントの Adding Extensions to Web Apps in Azure App Service を参照してください。
以下のアプリケーション設定を追加します。詳細については、Azure ドキュメントの Configure Apps を参照してください。
Name
値
SIGNALFX_ACCESS_TOKEN
Splunk アクセストークン。アクセストークンを取得するには、Splunk Observability Cloudを使用したユーザー APIアクセストークンの取得と管理 を参照してください。
SIGNALFX_REALM
realm
は Splunk Observability Cloud レルムで、例えばus0
です。Splunk レルムを見つけるには、レルムに関する注意 を参照してください。SIGNALFX_SERVICE_NAME
サービスまたはアプリケーションの名前。
SIGNALFX_ENV
アプリケーションをインストルメンテーションする環境名。
アプリケーションを再起動します。
注釈
待ち時間を短縮し、OTel Collectorの機能を利用するには、エンドポイントURLをAzure VNet上のAzure VMで実行されているCollectorインスタンスに設定します。
Azure App Serviceでバックグラウンドタスクをインストルメンテーションする 🔗
App Service で Azure WebJob をインストルメンテーションする場合、以下の設定を追加します。v0.2.0
システムパスの <extension-version>
を .NET インストルメンテーションのバージョンに置き換えます:
Name
値
SIGNALFX_ACCESS_TOKEN
Splunk アクセストークン。アクセストークンを取得するには、Splunk Observability Cloudを使用したユーザー APIアクセストークンの取得と管理 を参照してください。
SIGNALFX_REALM
realm
は Splunk Observability Cloud のレルムで、例えばus0
です。アカウントのレルム名を確認するには、Splunk Observability Cloud のナビゲーションメニューを開き、 を選択し、ユーザー名を選択します。レルム名は Organizations セクションに表示されます。
SIGNALFX_SERVICE_NAME
サービスまたはアプリケーションの名前。
SIGNALFX_ENV
アプリケーションをインストルメンテーションする環境名。
COR_ENABLE_PROFILING
1
COR_PROFILER
{B4C89B0F-9908-4F73-9F59-0D77C5A06874}
COR_PROFILER_PATH
C:\home\signalfx\tracing\<extension-version>\win-x64\SignalFx.Tracing.ClrProfiler.Native.dll
COR_PROFILER_PATH_32
C:\home\signalfx\tracing\<extension-version>\win-x86\SignalFx.Tracing.ClrProfiler.Native.dll
COR_PROFILER_PATH_64
C:\home\signalfx\tracing\<extension-version>\win-x64\SignalFx.Tracing.ClrProfiler.Native.dll
CORECLR_ENABLE_PROFILING
1
CORECLR_PROFILER
{B4C89B0F-9908-4F73-9F59-0D77C5A06874}
CORECLR_PROFILER_PATH_32
C:\home\signalfx\tracing\<extension-version>\win-x86\SignalFx.Tracing.ClrProfiler.Native.dll
CORECLR_PROFILER_PATH_64
C:\home\signalfx\tracing\<extension-version>\win-x64\SignalFx.Tracing.ClrProfiler.Native.dll
SIGNALFX_DOTNET_TRACER_HOME
C:\home\signalfx\tracing\<extension-version>
SIGNALFX_PROFILER_EXCLUDE_PROCESSES
SnapshotUploader.exe;workerforwarder.exe
SIGNALFX_TRACE_LOG_PATH
C:\home\LogFiles\signalfx\tracing\<extension-version>\dotnet-profiler.log
SIGNALFX_AZURE_APP_SERVICES
0
注意
WebJobをインストルメンテーションする際は、SIGNALFX_AZURE_APP_SERVICES
を 0
に設定してください。アプリケーションとバックグラウンドサービスのために別々の設定を使用できるように、WebJobのために別々のApp Serviceを保持します。
AlwaysOn Profilingの有効化 🔗
AlwaysOn Profilingには、.NET 6.0以上が必要です。
以下のレガシーバージョンの.NETには限定的なサポートしかありません:
CPUのプロファイリング:.NET Core 3.1および.NET 5.x
メモリのプロファイリング:.NET Core 5.x
AlwaysOn Profiling を有効にするには、以下の手順を実行します:
.NETプロセスの
SIGNALFX_PROFILER_ENABLED
環境変数をtrue
に設定して、プロファイラーを有効化します。SIGNALFX_PROFILER_MEMORY_ENABLED
環境変数をtrue
に設定して、メモリのプロファイリングを有効化します。
プロファイリングデータ用に別のエンドポイントを設定するなど、その他の設定オプションについては、AlwaysOn Profilingの .NET 設定 を参照してください。
Kubernetesに.NETインストルメンテーションをデプロイする 🔗
.NETインストルメンテーションをKubernetesにデプロイするには、KubernetesダウンワードAPIを設定して、環境変数をKubernetesリソースに公開します。
次の例は、.spec.template.spec.containers.env
セクションにエージェント設定を追加して、環境変数を公開するようにデプロイを更新する方法を示しています:
apiVersion: apps/v1
kind: Deployment
spec:
selector:
matchLabels:
app: your-application
template:
spec:
containers:
- name: myapp
env:
- name: SPLUNK_OTEL_AGENT
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: SIGNALFX_ENDPOINT_URL
value: "http://$(SPLUNK_OTEL_AGENT):9411/api/v2/spans"
- name: SIGNALFX_SERVICE_NAME
value: '<name-of-your-service>'
- name: SIGNALFX_ENV
value: '<name-of-your-environment>'
- name: CORECLR_ENABLE_PROFILING
value: "1"
- name: CORECLR_PROFILER
value: '{B4C89B0F-9908-4F73-9F59-0D77C5A06874}'
- name: CORECLR_PROFILER_PATH
value: '/opt/signalfx/SignalFx.Tracing.ClrProfiler.Native.so'
- name: SIGNALFX_DOTNET_TRACER_HOME
value: '/opt/signalfx'
Splunk Observability Cloud に直接データを送信する 🔗
デフォルトでは、インストルメンテーションはすべてのテレメトリを Splunk Distribution of OpenTelemetry Collectorのローカルインスタンスに送信します。
OTel Collector をバイパスして Splunk Observability Cloud に直接データを送信するには、以下の環境変数を設定します:
$env:SIGNALFX_ACCESS_TOKEN=<access_token>
$env:SIGNALFX_REALM=<realm>
export SIGNALFX_ACCESS_TOKEN=<access_token>
export SIGNALFX_REALM=<realm>
アクセストークンを取得するには、Splunk Observability Cloudを使用したユーザー APIアクセストークンの取得と管理 を参照してください。
インジェスト・エンドポイント URL の realm
は Splunk Observability Cloud のレルムで、例えば us0
となります。アカウントのレルム名を確認するには、以下の手順に従ってください:
Splunk Observability Cloud のナビゲーションメニューを開きます。
を選択します。
ユーザー名を選択します。
レルム名は Organizations セクションに表示されます。
取り込みAPIエンドポイントの詳細については、APMのトレースの送信 を参照してください。
注意
この手順はスパンとトレースに適用されます。AlwaysOn Profiling データを送信するには、OTel Collector を使用する必要があります。
ソースホストの指定 🔗
エージェントが使用するホストを上書きするには、環境変数 OTEL_RESOURCE_ATTRIBUTES
を使用して、ホストの名前を希望するソースに設定します:
$env:OTEL_RESOURCE_ATTRIBUTES=host.name=<host_name>
export OTEL_RESOURCE_ATTRIBUTES=host.name=<host_name>