= [[ProjectName]] Wiki =
== [[ProjectName]] とは ==
Windowsの中でいつのまにか発生しているエラーを通知できる環境を作ろうと考えています。
今の段階で監視対象として考えているのは、イベントログ(ApplicationおよびSystem)とテキスト形式のログファイルです。
ついでに UNIX/Linux で使われる syslog の転送にも対応して、複数のOSの通知を一括して管理できるようにしようとしています。
とはいいながらも、本格的な統合監視をするならやはり [https://www.zabbix.org/ zabbix] 等を使った方が良いです。
ewatch は1台からでも使える手軽な監視ツールという位置付けで考えています。
== プログラム構成 ==
* EWatch
Windowsサービスとして動作する本体のプログラム。
設定ファイルに従ってイベントログやログファイルを監視し、指定されたアクションを実行します。
* EWatchCLI
EWatchサービスに対するコマンドラインツールです。次の操作が行えます。
|| version || EWatchサービスのバージョン情報を表示します。||
|| info || EWatchサービスが読み込んだ設定ファイル内容の簡易的な情報と、それが適用された日時を表示します。||
|| reload || EWatchサービスを再起動せずに設定ファイルを再読み込みします。||
|| put || EWatchサービスにJSON形式でイベントデータを渡します。||
* EWatchUI
今のところ、単なる設定ファイル編集ツールです。
== アクション ==
ここでは概要だけを記します。詳細については [Actions] を参照してください。
* forward: 他のサーバーへの転送
EWatch サービスが別のサーバーで稼働している場合、イベントを転送する事ができます。
* execute: コマンド実行
指定したコマンドを実行できます。コマンドの引数にログの内容を渡す事ができます。
* smtp: Eメール送信
指定したEメールアドレスにログの内容を送ります。
* syslog: syslog転送
指定した syslog サーバーにログを送ります。
* mantis: MantisBT登録
指定したURLのMantisBTに障害として登録します。
* redmine: Redmineチケット登録
指定したURLのRedmineにチケットを登録します。
* slack: Slack通知
Slack の webhook で通知します。
== 設定ファイルの例 ==
notepad等でサッと編集しようとすると XML は面倒くさいので、json形式で記述するようにしています。
{{{ code javascript
{
Actions: [
{
/* ローカルホストに転送 */
name: 'forwardToLocal', type: 'forward', Destination: '127.0.0.1'
},
{
/* growl で通知 */
name: 'growl', type: 'execute', CommandLine: '"C:\\Program Files (x86)\\Growl for Windows\\growlnotify.exe" /t:EWatch "$message"'
},
{
/* メールで通知 */
name: 'mail', type: 'smtp', FromAddress:'???@gmail.com', ToAddress:'???@gmail.com,???@gmail.com', ServerHost:'localhost:25'
},
{
/* syslog 転送 */
name: 'syslog', type: 'syslog', RemoteHost: '192.168.0.2'
},
{
/* test.bat実行 */
name: 'test', type: 'execute', CommandLine:'C:\\test.bat "$timestamp" "$hostname" "$source" "$level" "$code" "$message"'
}
],
EventLog: {
Application: [
/* エラーを growl で通知 */
{ logLevel:'E', match:null, ignore:null, actions:[ 'growl' ]},
],
System: [
/* エラーをメールで通知 */
{ logLevel:'E', match:null, ignore:null, actions:[ 'mail' ]},
/* エラー以外を syslog で通知 */
{ logLevel:'', match:null, ignore:null, actions:[ 'syslog' ]},
]
},
File: {
/* test.log に [ERROR] が含まれていればコマンド(test.bat)を実行 */
"C:\\test.log" :[
{ match:'\\[ERROR\\]', ignore:null, actions:[ 'test' ]},
]
},
Syslog: {
/* 514ポートで待ち受け、ERR が含まれていれば growl で通知 */
"514" : [
{ match:'ERR', ignore:null, actions:[ 'growl' ]},
]
},
Server: {
/* 31301 ポートで待ち受け、転送されたきたイベントを通知 */
Port: 31301,
Rules: [
{ match:null, ignore:null, actions:[ 'mail' ] }
]
}
}
}}}
== その他 ==
[[ReleaseList]]
[[RecentTickets(limit=5)]]