Windows では、イベントログのサブスクリプション機能により、複数のサーバーのイベントログをプッシュまたは、プルで収集することが可能です。
初期状態では「転送されたイベントログ」(Forwarded Events」に転送が行われるようになっています。
イベントログの転送先は変更することができるため、「転送されたイベントログ」以外を指定することもできるのですが、「New-EventLog」等で作成したイベントログに対しては転送するk十ができず、イベントログのサブスクリプションの「宛先ログ」から選択することはできません。
カスタムイベントログに転送する方法ですが、イベントログを作成する方法に手順があり、「Creating Custom Windows Event Forwarding Logs」という MS のブログで以前は公開されていたのですが、現在は参照できなくなってしまっているようですので、その方法を残しておきたいと思います。
カスタムイベントログに転送するためには、イベントログを Windows SDK の、Manifest Generator によって作成できるマニフェストを用いて作成する必要があります。
Windows 10 SDK の最新版をインストールしても、Manifest Generator が含まれていないようです。
そのため、今回は、Windows 10 Creators Update の SDK である「Windows 10 SDK (ver. 10.0.15063.468) and Microsoft Emulator for Windows 10 mobile (ver. 15254.1)」をインストールしています。
「Windows SDK for Desktop amd64 Apps」をインストールすることで、「C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64」に「ecmangen.exe」が配置されます。
それでは、実際にカスタムイベントログを作成してみたいと思います。
- 「Event Section」を右クリックし、「New」→「Provider」をクリックします。
- プロバイダー情報として必要となる情報を入力し「save」をクリックします。
- Name : Cust Event
- プロバイダーの名前が、イベントログの「アプリケーションとサービス ログ」の配下に作成されるディレクトリ名となるようです。
- Synbol : CustEvent
- GUI : 「New」 で生成
- Resources : C:\Windows\system32\CustomEvent.dll
- c:\Windows\system32\CustomEvent.dll
- Name : Cust Event
- 「.man」ファイルを任意のファイルに保存します。
- プロバイダーの登録が終わったら、次に「チャネル」を追加するため、「New」→「Channel」をクリックします。
- プロバイダーの情報を登録します。
今回は次のようなチャネルを登録しています。
このチャネルが実際のイベントログの名称となるようです。
- 保存 (Save) をクリックし、マニフェストファイルの保存を行います。
今回は、「C:\CustEvent」に保存しています。
マニフェストファイルが作成できたら、次のコマンドを実行します。
cd c:\CustEvent "C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\mc.exe" "c:\CustEvent\CustomEvent.man" "C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\mc.exe" -css CustomEvent "c:\CustEvent\CustomEvent.man" "C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe" "C:\CustEvent\CustomEvent.rc" "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /win32res:"C:\CustEvent\CustomEvent.res" /unsafe /target:library /out:"c:\CustEvent\CustomEvent.dll" "C:\CustEvent\CustomEvent.cs"
コマンドを実行することで、DLL ファイルが生成されますので、生成された DLL と man ファイルをイベントログを追加するサーバー (サブスクリプションによりイベントログを受け取るサーバー) にコピーします。
コピーが完了したら、両ファイルを「C:\Windows\System32」に配置してから、次のコマンドを実行します。
wevtutil im c:\Windows\system32\CustomEvent.man 削除の場合は以下のコマンド wevtutil um c:\Windows\system32\CustomEvent.man
これで登録は完了です。
新しく起動したイベントログの表示が次のように、自分で作成したイベントログが登録されている状態となっているはずです。
この方法で作成したイベントログであれば、次のように、サブスクリプションの転送先として選択することができます。
実際にメッセージを集約するイベントログとしても使用することができました。
この先に何かしらの監視システムがいる場合、「転送されたイベントログ」 (Forwarded Events) 以外は、検知に使用できないというケースもありますが、イベントログのサブスクリプションによりログを受け取る際に一つの方法として、この方法を覚えておくと利便性が向上することがあるのではないでしょうか。