.NET および.NET Core を基盤とするアプリケーションの監視
Instana の自動インスツルメンテーションおよび分散トレース機能を活用して、.NET および.NET Core のアプリケーションを監視します。
.NET Framework のアプリケーションについては、 「.NET Framework の監視」 を参照してください。
概要
- 自動インストルメンテーション : AutoTrace ならコードの変更は一切不要
- 分散トレーシング :サービス全体にわたるエンドツーエンドの可視性
- パフォーマンス指標 :CPU、メモリ、スレッドロックなど
- AutoProfile :パフォーマンス最適化のための継続的なプロファイリング
- OpenTelemetry サポート :既存の OTel 実装との統合
.NET の監視機能の仕組み
.NET ( 5.0 以降)を使用して任意のアプリケーションを作成するか、既存のアプリケーションを使用してください。 お使いの環境に Instana エージェントをインストールしてください。 エージェントは「.NET 」プロセスを検出し、「.NET 」センサーを読み込みます。 .NET Core アプリケーションから、パフォーマンス指標やヘルスデータを自動的に収集します。
アプリケーションおよび接続されたサービスを通過するリクエストの詳細なトレースデータを取得するには、.NET のトレース機能を明示的に設定する必要があります。 Tracingは、アプリケーション内での各リクエストの経路を追跡し、各ステップにかかる時間や問題が発生した箇所を可視化します。
トレースは、以下の方法のいずれかを使用して設定できます:
- AutoTrace :エージェント設定による自動セットアップ
- 手動でのトレース : NuGet パッケージの明示的なインストール
詳細については、 「計測手法」 を参照してください。
トレースが有効になっている場合、 Instana は.NET Tracerを起動します。このTracerは、以下のインストルメンテーション手法のうち1つ、または両方を使用してトレースをキャプチャします:
- ILの書き換え : Instana は.NET プロセスにアタッチし、実行時に選択された中間言語(IL)コードを書き換えて、トレースロジックを挿入します。
- イベント駆動型のインストルメンテーション : Instana は、対応ライブラリから発信されるイベントや ActivitySource データを監視し、ILコードを書き換えることなく、それらのイベントを分散トレースに変換します。 詳細については、 「イベント駆動型計測の設定」 を参照してください。
センサーとトレーサーが連携して、包括的な可観測性を実現します。 最新のセンサーおよびトレーサーのリリースについては、.NET Core (センサー )および .NET および .NET Core (トレーサー) をご覧ください。
前提条件
以下の前提条件が満たされていることを確認してください。
システムのハードウェア要件:
- RAM:8 GB以上の空きメモリ
- CPU:最適なパフォーマンスを得るには、4コア以上のCPUが必要です
- ディスク容量:トレーサーログおよび一時ファイル用に100 MB
Instana エージェントがインストールされていること :ホストエージェントがインフラストラクチャ上で実行されている必要があります。
ネットワーク接続 :.NET アプリケーションは、 Instana エージェントに接続できる必要があります。 詳細については、 「ネットワーク要件」 を参照してください。
対応している.NET ランタイム
- .NET 5.0 またはそれ以降
- .NET Core 2.x および 3.x (非推奨)
詳細については、 サポート情報をご覧ください。
サポート情報
Instana が現在の環境と互換性があるかどうかを確認するには、「 サポートされている .NET ランタイム、 ライブラリ、およびフレームワーク」 を参照してください。
.NET の監視設定
.NET の監視を設定するには、以下の手順を順に実行してください:
ステップ1:計測手法の理解
環境に応じて、.NET アプリケーションのトレース設定を自動または手動で行うことができます。
お使いの環境が AutoTrace, に対応している場合、 Instana は.NET アプリケーションに自動的に計測機能を追加します。 ただし、 AutoTrace がサポートされていない場合は、手動でのトレースを行う必要があります。
AutoTrace
Instana AutoTrace コードの変更を一切必要とせずに、自動インスツルメンテーションを実現します。 この方法であれば、手動での設定やセットアップは一切必要ありません。 Instana アプリケーションのコンポーネントを自動的に検出し、計測コードを挿入し、トレースを行います。
.NET のトレースを自動的に設定するには、エージェントの設定ファイルでトレースを有効にしてください。 エージェントは.NET プロセスを検出し、.NET プロセスに自動的にトレース機能を組み込みます。 NuGet のパッケージやコードの変更は一切必要ありません。
instana_dotnet_global_env.sh エージェントは、.NET のトレースに必要な環境変数が含まれるグローバル環境ファイルを作成します。
Instana 直ちに受信リクエストに対するスパン生成が開始され、その後、 Instana のUIでトレースを確認できます。
手書きトレース
手動トレースには、 NuGet パッケージを用いた計測が必要です。 この方法なら、トレース対象をより細かく制御できますが、追加の設定や準備が必要になります。
1注: 環境変数 COMPlus_EnableDiagnostics `.NET ` DOTNET_EnableDiagnostics を `1` に設定し、`` の診断機能が有効になっていることを確認してください。 これらが無効になっている場合、ILリライターはプロセスにアタッチできないため、呼び出しの書き換えやトレースの生成が行えません。.NET のトレースを手動で設定するには、以下の手順を実行してください:
プロジェクトに、以下のパッケージを追加してください: Instana、 NuGet。 これらのパッケージはトレースロジックを追加し、実行時の計測機能を有効にします。
Instana.Tracing.CoreInstana.Tracing.Core.Rewriter
注: 対象プラットフォームに適したRewriterパッケージのバリエーションを選択してください( Windows、 Linux、または Alpine Linux )。次の環境変数を設定します。
CORECLR_ENABLE_PROFILINGCORECLR_PROFILER_PATHCORECLR_PROFILERDOTNET_STARTUP_HOOKS
トレースライブラリを含めてアプリケーションをデプロイしてください。
手動でのトレースは、次のような場合に最適です:
- スタンドアロン型アプリケーション
- AutoTrace が利用できない環境
ステップ2:プラットフォーム別のセットアップガイドを選択する
ご自身の導入環境に合ったガイドを選択してください:
| デプロイメント環境 | ガイド |
|---|---|
| AWS Lambda 関数 | AWS Lambda での .NET トレースの設定 |
| Azure App Services | Azure App Services での .NET トレースの設定 |
| Azure コンテナ・アプリ | Azure のコンテナアプリで.NET のトレースを設定する |
| Azure Functions | Azure Functions での .NET トレースの設定 |
| Cloud Foundry プラットフォーム | Cloud Foundry での .NET トレースの設定 |
| Docker コンテナー | Docker での .NET トレースの設定 |
| IISでホストされるWebアプリケーション | IIS での「.NET 」トレースの設定 |
| Kubernetes クラスター | Kubernetes での .NET トレースの設定 |
| 標準版 Linux または Alpine Linux | Linux または Alpine Linux での「.NET 」トレースの設定 |
| Windows サービスまたは独立したプロセス | Windows での .NET トレースの設定 |
| z/OS | z/OS での .NET トレースの設定 |
ステップ3:追加機能の設定(任意)
基本的な監視設定が完了したら、以下の追加オプション機能を設定することで、.NET の監視機能をさらに強化することができます:
- Kafka トレース相関ヘッダー : Kafka のトレース用ヘッダー形式を設定します。
- プロセスの除外 :ホワイトリストまたはブラックリストを使用して、監視対象のプロセスを制御します。
- プロセスのホワイトリスト登録 :特定のプロセスのみを追跡します。
- スパンフィルタリング :特定のスパンをフィルタリングすることで、データ量を削減します。
- AutoProfile :パフォーマンスの最適化のために、継続的なプロファイリングを有効にします。
- カスタムトレース :.NET SDK を使用して、カスタムスパンを追加します。
- イベント駆動型計測 : ActivitySource イベントを通じてテレメトリデータを取得します。
詳細な設定手順については、 「追加機能の設定」 を参照してください。
OpenTelemetry との連携
Instana 、 OpenTelemetry との統合のための追加の.NET コンポーネントを提供します。
メトリクスとトレースの表示
モニタリングの設定が完了すると、 Instana のUIで、.NET アプリケーションに関連するメトリクスやトレースを確認できます。
指標を表示するには、以下の手順に従ってください:
- Instana のUIにあるナビゲーションメニューから、 「インフラストラクチャ」 を選択します。
- 監視対象のホストをクリックしてください。
収集されたすべてのメトリクスと監視対象のプロセスが表示されたホストダッシュボードを確認できます。
トレースを表示するには、以下の手順を実行してください:
- Instana のUIにあるナビゲーションメニューから、 「アプリケーション」 をクリックします。
- 「アプリケーション」ダッシュボードで、.NET のアプリケーションまたはサービスを選択します。
- アプリケーションまたはサービスのダッシュボードで、「呼び出しの分析」をクリックします。
- アナリティクス・ダッシュボードで、 [アプリケーション] メニューから [コール] または [トレース] を選択します。
以下のガイドでは、アプリケーションのデータを表示する方法について詳しく説明しています:
Linux でメトリクスを有効にする
Instana.Tracing.CoreLinux では、 NuGet パッケージ( 1.1.34 以降)を使用してアプリケーションをデプロイしてください。 次の環境変数を設定してください:
DOTNET_STARTUP_HOOKS=[path-to-your-app]/Instana.Tracing.Core.dll
パッケージが正常に読み込まれたことを確認するには、アプリケーションの出力から次の行を探してください:
INSTANA Agent for .NET Core applications installed. Running on
同じパッケージをトレースに使用できます。
構成データ
| 追跡対象の構成 | 説明 |
|---|---|
| 名前 | アプリケーションの名前 |
| バージョン | CLRランタイムのバージョン |
| 引数 | アプリケーションの引数 |
パフォーマンス・メトリック
| メトリック | 説明 |
|---|---|
| GC アクティビティー | .NET のガベージコレクタがどのくらいの頻度で、どのくらいの時間実行されるかを示します |
| メモリー使用率 | アプリケーションが使用しているメモリ量を報告します |
| スレッド・ロック | スレッドがロックの待機中にブロックされていることを示します |
| 競合 | スレッド間の共有リソースをめぐる競合を測定する |
| 例外数 | ランタイム例外の数と種類を表示します |
正常性シグニチャー
Instana 受信したメトリクスに対してヘルスシグネチャを継続的に評価し、ユーザーへの影響度に基づいて問題やインシデントを通知します。
組み込みイベントは、エンティティの健全性シグネチャの異常に基づいて問題やインシデントをトリガーし、 カスタムイベントは、特定のエンティティの個々のメトリクスのしきい値に基づいて問題やインシデントをトリガーします。
.NET の組み込みイベントに関する詳細については、 「組み込みイベントのリファレンス」 を参照してください。
トレースの無効化
.NET アプリケーションのトレース機能を無効にするには、以下の手順を実行してください:
enabled: false設定ファイルを更新します:エージェントconfiguration.yamlファイル(*instanaAgentDir*/etc/instana/configuration.yaml)を開き、.NET トレースフラグを に設定します。次の例は、.NET のトレースが無効になっている configuration.yaml ファイルを示しています:
# netcore Tracing com.instana.plugin.netcore: tracing: enabled: false更新された設定を反映させるため、 Instana エージェントを再起動してください。
ホストプロセスを再起動してください。
既知の問題と制約事項
.NET のトレースに関する既知の問題と制限事項を確認してください:
ASP.NET Core および Instana 向けのApplication Insights.NET Core の監視
ASP.NET Core 向けの Application Insights にはいくつかの制限があるため、 Instana .NET Core の監視が並行して実行されている場合、Application Insights 上でデータが不完全だったり欠落していたりすることがあります。
Application Insightsと Instana を同時に使用したい場合は、 Instana による W3C ヘッダーの挿入を無効にし、 W3C のトレースコンテキストの伝播を無効にする必要があります。
Instana による W3C ヘッダーの挿入を無効にするには、次の環境変数を設定してください:
INSTANA_W3C_DISABLE_INJECT_HEADERS=1
ライブラリ版の計測機能に関する制限事項
アプリケーションプールで No Managed Code 実行される.NET 5以降のアプリケーションについては、IISレベルのメトリクスが制限されています
No Managed CodeIIS上で.NET 5以降のアプリケーション(.NET 6、7、8およびそれ以降のバージョンを含む)をホストする場合、アプリケーションプールは.NET Framework 4.0以降で実行されるように構成する必要があります。 このモードでは、 Instana はIISレベルのメトリクスを収集できません。
IIS アプリケーション プールが に設定されている No Managed Code場合、 Instana は以下の IIS レベルのメトリクスを収集できません:
- アプリケーションプールの名前
w3wp.exeプロセス指標- ワーカープロセスレベルの監視データ
この制限は、IISが.NET 5以降のアプリケーションをホストする方法に起因するものです。 アプリケーションレベルの計測とトレースは引き続き正常に動作していますが、IISレベルのメトリクスは利用できません。
IISレベルのメトリクスが必要な場合は、マネージドコードのアプリケーションプールをサポートする.NET Framework 4 またはそれ以前のアプリケーションの使用をご検討ください。
.NET の監視に関するトラブルシューティング
.NET の監視やトレースで問題が発生した場合は、以下の手順でトラブルシューティングを行ってください:
一般的なトラブルシューティングの手順
Instana のUIにトレースやメトリクスが表示されない場合は、以下の一般的なトラブルシューティング手順を実行してください:
前提条件を確認してください:
- お使いの.NET ランタイムのバージョンがサポート対象であることを確認してください(.NET 5.0 以降)
- Instana エージェントが実行中であり、アクセス可能であることを確認してください
- アプリケーションとエージェント間のネットワーク接続を確認してください
環境変数を確認してください:
- 必要な環境変数がすべて正しく設定されていることを確認してください
- パスが有効で、アクセス可能であることを確認してください
- 変数名のスペルが正しいことを確認してください
IL-Rewriterの初期化を確認してください:
- アプリケーションログを確認し、IL-Rewriterの初期化メッセージを探してください
CORECLR_PROFILER_PATHCORECLR_ENABLE_PROFILING、、およびCORECLR_PROFILERが正しく設定されていることを確認してください
診断機能を有効にする:
- Instana のILリライターを利用したトレースを使用する場合は、と
COMPlus_EnableDiagnosticsをDOTNET_EnableDiagnostics1 - 診断機能が有効になっていない場合、IL-Rewriterはプロセスに接続できません
- Instana のILリライターを利用したトレースを使用する場合は、と
トレース設定の確認:
- エージェント
configuration.yamlファイルでトレースが有効になっていることを確認してください - 設定変更後、エージェントとアプリケーションを再起動してください
- エージェント
プラットフォームごとの詳細なトラブルシューティング手順やログ収集手順については、次のセクションにある該当するトラブルシューティングガイドを参照してください。
プラットフォーム別のトラブルシューティングガイド
| デプロイメント環境 | トラブルシューティング・ガイド |
|---|---|
| AWS Lambda 関数 | AWS Lambda における「.NET 」トレースのトラブルシューティング |
| Azure | Azure における「.NET 」トレースのトラブルシューティング |
| Docker コンテナー | Docker における「.NET 」トレースのトラブルシューティング |
| IISでホストされるWebアプリケーション | IIS における「.NET 」トレースのトラブルシューティング |
| Kubernetes クラスター | Kubernetes における「.NET 」トレースのトラブルシューティング |
| 標準版 Linux または Alpine Linux | Linux または Alpine Linux における「.NET 」トレースのトラブルシューティング |
| Windows サービスまたは独立したプロセス | Windows における「.NET 」トレースのトラブルシューティング |
| z/OS | z/OS における「.NET 」トレースのトラブルシューティング |