Fix array handling on log analyser; Adds timestamp

This commit is contained in:
Lord Hepipud 2021-05-27 12:20:57 +02:00
parent 7ddc77c494
commit 37596459ab

View file

@ -9,7 +9,8 @@ function Show-IcingaEventLogAnalysis()
Start-IcingaTimer 'EventLog Analyser'; Start-IcingaTimer 'EventLog Analyser';
try { try {
$BasicLogData = Get-WinEvent -ListLog $LogName -ErrorAction Stop; [array]$BasicLogArray = Get-WinEvent -ListLog $LogName -ErrorAction Stop;
$BasicLogData = $BasicLogArray[0];
} catch { } catch {
Write-IcingaConsoleError 'Failed to fetch data for EventLog "{0}". Probably this log does not exist.' -Objects $LogName; Write-IcingaConsoleError 'Failed to fetch data for EventLog "{0}". Probably this log does not exist.' -Objects $LogName;
return; return;
@ -40,13 +41,21 @@ function Show-IcingaEventLogAnalysis()
}; };
}; };
$LogData = Get-WinEvent -LogName $LogName; $LogData = Get-WinEvent -LogName $LogName;
[string]$NewestEntry = $null;
[string]$OldestEntry = $null;
foreach ($entry in $LogData) { foreach ($entry in $LogData) {
[string]$DayOfLogging = $entry.TimeCreated.ToString('yyyy\/MM\/dd'); [string]$DayOfLogging = $entry.TimeCreated.ToString('yyyy\/MM\/dd');
[string]$HourOfLogging = $entry.TimeCreated.ToString('yyyy\/MM\/dd-HH'); [string]$HourOfLogging = $entry.TimeCreated.ToString('yyyy\/MM\/dd-HH');
[string]$MinuteOfLogging = $entry.TimeCreated.ToString('yyyy\/MM\/dd-HH-mm'); [string]$MinuteOfLogging = $entry.TimeCreated.ToString('yyyy\/MM\/dd-HH-mm');
$OldestEntry = $entry.TimeCreated.ToString('yyyy-MM-dd HH:mm:ss');
if ([string]::IsNullOrEmpty($NewestEntry)) {
$NewestEntry = $OldestEntry;
}
if ($LogAnalysis.Day.Entries.ContainsKey($DayOfLogging) -eq $FALSE) { if ($LogAnalysis.Day.Entries.ContainsKey($DayOfLogging) -eq $FALSE) {
$LogAnalysis.Day.Entries.Add($DayOfLogging, 0); $LogAnalysis.Day.Entries.Add($DayOfLogging, 0);
} }
@ -89,5 +98,7 @@ function Show-IcingaEventLogAnalysis()
Write-IcingaConsoleNotice 'Maximum Logs per Day: {0}' -Objects $LogAnalysis.Day.Maximum; Write-IcingaConsoleNotice 'Maximum Logs per Day: {0}' -Objects $LogAnalysis.Day.Maximum;
Write-IcingaConsoleNotice 'Maximum Logs per Hour: {0}' -Objects $LogAnalysis.Hour.Maximum; Write-IcingaConsoleNotice 'Maximum Logs per Hour: {0}' -Objects $LogAnalysis.Hour.Maximum;
Write-IcingaConsoleNotice 'Maximum Logs per Minute: {0}' -Objects $LogAnalysis.Minute.Maximum; Write-IcingaConsoleNotice 'Maximum Logs per Minute: {0}' -Objects $LogAnalysis.Minute.Maximum;
Write-IcingaConsoleNotice 'Newest entry timestamp: {0}' -Objects $NewestEntry;
Write-IcingaConsoleNotice 'Oldest entry timestamp: {0}' -Objects $OldestEntry;
Write-IcingaConsoleNotice 'Analysing Time: {0}s' -Objects ([math]::Round((Get-IcingaTimer 'EventLog Analyser').Elapsed.TotalSeconds, 2)); Write-IcingaConsoleNotice 'Analysing Time: {0}s' -Objects ([math]::Round((Get-IcingaTimer 'EventLog Analyser').Elapsed.TotalSeconds, 2));
} }