ewatch (2.0.37) | 2023-03-24 18:55 |
Windowsの中でいつのまにか発生しているエラーを通知できる環境を作ろうと考えています。
今の段階で監視対象として考えているのは、イベントログ(ApplicationおよびSystem)とテキスト形式のログファイルです。 ついでに UNIX/Linux で使われる syslog の転送にも対応して、複数のOSの通知を一括して管理できるようにしようとしています。 とはいいながらも、本格的な統合監視をするならやはり zabbix 等を使った方が良いです。 ewatch は1台からでも使える手軽な監視ツールという位置付けで考えています。
* EWatch
* EWatchCLI
version | EWatchサービスのバージョン情報を表示します。 |
info | EWatchサービスが読み込んだ設定ファイル内容の簡易的な情報と、それが適用された日時を表示します。 |
reload | EWatchサービスを再起動せずに設定ファイルを再読み込みします。 |
put | EWatchサービスにJSON形式でイベントデータを渡します。 |
* EWatchUI
ここでは概要だけを記します。詳細については Actions を参照してください。
* forward: 他のサーバーへの転送
* execute: コマンド実行
* smtp: Eメール送信
* syslog: syslog転送
* mantis: MantisBT登録
* redmine: Redmineチケット登録
* slack: Slack通知
notepad等でサッと編集しようとすると XML は面倒くさいので、json形式で記述するようにしています。
- {
- 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' ] }
- ]
- }
- }
例えばメール通知設定をしている状態でアクションが大量に発生すると、読み切れないほどのメールが送信されるかもしれません。 また、もしかしたら SMTP サーバー側の制限にひっかかってしばらく接続拒否されたり、サーバー管理者の人に叱られるかもしれ ません。 そういう状態に陥ることを防ぐために、アクション実行を制限する事ができます。 制限は、一定時間数に何件まで、という設定をします。 この制限は、どのアクションにも指定することができます。 下記の例では、300秒に5件の通知までという制限をします。
イベントログ、ファイル、syslog、TCPサーバー(他サーバーからの転送を受けるもの)、それぞれで設定をします。
* イベントログ監視設定
logLevel | ログレベル(EかWかI) |
eventId | イベントID |
source | イベントソース |
match | 対象とするメッセージにマッチさせるパターン |
ignore | 対象外とするメッセージにマッチさせるパターン |
* ファイル監視設定
- "File": {
- "[932]C:\\Program Files\\xxx\\logs\\error.log": [ /* MS932のファイル([932]を付ける) */
- { "match": "failure", "ignore": "", "actions": [ "slackTest" ] }
- ],
- "C:\\ProgramData\\xxx\\logs\\error.log": [ /* UTF8のファイル */
- { "match": "ERROR", "ignore": "", "while": "[^0-9].*", "whileMax":30, "actions": [ "slackTest" ] }
- ]
- }
match | 対象とするメッセージにマッチさせるパターン |
ignore | 対象外とするメッセージにマッチさせるパターン |
while | 同じイベントとして扱いたい連続する行にマッチさせるパターン |
whileMax | 同じイベントとして扱いたい行の最大数 |
* syslog受信設定
hostname | 対象とするホスト名/IPアドレスにマッチさせるパターン |
match | 対象とするメッセージにマッチさせるパターン |
ignore | 対象外とするメッセージにマッチさせるパターン |
* TCPサーバー受信設定
hostname | 対象とするホスト名/IPアドレスにマッチさせるパターン |
match | 対象とするメッセージにマッチさせるパターン |
ignore | 対象外とするメッセージにマッチさせるパターン |
ewatch (2.0.37) | 2023-03-24 18:55 |
[PageInfo]
LastUpdate: 2017-12-19 11:56:16, ModifiedBy: bananajinn
[Permissions]
view:all, edit:members, delete/config:members