Es gibt Programme oder auch Serverumgebungen die viel protokollieren und unter Umständen massig an Logdateien generieren. Dies kann unter Umständen regelmäßig dazu führen, dass die Fesplatte voll läuft.

Jetzt kann man natürlich jedes Mal händig diese Log-Verzeichnisse aufräumen, aber dies ist sehr zeit intensiv und nerven raubend.

Typische Anwendungsgebiete sind Exchange Server, Server wo ein IIS genutzt wird, SBS und Sharepoint Logs oder aber auch das Programm X das einfach zuviel Logdateien generiert.

Ich stelle Ihnen in diesem Beitrag ein kleines Skript vor, dass Ihnen ihr Leben erheblich erleichtern kann, und wenn Sie doch mal Hand anlegen müssen auch darüber informiert werden.

 

Logs,Logs,Logs...
Logs,Logs,Logs…

 

Wir bedienen uns dabei der PowerShell, da dort diese Aufgabe am einfachsten und sinnigsten umgesetzt werden kann.

Ich will jetzt nicht speziell auf Details eingehen bezüglich PowerShell Befehlen und Syntax, aber hier ist das Herzstück des Skriptes, ein Befehl welcher sich um das Ermitteln der zu alten Dateien kümmert und zur weiteren Verarbeitung in die Variable $itemsFound speichert.

 

#PsIsContainer means if it is a folder..and compare to the lastWriteTime tresh we have given above..
$itemsFound = Get-ChildItem $LogFolder -Recurse | where{!$_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-$DateToDelete)}

 

Es werden also auch nur Logdateien gelöscht, die älter als x Tage als sind. Dies ist auch immer zu empfehlen da aktuelle Logs (egal in welchem Anwendungsgebiet) sehr wichtige Analysemöglichkeiten darstellen.

Im Skript können Sie dabei einen ganzen Ordner angeben oder aber auch mit Wildcards arbeiten um wirklich nur einen speziellen Typ von Dateien zu löschen (Zum Beispiel C:\temp\*.log) Ich habe zwei Skripte angehängt für die potentiellen Szenarien:

 

1. Einfaches PowerShell-Skript über geplanten Task (Aufgabenplanung)

  • Öffnen Sie die Datei „ClearAnnoyingLogs.ps1“ und ändern Sie die Variablen „daysToDelete“ und „LogFolder“ nach Ihren Wünschen ab.
  • Öffnen Sie die geplante Task Ansicht von Windows und lassen Sie das Skript mindestens 1 mal pro Tag laufen.
    • Unter „Programm starten geben Sie die powershell.exe an und als Argumente -noninteractive -file „pfad zum ps1 script“
    • Es kann notwendig sein das Sie den genauen Pfad zur powershell.exe angeben müssen.
  • Erstellen Sie in Server-Eye einen geplanten Task Sensor. An Hand des positiven Rückgabewertes (0) bekommen Sie direkt mit ob der Task erfolgreich durchgelaufen ist.

 

 

Aufgabenplanung
Aufgabenplanung

 

Aufgabenplanung in Server-Eye
Aufgabenplanung in Server-Eye

 

2. Eigener Sensor in Server-Eye über PowerShell API

  • Kopieren Sie Die Datei „ClearAnnoyingLogsSensor.ps1“ in das Server-Eye Verzeichnis unter „scripts“.
  • Gehen Sie nun in Ihr OCC und legen auf dem Server den Sensor „Erweiterte PowerShell Skript Überprüfung“ an.
  • Tragen Sie als Parameter „-days xyz -path „C:\meinpfad“ ein und wählen Sie anschließend das Skript aus der Liste aus.
  • Wenn Sie möchten können Sie nun das Intervall auf Ihre Bedürfnisse anpassen oder sogar Pausenzeiten definieren

Der Vorteil ist das Sie die direkte Ausgabe des Skripts immer in Ihrem OCC haben und von den Vorteilen eines eigenen Sensors profitieren.
So liefert das Skript zum Beispiel auch Messwerte, damit Sie immer wissen wie viele Dateien bereinigt wurden.

 

Das Skript in Server-eye
Das Skript in Server-eye

 

Weitere Infos, wie Sie PowerShell Skripte zu eigenen Sensoren in Server-Eye umwandeln finden Sie unter

https://support.server-eye.de/support/customer.pl?Action=CustomerFAQZoom;ItemID=80

ch hoffe ich konnte Ihnen mit diesen zwei Lösungen etwas helfen die tägliche Logbelastung zu bekämpfen und den Techniker-Alltag etwas einfacher gestallten.

Zum Skript-Paket