Windows アプリケーションイベントログにおける CoCreateInstance エラー (.NET)

問題

数分経っても.NET アプリケーションのデータが報告されない場合や New Relic のプロファイラーログがない場合は、権限エラーである可能性があります。

注: Azure ウェブサイトのユーザーが CoCreateInstance エラーに遭遇しているならば、support.newrelic.com に指示を仰いでください。

New Relic が必要な権限を持っているかどうかを確認します。

  1. 以下の様なエラーがアプリケーションのイベントログにあるかチェックします。

    NET Runtime version 4.0.30319.296 - Loading profiler failed during CoCreateInstance. Profiler CLSID: '{FF68FEB9-E58A-4B75-A2B8-90CE7D915A26}'.
  2. エラーにある CLSID と New Relic の CLSID を比較します。

    71DA0A04-7777-4EC6-9643-7D28B46A8A41
    FF68FEB9-E58A-4B75-A2B8-90CE7D915A26
  3. CLSID が一致しない場合は、イベントログにデータがない: CoCreate エラーをご覧ください。CLSID が一致した場合は、引き続き以下をご覧ください。
  4. New Relic のアセンブリが、w3wp.exe プロセスに接続されていることを確認します。

    New Relic のアセンブリを確認します
    1. アプリケーションがインストールされているサーバー上で、Microsoft Windows Sysinternals Process Explorer をダウンロードします。
    2. ファイルを解凍し、管理者権限で、procexp.exe を実行します。
    3. View > Show Lower Pane を選択し、View > Lower Pane View>DLLs を選択します。
    4. アプリケーションにいくつかのトラフィックを生成します。
    5. View > Refresh Now を選択し、プロセスリストを更新します。
    6. トップペインで、お使いのサービスや w3wp インスタンスを探し、それを選択しま
      す。

      注: あなたのサービスや w3wp インスタンスは、svchost.exe プロセスの下にネストされます。

    7. 下部のペインで、NewRelic という名前のアセンブリを探します。以下のアセンブリの多くがあるはずです。
      NewRelic.Agent.Core.dll
      NewRelic.Profiler.dll
      NewRelic.Agent.IL.dll
      NewRelic.ICSharpCode.SharpZipLib.dll
      NewRelic.Json.dll
      NewRelic.Log.dll
    8. アセンブリが見つからない場合は、support.newrelic.comの指示を仰いで下さい。
  5. w3wp.exe 環境の詳細があることを確認します。
    COR_ENABLE_PROFILING=1
    COR_PROFILER={71DA0A04-7777-4EC6-9643-7D28B46A8A41}
    NEWRELIC_INSTALL_PATH=C:\Program Files\New Relic\.NET Agent\
  6. %ALLUSERSPROFILE%\New Relic\\.NET Agent\Logs にあるプロファイラーのログを確認します。デフォルトのやり方でインストールしている場合は、トラブルシューティングを行う以外の Web アプリケーションが 1つまたは2つのプロファイラログを出力している可能性があります。トラブルシューティングの対象のアプリケーションについてはプロファイラーログがないはずです。

対策

上記のすべての条件が存在する場合、権限エラーです。グループにフルコントロールを除くすべての権限を与えるために、Everyone グループのアクセス権限を調整して、Full Control を除くすべての権限をグループに与えるようにします。以下のフォルダのアクセス権限を調整します。

  • C:\Program Files\New Relic\.NET Agent\
  • C:\Program Files (x86)\New Relic\.NET Agent\

セキュリティポリシーにより、Everyone グループのアクセス権限を調整できない場合は、個々のユーザー権限を調整する必要があります。アプリケーションが実行されるユーザーを記録し、そのユーザーのそれぞれアクセス権限与えるように調整します。