Entwickler-Ecke
Windows API - Auswertung von Logfile [Ansatz]
LuMa86 - Fr 07.06.13 14:51
Titel: Auswertung von Logfile [Ansatz]
Moin,
ich suche einen Ansatz um ein kleines Programm zu schreiben. Die Situation sieht so aus:
Ein Bekannter betreut Server bei Kunden. Wenn er z.B. prüfen will, ob der Server läuft muss er sich dort einloggen und dann das LogFile anschauen und z.B. schauen ob der Code 10001 vorkommt, was bedeuten würde, der MySQLServer konnte nicht gestartet werden (ist jetzt nur ein Beispiel an den Haaren herbeigezogen). Jetzt wäre es natürlich praktisch ein Tool zu schreiben was eben in zeitlichen Abständen prüft, ob in dem Log einer dieser Codes vorkommt. Wenn ja, soll eine E-Mail mit dem Code, dem Programm was das gemeldet hat usw. an meinen Kumpel geschickt werden. Natürlich gibt es schon so Auswerutngsprogramme, die aber nicht gerade günstig sind und zudem völlig überdimensioniert sind. Daher würde es sich anbieten, das selbst zu programmieren.
Meine Frage ist jetzt, wie ich das am besten Angehe. Ich habe mir überlegt einen Dienst zu entwickeln. Leider habe ich mich noch nie mit Diensten befasst, allerdings habe ich schon ein gescheites Beispiel in der DelphiPraxis gefunden. Meine Überlegung sah bisher so aus:
- Dienst läd Timergesteuert oder eben zu einer angegebenen Zeit den LogFile und sucht nach einem Code --> Nach dem Durchsuchen werden alle Codes inklusive der kompletten Logzeile als Mail versendet
- Eine "Steuerung" steuert den Dienst und übernimmt eben Einstellungen, z.B. die SMTP-Einstellungen, die Codes nach denen gesucht werden soll, usw. Es soll zudem den Dienst installieren/starten etc. können
An sich hört sich das ja ganz simpel an, aber wie sieht das im Detail aus? Wie lade ich das Log. Mit VCL kann man das ja einfach in ein Memo laden. Verwende ich beim Dienst dann einfahc Streams?
Und was muss man bei Diesten noch so beachten, bzw. lässt sich die Mail über SMPT einfach über den Dienst senden?
Ich hoffe der Trip mit dem Dienst wird keine Höllentour :)
Danke
platzwart - Fr 07.06.13 15:16
Welches Betriebssystem genau läuft denn auf dem Server?
jaenicke - Sa 08.06.13 04:40
LuMa86 hat folgendes geschrieben : |
Wie lade ich das Log. Mit VCL kann man das ja einfach in ein Memo laden. Verwende ich beim Dienst dann einfahc Streams? |
Zum Beispiel, ja. MMFs wären dabei auch eine Idee, der Geschwindigkeit wegen, denn die Logs sind ja vermutlich nicht ganz klein.
LuMa86 hat folgendes geschrieben : |
Und was muss man bei Diesten noch so beachten, bzw. lässt sich die Mail über SMPT einfach über den Dienst senden? |
Das kann man einstellen, muss der Admin also ggf. freischalten (Internet an sich für den Dienst meistens, evtl. noch die Firewall).
blaskito - Sa 08.06.13 16:18
Moin,
wenn du das Windows-Eventlog meinst, dann nützt es dir nix, wenn du es dir auf einen anderen Rechner kopierst. Das Eventlog ist kodiert (guggst du hier
http://msdn.microsoft.com/en-us/library/aa363646.aspx ) und liest seine Infos Just-In-Time aus den installierten Anwendungen aus. Der Aufwand für einen Dienst ist dagegen relativ gering.
Gruß aus dem Norden
LuMa86 - So 09.06.13 19:20
Okay, danke erstmal für die Antworten. Ich muss das mit Ihm nochmal abklären, wie das alles genaus ist. Auf den Servern läuft Windows Server 2008. Ob auch schon 2012 in Verwendung ist muss ich nochmal in Erfahrung bringen. Und ja, es ist das Windows Eventlog. Das wichtigste wäre einfach erstmal das Log auszulesen, daran kann ich ja schonmal arbeiten. Und das mit der Firewall sollte auch kein Problem sein. Allerdings wie sieht es mit Adminrechten aus? Eine normale VCL-Anwendung kann man ja einfach mit einem Manifest versehen, aber wie sieht das bei einem Dienst aus? Der muss mit Adminrechten installiert werden und hat dann auch Admin-/uneingeschränkte Rechte?
MfG
jaenicke - So 09.06.13 20:59
LuMa86 hat folgendes geschrieben : |
Und ja, es ist das Windows Eventlog. Das wichtigste wäre einfach erstmal das Log auszulesen, daran kann ich ja schonmal arbeiten. |
Und was hat das mit dem Auslesen einer Datei zu tun?
Da gibt es API Funktionen:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363674(v=vs.85).aspx
LuMa86 hat folgendes geschrieben : |
aber wie sieht das bei einem Dienst aus? Der muss mit Adminrechten installiert werden und hat dann auch Admin-/uneingeschränkte Rechte? |
Der läuft, sofern nicht anders konfiguriert, im Systemkontext mit Adminrechten. Das heißt aber nicht, dass er Internet- oder Netzwerkzugriff hat. Das ist aus Sicherheitsgründen für Dienste oft deaktiviert.
LuMa86 - Mo 10.06.13 07:46
Danke, schau ich mir an :) Das wäre sogar noch besser :)
cupidsrose - Fr 02.08.13 11:48
Some don't understand
Christian213 - Sa 03.08.13 20:53
Ich würde für solche Aufgaben ein fertiges Tool wie Nagios (
http://www.nagios.org/) empfehlen. Die Checks lassen sich dort bequem mittels einer eigenen Skript-Sprache (Nagis Query Language) erstellen. Man kann theoretisch auf alles mögliche Prüfen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!