連載:いまさら聞けないWindows Serverの開発活用術

第2回 Windows上の開発環境の障害やトラブルへの事前対策

亀川 和史
2012/07/20
Page1 Page2 Page3

イベント・ログの一元化

 Windows Server 2008 R2の場合、リモート管理を設定していればイベント・ビューアから別マシンのイベント・ログを閲覧できる。だが、サーバの台数が多くなると、そうやって1台ずつ閲覧するのは面倒だ。そういう場合は、各サーバのイベントを転送して1台のサーバでイベント・ログを集中的に管理すればよい。具体的な手順は、下記のリンク先を参照してほしい。

 上記のTechNetサイトで解説されている手順を実施する際には、次の点に注意してほしい。

 ドメイン・コントローラには、ローカル・グループが存在しない。そのため、ドメイン・コントローラをソース(=収集される側のコンピュータ)とする場合には、「ローカルのAdministratorsグループに、コレクタ(=収集する側のコンピュータ)のコンピュータ・アカウントを追加」という手順が実施できない。よって、コンピュータ・アカウントではなく、ドメイン・コントローラにアクセス可能な「ドメイン・アカウント」を指定する必要がある。ドメイン・コントローラをコレクタに設定する場合は問題ないが、複数のドメイン・コントローラを収集する場合でも同じ問題が発生するため、収集用アカウントは特定のドメイン・アカウントにした方がいいだろう。

 ドメイン・アカウントを指定する方法を補足説明しておこう。次の画面では、[詳細設定]ボタンから「ドメインのadministratorアカウント」を指定している。

ドメイン・アカウントを指定する方法(1)
[詳細設定]ボタンから「ドメインのadministratorアカウント」を指定している。
  サブスクリプション名(必須)。
  説明(任意)。
  ソースから収集されたイベント・ログを記録する先のログ。通常は「Forwarded Events」を指定すればよい。
  サブスクリプションの種類と、コレクタ(=収集するコンピュータ)を指定する。
  収集対象のイベント・ログを指定する。
  実行するユーザー・アカウントおよび、サブスクリプションの詳細設定を行う。

 [詳細設定]ボタンを押すと、次の画面のダイアログが表示され、ここでドメイン・アカウントを設定できる。

ドメイン・アカウントを指定する方法(2)
[詳細設定]ボタンをクリックすると表示されるダイアログ。ここで「ドメインのadministratorアカウント」(具体的には「MIRAGE\administrator」)を指定している。
  イベント・ログの転送を行う実行アカウントの設定。[ユーザーとパスワード]ボタンをクリックして「ドメインのadministratorアカウント」を指定する。
  イベント配信の最適化の設定。LAN内であれば「潜在期間の最小化」でいいだろう。
  プロトコルの選択。LAN内であれば「HTTP」でも問題はない。「HTTPS」を選択することもできる。組織内であれば、Active Directoryの証明書サービスでHTTPS(SSL)用の証明書を発行すればよい。

 以上でドメイン・アカウントの設定は完了だ。収集対象のイベントが発生すれば、以下の画面のように「Forwarded Events」に、そのイベントのログが格納される。

「Forwarded Events」に各ソースから収集したイベント・ログが格納される

 もちろん、この「Forwarded Events」へのイベントのログ記録をトリガーとしたタスクを作成することもできるので、「重大イベントのみを収集しておき、そのイベントのログがこの「Forwarded Event」に登録されたときに電子メールを送る」というタスクを設定にしておけば、効率的に管理下のサーバで発生した重大イベントを収集できる(その具体的な方法は後述する)。

 注意点として、「Forwarded Events」は(PowerShellの)Get-EventLogコマンドレットでは取得できないため、Windows Vista以降のOSで.NET Framework 3.5以降をインストールしたうえでGet-WinEventコマンドレットを使用する必要がある。

 次の画面は、Get-EventLogコマンドレットとGet-WinEventコマンドレットの使用例である。Get-EventLogコマンドレットでは、「-List」パラメータで一覧を表示させても「Forwarded Events」が表示されないが、Get-WinEventコマンドレットでは「ForwardedEvents」という名前で表示される。

上:Get-EventLogコマンドレットの使用例/下:Get-WinEventコマンドレットの使用例

特定のイベント・ログに、特定レベルのログが記録されたタイミングで、タスクを実行させる

 前述した「重大イベントのログが「Forwarded Event」に登録されたときに電子メールを送る」というように「一元化したイベント・ログに何かのイベントのログが記録された際に、管理者にメールを送信したり、何らかのプログラムを実行したりするタスク」を実現するには、タスク・スケジューラでそのタスクにトリガーを設定すればよい。Windows Server 2008 R2のタスク・スケジューラでは、特定のイベントのログが記録された場合に、何らかのアクションを設定するためのトリガーを定義できるようになっている。従来は専用の運用監視ソフトと併用しなければならなかったことが、Windowsの標準機能でサポートされている。

 以下の画面は、イベント・ログの「アプリケーション」ログもしくは「システム」ログに、[重大][エラー]レベルのイベントのログが記録されたときに、何らかのタスクを起動するトリガーを設定している例である。

イベント・ログ記録をトリガーにするタスクの設定例
この画面は、タスク・スケジューラでタスクを作成した後、そのタスクの[トリガー]タブから新規トリガーを作成する手順を示している。この例では、「アプリケーション」ログおよび「システム」ログに、任意の[重大]レベルもしくは[エラー]レベルのイベントが記録されたタイミングで、何らかのプログラムの実行を定義している。

 特にメール送信部分の設定手順については、「Windows TIPS:イベント・ログをトリガーにしてメールを送信する(基本編)」を参考にしてほしい。

 注意点として、タスク・スケジューラからのメール送信は、サブミッション・ポート(587/tcp)をサポートしていないようだ。使用するSMTPサーバがサブミッション・ポートを使わなくてはならない場合、(前掲のTIPSのように「電子メールの送信」ではなく)「プログラムの起動」を選択して、別プログラムによってメール送信を行わなくてはならない。その場合、PowerShellで比較的簡単に作ることができるので、以下の記事を参考にして試してほしい。

 なお、イベント発生時にメールを送信するというこの機能はWindows Server 2012では非推奨となっている(機能は残っている)。外部コマンドの実行はサポートされているので、今からPowerShellなどによるスクリプトでのメール送信にした方がいいだろう。

 いかがだっただろうか? Windowsの標準機能もかなり追加されており、OSの標準機能だけでもかなりの運用効率化を行うことができる。次回はディスクの効率的な管理とリリース管理ついて解説する。end of article


 INDEX
  [連載]いまさら聞けないWindows Serverの開発活用術
  第2回 Windows上の開発環境の障害やトラブルへの事前対策
    1.開発サーバのトラブル対応
    2.開発中の性能やトラブルに対処する(1)
  3.開発中の性能やトラブルに対処する(2)

インデックス・ページヘ  「いまさら聞けないWindows Serverの開発活用術」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH