Windowsの中でいつのまにか発生しているエラーを通知できる環境を作ろうと考えています。
今の段階で監視対象として考えているのは、イベントログ(ApplicationおよびSystem)とテキスト形式のログファイルです。 ついでに UNIX/Linux で使われる syslog の転送にも対応して、複数のOSの通知を一括して管理できるようにしようとしています。
まだ十分にテストされていません。
* EWatch
* EWatchUI
* コマンド実行
| $timestamp | タイムスタンプです。書式は yyyy-MM-dd HH:mm:ss.fff です。 |
| $hostname | ログが発生したホスト名です。 |
| $source | ログの発生元です。イベントログのソースに該当します。 |
| $level | エラー(E)、警告(W)、情報(I) の何れかの文字です。 |
| $code | メッセージコードです。イベントログのイベントIDに該当します。 |
| $message | メッセージ文です。 |
* Eメール送信
* syslog転送
* MantisBT登録
notepad等でサッと編集しようとすると XML は面倒くさいので、json形式で記述するようにしています。
- {
- EventLog: {
- Application: [
- /* エラーを growl で通知 */
- { logLevel:'E', match:null, ignore:null, actions:[ { type:'execute', CommandLine:'"C:\\Program Files (x86)\\Growl for Windows\\growlnotify.exe" /t:EWatch "$message"'} ]},
- ],
- System: [
- /* エラーをメールで通知 */
- { logLevel:'E', match:null, ignore:null, actions:[ { type:'smtp', FromAddress:'???@gmail.com', ToAddress:'???@gmail.com,???@gmail.com', ServerHost:'localhost:25'} ]},
- /* エラー以外を syslog で通知 */
- { logLevel:'', match:null, ignore:null, actions:[ { type:'syslog', RemoteHost:'192.168.0.2'} ]},
- ]
- },
- File: {
- /* test.log に [ERROR] が含まれていればコマンド(test.bat)を実行 */
- "C:\\test.log" :[
- { match:'\\[ERROR\\]', ignore:null, actions:[ {type:'execute', CommandLine:'C:\\test.bat "$timestamp" "$hostname" "$source" "$level" "$code" "$message"'} ]},
- ]
- },
- Syslog: {
- /* 514ポートで待ち受け、ERR が含まれていれば growl で通知 */
- "514" : [
- { match:'ERR', ignore:null, actions:[ {type:'execute', CommandLine:'"C:\\Program Files (x86)\\Growl for Windows\\growlnotify.exe" /t:EWatch "$message"'} ]},
- ]
- }
- }
| ewatch (2.0.37) | 2023-03-24 18:55 |