Webロールにカスタムのパフォーマンスカウンタを追加

パフォーマンスカウンタを初期登録する際、WebロールのGlobal.asax等で登録すると以下の例外が発生します。

System.Security.SecurityException: Requested registry access is not allowed.

Webロールはワーカープロセスで実行されるため、管理者権限がないためです。このような処理は、WebRole.csのOnStartで実装すると上手くいきます。

csdefに以下の定義を追加してあれば、RoleEntryPointは管理者権限で実行されます。

<Runtime executionContext="elevated">

詳細は下記が非常に参考になります。
http://codezine.jp/article/detail/5880

注意しなければならないのは、OnStartでパフォーマンスカウンタを追加する際には、そのカウンタの診断ログ転送はwadcfgでは定義してはいけないということです。
wadcfgによる診断ログの構成は、スタートアップタスクやOnStartよりも前に実行されるため、その時点ではカウンタが定義されていないためです。
カスタムのパフォーマンスカウンタについては、コードでログ転送の構成を行ってください。

このことは以下にも書かれています。
http://msdn.microsoft.com/en-us/library/gg604918.aspx

カスタムのパフォーマンスカウンタについては、下記のサンプルコードが参考になりました。
http://msdn.microsoft.com/ja-jp/library/system.diagnostics.performancecounter.aspx
http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecountertype.aspx


This entry was posted in 未分類 and tagged , . Bookmark the permalink.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>