.NET Framework ベースのアプリケーションの監視
Instana の自動インスツルメンテーションおよび分散トレーシング機能を活用して、.NET Framework アプリケーションを監視しましょう。
.NET および .NET Core アプリケーションについては、 「.NET および .NET Core アプリケーションの監視」 を参照してください。
概要
Instana 以下の機能を通じて、.NET Framework アプリケーションの包括的な監視を提供します:
- 自動インストルメンテーション : AutoTrace ならコードの変更は一切不要
- 分散トレーシング :サービス全体にわたるエンドツーエンドの可視性
- パフォーマンス指標 :CPU、メモリ、スレッドロック、競合、および例外
- AutoProfile :パフォーマンス最適化のための継続的なプロファイリング(.NET Framework 4.7.2 以降が必要です)
- OpenTelemetry サポート :既存の OTel 実装との統合
.NET Framework の監視機能の仕組み
.NET Framework ( 4.5.2 以降)を使用して任意のアプリケーションを作成するか、既存のアプリケーションを使用してください。 お使いの環境に Instana エージェントをインストールしてください。 エージェントは「.NET Framework 」プロセスを検出し、CLRセンサーを読み込みます。 .NET Framework アプリケーションから、パフォーマンス指標やヘルスデータを自動的に収集します。
IISでホストされるアプリケーションではトレースが自動的に有効になりますが、IIS以外のアプリケーションでは、トレースデータを取得するために明示的な設定が必要です。 Windows システムで Instana エージェントが起動すると、.NET Framework で定義されたプロファイリング API を使用して、CLR Tracer(.NET Framework 用のトレース拡張機能)がインストールされます。 拡張子は、トレース・コンポーネントを含むいくつかのファイルで構成されています。 Instana は API のプロファイリング機能を使用するため、COMライブラリとマネージドアセンブリが関係しています。
この拡張機能は、3つのマネージドアセンブリを含むCOM-DLL(プロファイラ)を登録します:
Instana.ManagedTracing.dllInstana.ManagedTracing.Base.dllSystem.Collections.Immutable.dll
拡張機能がコンポーネントを登録すると、 Instana は Windows レジストリを更新し、 W3SVC や WebSphere Application Server などの対応アプリケーションホストが、次回の起動時に自動的にプロファイラを接続するようにします。 Instana サービスの中断を防ぐため、これらのサービスは自動的に再起動されません。 トレースを有効にするには、既存のアプリケーションを手動で再起動する必要があります。
trueマルチドメイン環境のサポートを有効にするには、環境変数を INSTANA_NET_ENABLE_MULTIDOMAIN に設定してください。これにより、メインのアプリケーションドメイン(最初に読み込まれたドメイン)が監視対象となります。CLRセンサーとトレーサーが連携して、.NET Framework アプリケーション全体にわたる包括的な可観測性を提供します。 最新のセンサーおよびトレーサーのリリースについては、 「CLRセンサー 」および「 CLRトレーサー」 をご覧ください。
前提条件
以下の前提条件が満たされていることを確認してください。
- Instana エージェントがインストールされています : Windows インフラストラクチャ上でホストエージェントが実行されている必要があります。 「 Windows へのエージェントのインストール 」を参照してください。
- InstanaPCP InstanaPCP が実行されています。これにより、 Instana エージェントが.NET Framework アプリケーションと通信できるようになります。
InstanaPCP.exeInstanaPCP が実行されているかどうかを確認するには、 Windows でタスクマネージャーを開き、.を探してください。 - ネットワーク接続 :.NET Framework アプリケーションは、 Instana エージェントに接続できる必要があります。 詳細については、 「ネットワーク要件」 を参照してください。
- 対応する.NET Framework ランタイム :.NET Framework 4.5.2 以降。 サポート情報をご覧ください。
サポート情報
Instana が現在の環境と互換性があるかどうかを確認するには、「 サポートされている .NET Framework ランタイム、 ライブラリ、およびフレームワーク」 をご覧ください。
.NET Framework の監視設定
.NET Framework の監視を設定するには、以下の手順を順に実行してください:
ステップ1:エージェントの設定確認
センサーおよびトレース機能は、デフォルトで有効になっています。 エージェントが起動されると、 InstanaPCP はトレース有効化のプロセスに関する情報を記録します。
次の例は、.NET Framework トレースが有効になっているエージェントファイルを示しています configuration.yaml :
# .NET Full Framework tracing
com.instana.plugin.clr:
# # Tracing for .NET Full Framework CLR. Enabled by default
tracing:
# # Enabling tracing will instruct the agent to register the IL-rewriting components for .NET
# # alongside with the instrumentation-libraries.
# # It will also set the environment-variables for any IIS hosted .NET applications.
# # Non-IIS hosted applications which you want to trace need these env-vars to be set
# # manually before starting the actual process
# # (see the docs here: https://docs.instana.io/ecosystem/dot-net/#enabling-tracing-for-non-iis-hosted-applications)
enabled: true
instrumentation:
suppressions:
# # The absolute path to a batch-file that should be executed when the tracing-components for
# # NET Full Framework (Windows) have been updated. You can use this script to automate tasks
# # that should be executed when new tracing-components get installed. This usually will be
# # process-restarts or issuing an iisreset command, so that the processes can pickup the new components.
# # The commands issued in the script should be executed asynchronously (start /b <cmd>) in order to not
# # slow down the startup-time of InstanaPCP. In case of long-running synchronous tasks (like iisreset) you might
# # see warnings in the log concerning the unavailability of InstanaPCP for the duration of the execution.
# update_script: <absolute_path_to_batchfile>
# # Memory-limits for InstanaPCP.
# # You can specify these limits to account for high expected load and/or a lot of
# # infrastructure-components being monitored. Values are in mega-bytes.
# pcp_warn_limit: 150
# pcp_stop_limit: 250
ステップ2:プラットフォーム別のセットアップガイドの選択
ご自身の導入環境に合ったガイドを選択してください:
| デプロイメント環境 | ガイド |
|---|---|
| IISでホストされるアプリケーション | IISでの.NET Framework トレースの設定 |
| Windows プロセスとサービス | Windows での .NET Framework トレースの設定 |
すべての設定オプションの詳細については、 「.NET Framework のトレース設定」 を参照してください。
ステップ3:追加機能の設定(任意)
基本的な監視設定が完了したら、以下のオプション機能を設定して、.NET Framework の監視機能を強化することができます:
- カスタムトレース :.NET SDK を使用してカスタムスパンを追加します。
- プロセスの除外 :環境変数を設定することで、.NET のトレース対象から特定のプロセスを除外します。
- プロセスのホワイトリスト登録 :特定のプロセスのみを追跡します。
- スパンフィルタリング :特定のスパンをフィルタリングすることで、データ量を削減します。
- AutoProfile :パフォーマンスの最適化のために、継続的なプロファイリングを有効にします。
詳細な設定手順については、 「追加機能の設定」 を参照してください。
OpenTelemetry との連携
Instana、OpenTelemetryと統合するための.NET コンポーネントを提供しており OpenTelemetry, それについては OpenTelemetry と.NET アプリケーションの統合」のページで説明されています。
メトリクスとトレースの表示
モニタリングの設定が完了すると、 Instana のUIで、.NET Framework アプリケーションに関連するメトリクスやトレースを確認できるようになります。
指標を表示するには、以下の手順に従ってください:
- Instana のUIにあるナビゲーションメニューから、 「インフラストラクチャ」 を選択します。
- 監視対象のホストをクリックしてください。
収集されたすべてのメトリクスと監視対象のプロセスが表示されたホストダッシュボードを確認できます。
トレースを表示するには、以下の手順を実行してください:
- Instana のUIにあるナビゲーションメニューから、 「アプリケーション」 をクリックします。
- 「アプリケーション」ダッシュボードで、.NET Framework のアプリケーションまたはサービスを選択します。
- アプリケーションまたはサービスのダッシュボードで、「呼び出しの分析」をクリックします。
- アナリティクス・ダッシュボードで、 [アプリケーション] メニューから [コール] または [トレース] を選択します。
以下のガイドでは、アプリケーションのデータを表示する方法について詳しく説明しています:
構成データ
| 追跡対象の構成 | 説明 |
|---|---|
| 名前 | アプリケーションの名前 |
| バージョン | CLRランタイムのバージョン |
| 引数 | アプリケーションの引数 |
パフォーマンス・メトリック
| メトリック | 説明 |
|---|---|
| GC アクティビティー | .NET のガベージコレクタがどのくらいの頻度で、どのくらいの時間実行されるかを示します |
| メモリー使用率 | アプリケーションが使用しているメモリ量を報告します |
| スレッド・ロック | スレッドがロックの待機中にブロックされていることを示します |
| 競合 | スレッド間の共有リソースをめぐる競合を測定する |
| 例外数 | ランタイム例外の数と種類を表示します |
正常性シグニチャー
Instana 受信したメトリクスに対してヘルスシグネチャを継続的に評価し、ユーザーへの影響度に基づいて問題やインシデントを通知します。
組み込みイベントは、エンティティのヘルスシグネチャの異常に基づいて課題やインシデントをトリガーし、 カスタムイベントは、特定のエンティティの個々のメトリクスのしきい値に基づいて課題やインシデントをトリガーします。
.NET Framework の組み込みイベントに関する詳細については、 「組み込みイベントのリファレンス」 を参照してください。
InstanaPCP およびパフォーマンス・カウンター
InstanaPCP およびパフォーマンス・カウンターの詳細については、 InstanaPCP および Windows performance counters を参照してください。
トレースの無効化
.NET Framework アプリケーションのトレース機能を無効にするには、以下の手順を実行してください:
enabled: false設定ファイルを更新します:エージェントconfiguration.yamlファイルを開き、.NET Framework トレースフラグを に設定します。configuration.yaml次の例は、.NET Framework のトレースが無効になっている場合のファイルからの抜粋です:# CLR Tracing com.instana.plugin.clr: tracing: enabled: false- 更新された設定を反映させるため、 Instana エージェントを再起動してください。
- ホストプロセスを再起動してください。
既知の問題と制約事項
.NET Framework のトレースに関する既知の問題と制限事項を確認してください:
ライブラリ版の計測機能の制限事項
「No Managed Code」アプリケーションプールで実行される.NET 5以降のアプリケーションにおける、IISレベルのメトリクスの制限
もともと.NET Framework 上で構築されたアプリケーションを、.NET 5以降(.NET 6、7、8およびそれ以降を含む)に移行し、IIS上でホストする場合、アプリケーションプールを.NET Framework 4. No Managed Code0で実行するように構成する必要があります。 このモードでは、 Instana はIISレベルのメトリクスを収集できません。
IIS アプリケーション プールが に設定されている No Managed Code場合、 Instana は以下の IIS レベルのメトリクスを収集できません:
- アプリケーションプールの名前
w3wp.exeプロセス指標- ワーカープロセスレベルの監視データ
この制限は、IISが.NET 5以降のアプリケーションをホストする方法に起因するものです。 アプリケーションレベルの計測とトレースは引き続き正常に動作していますが、IISレベルのメトリクスは利用できません。
IISレベルのメトリクスが必要な場合は、マネージドコードのアプリケーションプールをサポートする.NET Framework 4 またはそれ以前のアプリケーションの使用をご検討ください。
Multi-AppDomain アプリケーション
multi-AppDomain アプリケーション( SharePoint など)に計測機能を組み込む際、は System.dll 複数の AppDomains、または共有のに読み込まれます。 System.dllしかし、 Instana がクラス System.Net.HttpWebRequest `class` をインストルメントしようとすると、メインのアプリドメイン内でのみメソッドが書き換えられ、その結果、次のエラーが発生します:
Loading this assembly would produce a different grant set from other instances.
このエラーが発生した場合は、以下の環境変数を設定してください:
INSTANA_REWRITER_SUPPRESSION=System.Net.HttpWebRequest
INSTANA_TRACER_SUPPRESSION_ENABLED=1
System.Net.HttpWebRequestこの設定を行うと、の書き換えはスキップされ、その他のインスツルメンテーションは期待どおりに動作します。
.NET Framework の監視に関するトラブルシューティング
.NET Framework の監視やトレースで問題が発生した場合は、以下の手順でトラブルシューティングを行ってください:
一般的なトラブルシューティングの手順
Instana のUIにトレースやメトリクスが表示されない場合は、以下の一般的なトラブルシューティング手順を実行してください:
- 前提条件を確認してください:
- お使いの.NET Framework ランタイムのバージョンがサポート対象であることを確認してください(.NET Framework 4.5.2 以降)
- Instana エージェントが実行中であり、アクセス可能であることを確認してください
InstanaPCP.exeInstanaPCP が実行されていることを確認してください(タスクマネージャーで確認してください)- アプリケーションとエージェント間のネットワーク接続を確認してください
- 環境変数を確認してください:
- 必要な環境変数がすべて正しく設定されていることを確認してください
- パスが有効で、アクセス可能であることを確認してください
- 変数名のスペルが正しいことを確認してください
- トレース設定の確認:
- エージェント
configuration.yamlファイルでトレースが有効になっていることを確認してください - 設定変更後、エージェントとアプリケーションを再起動してください
- IIS アプリケーションの場合、設定変更後は以下を実行
iisresetしてください
- エージェント
- 競合するAPMツールがないか確認してください:
- 他のAPMツールが同じプロファイリングフックを使用していないことを確認してください
- 他のAPMエージェントが存在する場合は無効にしてください
プラットフォームごとの詳細なトラブルシューティングのシナリオと解決策については、次のセクションにある該当するトラブルシューティングガイドを参照してください。
プラットフォーム別のトラブルシューティングガイド
| デプロイメント環境 | トラブルシューティング・ガイド |
|---|---|
| IISでホストされるWebアプリケーション | IIS における「.NET Framework 」トレースのトラブルシューティング |
| Windows サービスまたは独立したプロセス | Windows における「.NET Framework 」トレースのトラブルシューティング |
すべてのトラブルシューティング方法の概要については、 「.NET Framework のトレースのトラブルシューティング」 を参照してください。