イベント・ログをトリガーにしてメールを送信する(基本編)Tech TIPS

イベント・ログはWindows OSにおける基本的なログ・システムである。トラブル発生時には真っ先にこの内容を確認する必要がある。イベント・ログに新しいログが記録されるとメールを送信するようにしておけば、重要なログを見落とす危険性が少なくなる。Windows Vista以降のWindows OSでは、イベント・ログへの記録をトリガーとしてメールを送信する機能が用意されている。

» 2009年07月03日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows Vista/Windows Server 2008



解説

 イベント・ログはWindows OSにおける基本的なログ・システムであり、システム中で発生したさまざまな事象(エラーや警告、情報など)はここに集中して記録される。イベント・ログの内容を確認すれば、例えばハードウェアにエラーが発生したことなどが分かる。Windowsシステムに何らかのトラブルが発生した場合、管理者は真っ先にこのイベント・ログの内容を確認することになる。

 だがトラブルが起こった場合に、いちいちイベント・ログを開いて内容を確認するのではなく、エラー・イベントが発生したときに、メールなどで知らせてくれれば便利である。

 トラブルの兆候をいち早く把握できるからだ。専用のシステム管理ツールでは、そのような機能を備えたものが一般的であるが、Windows OS標準のイベント・ログにはそのような機能は含まれていない。だがWindows Vista以降のイベント・ログでは機能が拡張され、特定の条件にマッチするイベント・ログが記録されたときにメールを送信する機能が用意されている。本TIPSでは、まずその基本的な使い方として、システム・ログに「エラー」イベントが記録されたときに、それをメールで通知する方法を紹介する。より進んだ条件の設定方法などについては、今後別TIPSで紹介する。

操作方法

 イベント・ログが記録されたときに、条件に応じてメールを送信する機能は、イベント・ログではなく、タスク・スケジューラで実現されている。タスク・スケジューラでログを常に監視し、新しいログが追加されると、それをトリガー(契機)としてメールの送信タスクを起動するようになっている。以下、その設定手順について順に解説する。

 まず[コントロール パネル]の[管理ツール]−[タスク スケジューラ]を起動する([コンピュータ]を右クリックして[管理]を起動してもよい)。

タスク・スケジューラでイベント・ログをトリガーとするタスクを作成する タスク・スケジューラでイベント・ログをトリガーとするタスクを作成する
イベント・ログをトリガーとしてメールを送信する機能は、イベント・ログを監視するタスクによって実現されている。そのため、タスク・スケジューラ上でタスクを作成する。
  (1)こちらを使うと、ウィザードを使ってタスクを作成できる。作成後にタスクのプロパティを変更すれば、次の(2)と同じである。
  (2)今回は、システム・イベント・ログのうち、「エラー」カテゴリだけをトリガーとしたいので(さもないと、非常に多くのメールが送信されることになる)、こちらをクリックして、フルカスタムでタスクを作成する。

 イベントをトリガーにしてメールを送信するには、右側の[タスク]から[基本タスクの作成]か[タスクの作成]をクリックする。前者はウィザード形式で設定するツールであるが、今回は、「エラー」イベントだけをフィルタして取り出したいので、[タスクの作成]を使って、細かく設定してみる([基本タスクの作成]で作成後、タスクのプロパティを変更すれば、同じ結果が得られる)。タスクの作成画面が起動したら、[全般タブ]でタスク名などを設定する。以下、タブを切り替えながら、手動で設定する。

タスクの作成の開始 タスクの作成の開始
[全般]タブでは、タスク名やタスクの実行アカウントなどを設定する。
  (1)このタブを選択する。
  (2)タスクの名前を指定する。
  (3)タスクの実行アカウントを指定する。
  (4)デフォルトはこちらになっている。
  (5)こちらに変更して、ユーザーがログオンしていなくても常に実行されるようにする。

 次の[トリガ]タブでは、トリガーとするイベントを設定する。デフォルトでは何も設定されていないので、[新規]ボタンをクリックして、新しいトリガーを定義する。

トリガー条件の作成 トリガー条件の作成
この[トリガ]タブでは、メール送信のトリガー条件を定義する。デフォルトでは何も設定されていない。
  (1)このタブを選択する。
  (2)これをクリックして、新しいトリガー条件を定義する。

 [新規]ボタンをクリックすると「新しいトリガ」画面が表示されるので、タスクの開始条件として[イベント時]を選択し、イベント・ログを参照するカスタム・イベント・フィルタを作成する。

トリガーの定義 トリガーの定義
ここではカスタムのイベント・フィルタを作成する。
  (1)このドロップダウン・リストでは[イベント時]を選択する。すると「設定」の内容の表示が変わる。
  (2)[カスタム]を選択する。[基本]のままでは、イベント・ログの種類やイベント・ソース名などは選べるが、「エラー」や「重大」メッセージだけを選択することはできない。
  (3)これをクリックして、細かいトリガー条件を設定する。

 [新しいイベント フィルタ]をクリックすると次のような画面が表示されるので、「システム」イベント・ログから「エラー」となっているもの(赤いマークで表示されるイベント)だけを抜き出す条件を定義する。

イベント・フィルタの定義 イベント・フィルタの定義
ここでは、細かい条件を指定してイベント・フィルタを作成できる。
  (1)このタブを選択する。
  (2)作成されたフィルタは内部的にはXML形式で管理されている。このタブをクリックすると、その内容を確認できる。後で手動でXML文を編集してもよいが、ここでは、GUIで簡単に設定を済ませる。
  (3)「エラー」イベントだけを抜き出す。
  (4)システム・ログ全体から抜き出す。
  (5)これをクリックして、イベント・ソースを選択する。
  (6)ここでは「システム」を選択しているが、ほかのログを指定してもよい。

 次は、トリガーにマッチした場合実行される「操作」を定義する。ここではメールを送信してみる。[操作]タブをクリックすると次のような画面が表示されるので、[新規]をクリックして新しい操作を定義する。

操作の定義 操作の定義
トリガー条件にマッチした場合に実行されるアクションを定義する。デフォルトでは何も定義されていない。
  (1)このタブを選択する。
  (2)これをクリックして、新しい操作を定義する。

 ここではメールを送信するために、「電子メールの送信」を選択し、メール送信に必要な設定を行う。

メール送信操作の定義 メール送信操作の定義
ここでは、メールを送信するように設定する。ただし送信できるメールは定型文(+添付ファイル)ぐらいしかカスタマイズ可能な項目はない。件名や本文には日本語も利用できる。
  (1)操作の種類としては[電子メールの送信]を選択する。
  (2)メールの送信元アドレス。これがそのままFrom:になる。
  (3)メールの送信先アドレス。これがそのままTo:になる。
  (4)件名。日本語も利用できるが(ISO-2022-JPエンコードされる)、定型文のみ。これがそのままSubject:になる。
  (5)メールの本文。日本語も利用できる。Microsoft製品によくあるUTF-8やQuoted-Printableエンコーディングではなく、JISコードでエンコードされるようである(ただし、「Content-Type:charset="iso-2022-jp"」指定は付かないようであるが)。
  (6)送信用SMTPメール・サーバ。ここで指定されたSMTPサーバに対して直接メールを送信するようである。上で指定した差出人やあて先などが正しく受け付けられるように、メール・サーバを設定しておく必要がある。

 以上でタスクの作成は完了である。[OK]をクリックして画面を閉じる。タスク・スケジューラの画面に戻り、[F5]キーを押して画面を更新すると(もしくは[操作]メニューの[最新の情報に更新]をクリックする)、次のようにタスクが定義されているはずである。タスクを選択してから[実行]ボタンをクリックし、試しに一回メールを送信させて、正しく動作するかどうかを確認しておく。

作成されたタスクとそのテスト 作成されたタスクとそのテスト
タスク・スケジューラの画面を更新すると、作成したタスクが表示されるはずである。
  (1)作成されたタスク。
  (2)これをクリックして管理画面を更新する。
  (3)これをクリックして、タスクを一度実行させてみる。これはトリガー条件とは関係なく、操作部に記述されたアクションをすぐに実行させるための機能である。これをクリックして、メールが正しく届くかどうかを確認する。

 タスクの実行が成功すると、次のようなメールが受信できているはずである。

受信したイベント・ログのエラー通知メールの例 受信したイベント・ログのエラー通知メールの例
タスクの実行が成功すると、このようなメールが受信できるはずである。
  (1)メール本文。実際に利用する場合は、もっと詳しい情報をを追加したり、コンピュータ名を入れるなど、もっと分かりやすい文面にしていただきたい。

 メールが正しく届かない場合は、タスクの実行が失敗していないかをイベント・ログやメール・サーバのログで確認する。

 テストが成功したら、次はイベント・ログにログを作成させて、メールが送信されるかどうかを確認しよう。コマンド・プロンプト上でeventcreateコマンドを利用すると、任意のイベントを記録させることができる。これを実行して、メールが自動的に送信されることを確認する。このコマンドの詳細については、TIPS「イベント・ログに任意の文字列を出力する」を参照していただきたい。

イベントの手動作成 イベントの手動作成
コマンド・プロンプト上でeventcreateコマンドを実行すると、任意のイベントを作成できる。これはシステム・イベント・ログに、ID=1として、「エラー」イベントを書き込む例。

 以上で、イベント・ログをトリガーとしたメール送信の基本的な設定は完了だ。しかしこの機能では、メールの件名や本文を動的に生成/変更することはできず、常に固定文面のメールしか送信できないようである。以上の設定で運用すると、非常に多くのメールが送信され、重要なメールが埋もれてしまう可能性がある(もともとイベント・ログには、無視してもよいイベントが記録されていることも多い)。

 実際に運用する場合は、イベント・ログのソースやIDなどでさらに条件を絞り込んで、本当に大事なものだけを送信させる必要があるだろう。その方法については今後別TIPSで紹介する。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。