Ordner-Änderungsdatum in Nagios überwachen

Aus ITwiki
Wechseln zu: Navigation, Suche

Ich hatte den Anwendungsfall, dass ich eine Datensicherung, welche in einen Dateisystemordner erfolgt (Backup to disk) mit Nagios überwachen sollte. Bei jedem Backup ändert sich auch das Änderungsdatum des Ordners. Es liegt also nahe, diesen Wert in Nagios zu überwachen. Nachfolgend mein VBScript check_folderage.vbs, welches genau diesen Zweck erfüllt.

check_folderage.vbs erstellen[Bearbeiten]

Kopiere nachfolgenden Inhalt in die Datei check_folderage.vbs

'
' check_folderage.vbs
'
' Version 1.0
'
' Copyright by Flo Krug
'
' Comment: Nagios Plugin to check the age of a folder and if it exceeds the given warning or critical treshhold nagios generates an event
'
' Parameters
' -w <warning_hours> (required): value in hours when nagios/this script generates a warning if sophos av was not updated
' -c <critical_hours> (required): value in hours when nagios/this script generates a critical if sophos av was not updated
' -f <folder> (required): folder to check the last changed date

Dim arg_warning, arg_critical, arg_folder, arg_counter
Dim strSophosAvFile, objSophosAvFile
Dim strFolderDate, strWarningDate, strCriticalDate, strCurrentDate

' Parameters -w, -c and -f required
Set args = WScript.Arguments
If args.Count < 6 Or args.Count > 6 Then
	WScript.Echo "UNKNOWN: wrong parameters. Use: check_folderage.vbs -w <warning_hours> -c <critical_hours> -f <folder>"
	WScript.Quit (3)
End If
arg_counter = 0
For Each arg In args
	arg_counter = arg_counter + 1
	If LCase(arg) = "-w" And arg_counter < args.Count Then
		arg_warning = args(arg_counter)
	End If
	If LCase(arg) = "-c" And arg_counter < args.Count Then
		arg_critical = args(arg_counter)
	End If
	If LCase(arg) = "-f" And arg_counter < args.Count Then
		arg_folder = args(arg_counter)
	End If
Next

' We have to check if the folder we want to check exists
Set wshShell = CreateObject( "WScript.Shell" )

Set objFSO = Createobject ("Scripting.FileSystemObject")
If objFSO.FolderExists(arg_folder) = False Then
	WScript.Echo "UNKNOWN: Folder " & arg_folder & " not found"
	WScript.Quit (3)
End If

' Now we need the last modified date and compare it with the current time
Set objFolder = objFSO.GetFolder("" & arg_folder & "")

strFolderDate = objFolder.DateLastModified
strWarningDate = objFolder.DateLastModified + (arg_warning/24)
strCriticalDate = objFolder.DateLastModified + (arg_critical/24)
strCurrentDate = Now


' Compare last update time, warning and critical date and generate nagios event
If strCriticalDate <= strCurrentDate Then
	WScript.Echo "CRITICAL: folder " & arg_folder & " last updated on " & strFolderDate & " (WARNING on " & strWarningDate & ", CRITICAL on " & strCriticalDate & ")"
	WScript.Quit (2)
End If
If strWarningDate <= strCurrentDate Then
	WScript.Echo "WARNING: folder " & arg_folder & " last updated on " & strFolderDate & " (WARNING on " & strWarningDate & ", CRITICAL on " & strCriticalDate & ")"
	WScript.Quit (1)
End If

WScript.Echo "OK: folder " & arg_folder & " last updated on " & strFolderDate & " (WARNING on " & strWarningDate & ", CRITICAL on " & strCriticalDate & ")"
WScript.Quit (0)

Zum Testen rufe das Script über die Eingabeaufforderung auf, Beispiel:

check_folderage.vbs -f C:\mein\ordner -w 30 -c 60

Im Beispiel gibt das Script WARNING zurück, sobald der Ordner bzw. dessen Inhalt spätestens nach 30 Stunden nicht geändert wurde, nach 60 Stunden wird ein Critical ausgelöst.

Einbindung in Nagios[Bearbeiten]

Bitte lies dir den Artikel Backup Exec in Nagios überwachen durch und verfahre ähnlich wie dort beschrieben. Das Prozedere ist nahezu identisch.


Bewertung[Bearbeiten]

War dieser Beitrag hilfreich für Dich?
Bitte stimme unten ab.
0
0
0
Es wurden seit Erstellung der Umfrage am 15:21, 23. Aug. 2017 0 Stimmen abgegeben.
poll-id 1C239ACF020298BEE9D28B1F2699070A