gqhdirigent
Goto Top

Zentrale und automatisierte Bereitstellung aller Windows Logfiles

Hallo

vielleicht kann mir ja jemand weiterhelfen.
Ich suche eine Möglichkeit, ein Tool oder irgendetwas, mit dem ich automatisiert alle Windows-Server Logfiles zentral der Geschäftsführung zur Verfügung stellen kann.
Da die Jungs ein normales File nicht auslesen können und ich vielleicht auch noch Dinge filtern können muß wäre es ganz gut, wenn das Tool die Daten etwas aufbereitet und z.B als HTML-Seite darstellt.
Jedenfalls sollte ein normaler Nutzer an den Daten auch etwas erkennen können

Wenn ihr mir helfen könnt, wäre ich sehr dankbar und wenn ihr konkrete Fragen habt beantworte ich dies natürlich gerne.
Hilft mir ja im endeffekt weiter )

Gruß

Content-Key: 63157

Url: https://administrator.de/contentid/63157

Printed on: April 19, 2024 at 23:04 o'clock

Member: Phil83
Phil83 Jul 06, 2007 at 11:06:18 (UTC)
Goto Top
Hi,

ich habe mir ein VBScript geschrieben das mir einmal in der Woche von all meinen Windows Servern die Eventlogs ausliest, nach Critical sortiert und mir das ganze als HTML Email schickt. Wenn du Interesse hast schick ich dir das Script und beantworte gerne deine Fragen dazu.

MfG
Phil
Member: GQHDirigent
GQHDirigent Jul 06, 2007 at 11:17:10 (UTC)
Goto Top
Hallo
oh, vielen Dank.
Leider habe ich keine Ahnung von Programmierung aber es wäre sehr nett, wenn du es mir zuschicken könntest und mir vielleicht auch dazuschreiben könntest wie man es "installiert" oder anwendet
Schicke es doch bitte an thomas (at) eissner.net

Danke schonmal
Member: Phil83
Phil83 Jul 06, 2007 at 11:52:20 (UTC)
Goto Top
Hi,

hier das Script, einfach kopieren und als read.vbs speichern. In den ersten paar Zeilen bitte die Einstellungen abändern. Aufruf über cmd oder Batch Datei mittels: "read.vbs Servername"

'--------------------------------------------------Settings-------------------------------------------------  
'Gibt die Maximale Anzahl der zurückgelieferten Einträge an  
'Werte für System Log  
maxwert = 50
'Werte für Application Log  
maxwert2 = 25
'gibt an wieviele Tage zurück gegangen werden soll  
zeitsp = 7
'Email Settings  
absender = "absender@domain.de"  
mailserver = "mailserver.domain.de"  
empfanger = "empfanger@domain.de"  
'--------------------------------------------Settings End---------------------------------------------------  

Set oArg = wscript.arguments
strServer = oArg(0)
mail = ""  
mail2 = ""  
ifertig = "False"  
i2fertig = "False"  
if isOnline(strServer) Then
Set objWMI = GetObject("winmgmts://" & strServer & "/root\cimv2")  
Set objInstances = objWMI.ExecQuery ("Select * from Win32_NTLogEvent WHERE Logfile = 'System' and EventType = 1")  
Set objInstances2 = objWMI.ExecQuery ("Select * from Win32_NTLogEvent WHERE Logfile = 'Application' and EventType = 1")  
dim f
Else 
wscript.quit
End if

    mail = "<h1>System Events:</h1><br><TABLE Border=1>" & chr(13)  
    mail = mail & "<Tr>" & chr(13)  
    mail = mail &   "<TD>ComputerName</TD>"& chr(13)  
    mail = mail &  "<TD>EventCode</TD>"& chr(13)  
    mail = mail &   "<TD>Message</TD>"& chr(13)  
    mail = mail &   "<TD>SourceName </TD>"& chr(13)  
    mail = mail &  "<TD>TimeGenerated </TD>"& chr(13)  
    mail = mail &   "</TR>"& chr(13)  
        
    mail2 = "<br><h1>Application Events:</h1><br><TABLE border=1>" & chr(13)  
    mail2 = mail2 & "<Tr>" & chr(13)  
    mail2 = mail2 &   "<TD>ComputerName</TD>"& chr(13)  
    mail2 = mail2 &  "<TD>EventCode</TD>"& chr(13)  
    mail2 = mail2 &   "<TD>Message</TD>"& chr(13)  
    mail2 = mail2 &   "<TD>SourceName</TD>"& chr(13)  
    mail2 = mail2 &  "<TD>TimeGenerated </TD>"& chr(13)  
    mail2 = mail2 &   "</TR>"& chr(13)  

dat = now() - zeitsp
i = 0
i2 = 0

For Each objInstance in objInstances
        dat1 = objInstance.TimeGenerated
        dat1 = dConvertWMItoVBSDate(dat1)
                if i < maxwert and dat1 > dat Then
                        With objInstance            
                        mail = mail &   "<Tr>"& chr(13)  
                        mail = mail &   "<TD>" & .ComputerName & "</TD>"& chr(13)  
                        mail = mail &   "<TD>" & .EventCode & "</TD>"& chr(13)  
                        mail = mail &  "<TD>" & .Message & "</TD>"& chr(13)  
                        mail = mail &   "<TD>" & .SourceName & "</TD>"& chr(13)  
                        mail = mail &   "<TD>" & dConvertWMItoVBSDate(.TimeGenerated) & "</TD>"& chr(13)  
                        mail = mail &   "</TR>"& chr(13)  
                        i = i +1
                        End With
                        On Error Goto 0
                Elseif i > maxwert Then
                        ifertig="True"  
                        exit for
                Elseif dat1 < dat Then
                        ifertig="True"  
                        exit for
                end if
Next

For Each objInstance in objInstances2
  dat1 = objInstance.TimeGenerated
        dat1 = dConvertWMItoVBSDate(dat1)
if i2< maxwert2 and dat1 > dat Then
                    With objInstance           
                        mail2 = mail2 &   "<Tr>"& chr(13)  
                        mail2 = mail2 &   "<TD>" & .ComputerName & "</TD>"& chr(13)  
                        mail2 = mail2 &   "<TD>" & .EventCode & "</TD>"& chr(13)  
                        mail2 = mail2 &   "<TD>" & .Message & "</TD>"& chr(13)  
                        mail2 = mail2 &   "<TD>" & .SourceName & "</TD>"& chr(13)  
                        mail2 = mail2 &   "<TD>" & dConvertWMItoVBSDate(.TimeGenerated) & "</TD>"& chr(13)  
                        mail2 = mail2 & "</TR>" & chr(13)  
                        i2 = i2 +1
                    End With
                        On Error Goto 0
                    elseif i2 > maxwert2 Then
                        i2fertig = "True"  
                        exit for
                    elseif dat1 < dat Then
                        ifertig="True"    
                    exit for                        
                End if
Next

        mail = mail &   "</Table>"& chr(13)  
        mail2 = mail2 &   "</Table>"& chr(13)  
        Set objEmail = CreateObject("CDO.Message")  
        objEmail.From = absender
        objEmail.To = empfanger
        objEmail.Subject = "Logwatch " & strserver & " - System Items: " & i & " Application Items: " & i2  
        objEmail.HTMLbody = "<HTML><Body>" & mail & "<br>" & mail2 & "</body></html>"  
        objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2  
        objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = mailserver  
        objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  
        objEmail.Configuration.Fields.Update
        objEmail.Send
wscript.quit


function IsOnline(host)
set WshShell = CreateObject("Wscript.Shell")  
set temp = wshshell.Exec ("ping.exe -n 1 -w 100 "&host)  
dummy = temp.StdOut.ReadAll
IF instr(1,dummy,"Antwort") >0 THEN  
isonline = true
ELSE
isonline = false
END IF
end Function

Private Function dConvertWMItoVBSDate(sDate)
  Dim sMonth, sDay, sYear, sHour, sMinutes, sSeconds
  sMonth = Mid(sDate,5,2)
  sDay = Mid(sDate,7,2)
  sYear = Mid(sDate,1,4)
  sHour = Mid(sDate,9,2)
  sMinutes = Mid(sDate,11,2)
  sSeconds = Mid(sDate,13,2)
  dConvertWMItoVBSDate = DateSerial (sYear, sMonth, sDay) + TimeSerial (sHour, sMinutes, sSeconds)
End Function

MfG
Phil
Member: GQHDirigent
GQHDirigent Jul 20, 2007 at 05:57:23 (UTC)
Goto Top
Erstmal Vielen Dank

leider kenne ich mich mit Scripting noch nicht so aus.
Kannst du mir in ein paar kurzen Worten erklären, was dein Script genau macht und vielleicht noch was ich anpassen muß um meine einfachen Eventlogs auszulesen ?

Das wäre nett

Vielen Dank nochmals
eismanhobbit
Member: Phil83
Phil83 Jul 20, 2007 at 06:10:57 (UTC)
Goto Top
Hi,

also zuerst kommen die Settings die du für deine Umgebung anpassen mußt. Am restlichen Script mußt du nichts mehr ändern.

Das script rufst du über script.vbs PCName auf. Das Script verbindet sich dann mit dem PC und liest das System und das Application Log aus. Das Script stopt bei 2 Dingen, erstens wenn der Maxwert erreicht ist die du in den Settings einstellst oder wenn der Eintrag älter als 7 Tage ist (auch das stellst du unter Settings ein).

Das script läuft ganz grob so ab:
- Prüft ob Rechner online ist
- Verbindet sich mit dem Eventlog des Rechners
- Es werden alle Items des System Logs ausgelesen und nach oben erklärtem Filter behandelt
- Es werden alle Items des Application Logs ausgelesen und nach oben erklärtem Filter behandelt
- Für jedes Item das auf die Filter passt wird eine Zeile einer HTML Tabelle geschrieben
- Alle geschriebenen Zeilen werden in eine HTML Datei eingefügt
- Die HTML Datei wird per Mail mit den Mail Einstellungen aus der Settings Sektion verschickt

MfG
Phil
Member: GQHDirigent
GQHDirigent Jul 24, 2007 at 06:51:52 (UTC)
Goto Top
Huch, leider ist das Script weg

Hast du es wieder raus genommen ?
Ich hatte es noch nicht rauskopiert.

Kannst du es nochmals einstellen - Das wäre nett

Gruß und Danke
eismanhobbit