第 5 章 EventSentry で監視
5.5 システムヘルスの監視
5.5.2 アプリケーションスケジューラー
62
サービス状況を変更できませんでした。:サービス一時停止
10110 A service startup type changed 自動からマニュアルへ PDAgent サービスの起動タイプが変更
63 アプリケーションスケジューラーで設定した日付と時間にアプリケーションをスケジュールするだけでな く、更にx分ごとに連続してアプリケーションを実行します。
追加機能として、EventSentry が記録できるのは、動的セベリティ(インフォメーションまたはエラー)でイ ベントログへ出力したアプリケーションです。
この機能で起動した Executables は EventSentry エージェントが実行している 同じセキュリティアカウントの下で実行します。 デフォルトでは Local System アカウントです。この事を考慮に入れて下さい。アプリケーション実行しようとする時は ネットワーク上に配置されたリソースへのアクセスが必要です。
設定した日時でアプリケーション実行をスケジュール化
事前設定した日時、例えば毎日午後 3 時、でアプリケーション実行をスケジュール化するには、スケジ ュールリスト横のプラスボタンをクリックします。 以下のダイアログが表示されます。
64
Schedule Type を Regular Schedule に設定、次に Date & Time エリアでアプリケーションのスケジュー ル化します。 特定の曜日、または月内の特定の日、または双方で実行します。
Process Timeout 機能ではプロセスがx分以上実行する場合、プロセス終了できます。 Filename フィー ルドで実行ファイルを指定します。
Terminate child processes にチェックが入ると、Filename で起動する全てのチャイルドプロセスは繰り返 し終了します。
周期的にアプリケーションが実行するよう、スケジュール化
連続してアプリケーションを実行、例えば 5 分毎、をスケジュール化するなら、スケジュールリストの横 のプラスボタンをクリックします。 以下のダイアログが表示されます。
65
Schedule Type を Recurring Schedule に設定。次に Recurring Schedule に従い、構成します。スケケ ジュールを制限し、アプリケーションを決められた時間の間だけ実行できます。例えば 8AM−5PM 間。
既存スケジュールの変更
既存スケジュールを変更するには、スケジュールリスト内の見出しをダブルクリックします。
スクリプト(例;VB スクリプト)起動時、スクリプトファイルを引数(argument)
として、 Filename フィールドをスクリプトエンジン(例;cscriot.exe)へ 方向付けする事を推奨します。
例えば C: \Windows\System32\script.exe c:\Batch\files̲count.vds 実行ファイル c:\Batch\files̲count.vds
アプリケーション終了コード
終了コード分析を利用する場合、次の 2 点を推奨します。実行アプリケーションディレクトリ(例;
ping.exe)を呼び出すか、スクリプトエンジンを使用してスクリプトを行使します。これにより終了コード
(例;cscript.ece を使用した VB スクリプト)を指定できます。 アプリケーション終了コードが重要な場合、
バッチファイルの使用は推奨しません。
66 Log application return code 0 to event log にチェック入れると、EventSentry はイベント情報を記録し ます。 これはアプリケーションイベントログへ実行したスクリプト結果をテキストで表示したイベントで す。
Log application return code > 0 to event log にチェックを入れると,EventSentry はエラーイベントを記 録します。 これはアプリケーションイベントログへ実行したスクリプト結果をテキストで表示したイベント です。
次章 Example scripts では、アプリケーションスケジューラー機能でより良く動作する Visual Basic スク リプトがリスト化されています。
5.5.2.1 Example Scripts
以下のスクリプトはアプリケーションスケジューラーで使用されます。 またスクリプト実行が成功また は不成功したか(結果に)従いエラーコードを終了します。 調整を必要とする値は緑でハイライト化さ れています。 全ての見本は現時点で使用する Visual Basic スクリプトです。
このスクリプトはフォルダ内のファイル数をカウントします。ファイル数が閾値を 越えると1にリターンします。
' --- ' --- file_count.vbs --- ' ---
' Counts the number of files in a folder (without traversing subfolders) '
' Returns 1 if the number of files is larger than MyLimit or 0 if the number ' of files is equal or less than MyLimit
Dim FS, FO, FC
Dim MyFolder, MyLimit ' Set your values here MyFolder = "C:¥Batch"
MyLimit = 200
Set FS = CreateObject("Scripting.FileSystemObject") Set FO = FS.GetFolder(MyFolder)
Set FC = FO.Files
WScript.Echo "Folder " & MyFolder & " contains " & FC.Count & " files."
If FC.Count > MyLimit Then WScript.Quit(1)
Else
67 WScript.Quit(0)
End If
このスクリプトはシステム内の全ての fan を列挙します。 また(サポートしている なら)WMI を通して監視できます。1 つ以上の監視対象 fan のステータスが Other 、 Unknown 、 Running でもない場合、スクリプトは1にリターンします。
' --- ' --- system_faninfo.vbs --- ' --- On Error Resume Next
Dim GlobalError GlobalError = 0
Function ExplainAvailability(Availability) Select Case Availability
Case 1: ExplainAvailability = "Other"
Case 2: ExplainAvailability = "Unknown"
Case 3: ExplainAvailability = "Running / Full Power"
Case 4: ExplainAvailability = "Warning"
Case 5: ExplainAvailability = "In Test"
Case 6: ExplainAvailability = "Not Applicable"
Case 7: ExplainAvailability = "Power Off"
Case 8: ExplainAvailability = "Off Line"
Case 9: ExplainAvailability = "Off Duty"
Case 10: ExplainAvailability = "Degraded"
Case 11: ExplainAvailability = "Not Installed"
Case 12: ExplainAvailability = "Install Error"
Case 13: ExplainAvailability = "Power Save - Unknown"
Case 14: ExplainAvailability = "Power Save - Low Power Mode"
Case 15: ExplainAvailability = "Power Save - Standby"
Case 16: ExplainAvailability = "Power Cycle"
Case 17: ExplainAvailability = "Power Save - Warning"
End Select End Function
Function ExplainStatus(Status) Select Case Status
Case 1: ExplainStatus = "Other"
Case 2: ExplainStatus = "Unknown"
68 Case 3: ExplainStatus = "Enabled"
Case 4: ExplainStatus = "Disabled"
Case 5: ExplainStatus = "Not Applicable"
End Select End Function strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!¥¥"
&
strComputer & "¥root¥cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Fan") For Each objItem in colItems
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Active Cooling: " & objItem.ActiveCooling
Wscript.Echo "Availability: " & ExplainAvailability(objItem.Availability) & "
(" & objItem.Availability & ")"
Wscript.Echo "Device ID: " & objItem.DeviceID
Wscript.Echo "Status Info: " & ExplainStatus(objItem.StatusInfo) & " (" &
objItem.StatusInfo & ")"
Wscript.Echo ' Analyze
If objItem.Availability > 3 Then GlobalError = 1
End If Next
Wscript.Quit(GlobalError)
5.5.2.2 イベントログ
以下のイベントログレコードはこの Application Scheduler カテゴリー機能で記録します。
Event
ID イベント表記 例
10200 An application was executed successfully
Superdel.exe は以下で表示した結果と共に 15 秒間実行します。
リターンコードは0
10201 A process could not be created
Superdel.exe 処理は以下のエラーにより作成できませんでした。
ファイル発見できず
69
10202
A process exceeded maximum configured time interval, but the process could not be terminated
Superdel.exe.処理は最大許容時間 15 分を超過しました。
EventSentry は以下のエラーにより処理を終了できません。
アクセス拒否
10303
A process exceeded maximum configured time interval, and was terminated
Superdel.exe.処理は最大許容時間 15 分を超過しました。
この処理は終了しました。 管理アプリケーション内、このドライ ブのタイムアウト・インターバルを増加してください。 (System Health => 3rd Party Applications)