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 が失敗する不具合対応
Copyright © MURA All rights reserved.