Home > Windows にまつわる e.t.c.

PowerShell でイベントログ監視


Windows Server は、何か異変があるとイベントログに様々情報が記録されるので、イベントログを監視していれば、サーバーがダウンする前に異変をキャッチして対応することが可能です。(ダウンをゼロにすることはできませんが、かなりの確率で対応可能です)

イベントログを監視するには、System Center や zabbix 等の監視ソリューションがスタンダードですが、環境構築が大変だったり、多機能なプロダクトなのでお手軽に導入するという感じではありません。

PowerShell はイベントログを読むことができるので、イベントログ監視に特化したスクリプトを作りました。

スタンドロアローン動作の PowerShell スクリプトだけで作っているので、お手軽に導入できます。

このスクリプトは、実運用環境で3年程度運用稼働しているスクリプトをベースに汎用化しています。

実運用環境で使用しているスクリプトは、スクリプトの自動更新や大量のサーバーに自動展開する仕組みを組み込んでいますが、ガッツリ環境依存しているので、この辺りの機能は削除しました。

腕に覚えがあるのなら、自動更新や自動展開にも挑戦してください。

 

機能

10分ごとにイベントログを読んで、通知対象のイベントがあればメールします。

通知メールはこんな感じです

Subject: 【LAN】イベントログにエラーを検出しました wstp5(Hyper-V) / Service Control Manager / 7031

Error イベントログ情報( 4 件)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Status         : Error
Project Name   : LAN
Host Name      : wstp5
Alias          : TP
Server Type    : Hyper-V
IPv4 Address   : 192.168.33.198
IPv6 Address   : 2400:400e:400:0:95e7:7460:1d23:e036
Manufacturer   : American Megatrends Inc.
Model          : All Series
Serial Number  : System Serial Number
OS             : Microsoft Windows Server 2016 Datacenter Technical Preview 5
Log Name       : System
Generated Time : 08/24/2016 19:56:11
Event Source   : Service Control Manager
Event ID       : 7031
Message :
User Data Access_96fc663 サービスは予期せぬ原因により終了しました。このサービスの終了は 1 回目です。次の修正操作が 10000 ミリ秒以内に実行されます: サービスの再開。
XML :
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" />
    <EventID Qualifiers="49152">7031</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x8080000000000000</Keywords>
    <TimeCreated SystemTime="2016-08-24T10:56:11.539754500Z" />
    <EventRecordID>3986</EventRecordID>
    <Correlation />
    <Execution ProcessID="724" ThreadID="3856" />
    <Channel>System</Channel>
    <Computer>wstp5.vwnet.jp</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="param1">User Data Access_96fc663</Data>
    <Data Name="param2">1</Data>
    <Data Name="param3">10000</Data>
    <Data Name="param4">1</Data>
    <Data Name="param5">サービスの再開</Data>
    <Binary>550073006500720044006100740061005300760063005F0039003600660063003600360033000000</Binary>
  </EventData>
</Event>
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 

 

特徴

スタンドアローン動作なので、管理サーバー等は必要ありません。小規模環境にも手軽に導入できます。
インストール スクリプトがあるので簡単に導入できます。
イベント検出抑制や追加が設定可能です。
PowerShell だけで作られているので、どのような動作をしているのか確認することができます。

 

 

動作環境

以下環境での稼働実績があります。

Windows Server 2008 R2
Windows Server 2012
Windows Server 2012 R2
Windows Server 2016 TP5

 

 

入手方法

以下 URL から Web ブラウザーか wget(Invoke-WebRequest)でダウンロードしてください。

 

https://bitbucket.org/MURAatVWNET/checkeventlog/downloads/CheckEventLog.zip

 

SHA 256 ハッシュ値 6EE01ECCA91C15C6176E1D168D044D13354931C079A1515ECD6EAB32FFDD3936

 

 

インストール方法

ダウンロードした CheckEventLog.zip を適当なフォルダに展開します。
ConfigCommon.ps1 を設定します。(共通設定)
ConfigNode.ps1 を設定します。(ノード別設定)
管理権限で Install.ps1 を実行します。

 

 

更新履歴

    2016/08/27  1.00 公開用
    2016/08/29  1.01 Install.ps1 / Uninstall.ps1 が失敗する不具合対応
                     XML が変なところに入る Bug 修正
                     (公開用修正時の漏れでした orz)
    2016/09/03  1.02 RemoveExecLog.ps1 が失敗する不具合対応

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.