.NET と SCOM の競合の解消

問題

エージェントが正常に報告を行うが、IIS のリセットやシステムの再起動などのメンテナンスイベントが起こると、停止していしまいます。ステータスモニターの修復ユーティリティを実行すると、一時的に問題を修正される。しかし、次のメンテナンスイベント後に再度発生する。これらの症状が発生し、Microsoft の System Center Operations Manager (SCOM) を使用している場合は、SCOM プロファイラーの競合が発生しています。

対策

SCOM プロファイラーとの競合を解消する方法は以下のとおりです。

  1. SCOM の Application Performance Monitoring を無効にします。
  2. .NET のステータスモニターを使って、インストールを修復します。
    注: サーバー再起動毎にインスールの修復が必要です。
  3. インストールを修復しても、競合が解消されない場合は、PowerShell を使ってレジストリ設定を復元します。
    サーバー再起動の度に、以下のコマンドを実行する必要があります。また、これらの設定を復元するために、スタートアップスクリプトを作成すします。以下のコマンドを実行します。

    $HKLM = 2147483650 #HKEY_LOCAL_MACHINE
    $reg = [wmiclass]"\\.\root\default:StdRegprov"
    $key = "SYSTEM\CurrentControlSet\Services\W3SVC"
    $name = "Environment"
    $value = "COR_ENABLE_PROFILING=1","COR_PROFILER={71DA0A04-7777-4EC6-9643-7D28B46A8A41}","NEWRELIC_INSTALL_PATH=C:\Program Files\New Relic\.NET Agent\"
    $reg.SetMultiStringValue($HKLM, $key, $name, $value)
    $key = "SYSTEM\CurrentControlSet\Services\WAS"
    $name = "Environment"
    $value = "COR_ENABLE_PROFILING=1","COR_PROFILER={71DA0A04-7777-4EC6-9643-7D28B46A8A41}","NEWRELIC_INSTALL_PATH=C:\Program Files\New Relic\.NET Agent\"
    $reg.SetMultiStringValue($HKLM, $key, $name, $value)
    iisreset
  4. アプリケーションプールを使い回すか、IIS を再起動します。IIS を再起動するには、コマンドプロンプトから、IISRESET を実行します。

原因

Microsoft の System Center Operations Manager (SCOM) は、Application Performance Monitoring [アプリケーションパフォーマンス監視] 機能を含んでおり、それが、New Relic .NET エージェントと競合します。両方とも .NET プロファイラーインタフェースを使用しており、一度に、一つのプロファイラーだけが使用可能です。

SCOM と .NET エージェントを同じ Windows サーバーにインストールしている場合、SCOM の Application Performance Monitoring を無効にするか、オフにすると、New Relic の .NET エージェントの動作に必要な Windows レジストリの一部の設定が削除されます。よって、.NET エージェントは、そのサーバー上の Web アプリケーションを監視できなくなります。