Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Windows Dieses Forum dient den Diskussionen rund um alle Microsoft-Betriebssysteme.

Service Überwachungs Tool

Diskussion: Service Überwachungs Tool im Forum Windows, in der Kategorie Operating Systems; Anzeige Hallo, ich wollte fragen ob jemand ein Monitoring Tool kennt, welches überwacht ob eingetragene Prozesse noch laufen. Schön wär ...

Antwort
Alt 31.07.07, 10:14   #1 (permalink)
ftx
 
Registriert seit: 11.07.07
ftx Leistung: Facit NTK
Likes: 0
Standard Service Überwachungs Tool

Anzeige

Hallo,
ich wollte fragen ob jemand ein Monitoring Tool kennt, welches überwacht ob eingetragene Prozesse noch laufen. Schön wär es auch, wenn dieses Programm eine Benachrichtigung per Email schickt, falls ein Service ausfällt.
Außerdem sollte es freeware sein.

Schön wär es außerdem, wenn es nich nur auf einem 2003 Server laufen würde, sondern auch auf XP, dies ist aber nicht zwigend notwendig.

ftx ist offline   Mit Zitat antworten
Alt 01.08.07, 01:49   #2 (permalink)
 
Registriert seit: 29.07.07
styx-cc Leistung: Facit NTK
Likes: 0
Standard re

Hi, wenn das die einzige Aufgabenstellung ist, dann wuerde ich dir sowas schnell in Perl scripten, is auch freeware ;-)

MfG
styx-cc ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 01.08.07, 09:51   #3 (permalink)
 
Registriert seit: 03.05.05
zimoe Leistung: Facit NTK
zimoe eine Nachricht über ICQ schicken
Likes: 0
Standard

Ich weis ja nicht für was für eine Umgebung du es benötigst. Wenn es allerdings in einer etwas größeren ist und evtl. in einem Betrieb eingesetzt wird empfehle ich Nagios, läuft aber auf Linux!

Wenn Du aber was kleines für den Hausgebrauch suchst dann vielleicht dies hier ?!?
http://www.kosiol.com/english/softwa...ecksystem.html

GreetZimoe
zimoe ist offline   Mit Zitat antworten
Alt 01.08.07, 18:04   #4 (permalink)
ftx
Themenstarter
 
Registriert seit: 11.07.07
ftx Leistung: Facit NTK
Likes: 0
Standard

hiho,
danke erstmal für die Antworten!
Das Tool wird dann in kleineren Firmen laufen, aber eben auf einem Windows Server ... für Linux wüsste ich wie ich das einfach bewerkstelligen könnte


Also ich hab mir das angeschaut was zimoe gepostet hat, das ist auch so in der Art wie ich es suche, aber eben nicht freeware
Zurzeit lerne ich auch Python, damit ich das dann selber schreiben kann... mal schaun was draus wird. Wenn ich fertig bin werde ichs irgendwo zum download stellen.
Aber falls trotzdem noch wer diesen Thread liest, der ein solches Tool kennt bin ich immernoch offen für Vorschläge

p.s.:styx-cc, also wenn du soviel Zeit hast und das machen würdest wär das nett
ftx ist offline   Mit Zitat antworten
Alt 01.08.07, 21:10   #5 (permalink)
 
Registriert seit: 29.07.07
styx-cc Leistung: Facit NTK
Likes: 0
Standard re

Jap,momentan hab ich Zeit und Lust
Setz ich mich geich mal ran.
-Dienste auflisten
-Gucken ob angegebene Dienste laufen
-falls nein, email senden
-falls ja alle x Minuten nochmals von Vorne
styx-cc ist offline   Mit Zitat antworten
Alt 01.08.07, 21:45   #6 (permalink)
ftx
Themenstarter
 
Registriert seit: 11.07.07
ftx Leistung: Facit NTK
Likes: 0
Standard

Jop genau so stelle ich mir das vor
Werde morgen auch noch weiter an meiner python-basierten Lösung basteln... mal schaun was da noch so rauskommt.
Danke schonmal im vorraus für die mühen
ftx ist offline   Mit Zitat antworten
Alt 02.08.07, 00:05   #7 (permalink)
 
Registriert seit: 29.07.07
styx-cc Leistung: Facit NTK
Likes: 0
Standard re

Holla, ich hab schon mal angefangen, alles funktioniert so weit bis auf das Versenden einer Mail, aber das mach ich morgen. Hier kannst du erstmal ein wenig spielen:

procinfo.plx
Code:
#!/usr/bin/perl -w
use strict;
use Win32::Process::List;
$|++;

my %config = load_config();
my @required_services = split /;/, $config{'procs'};

#main loop
while (1) {
  #get process-list
  my $proc_list = Win32::Process::List->new();
  my %list = $proc_list->GetProcesses();

  #check for missing processes
  my @missing;
  for my $service (@required_services) {
	unless (grep $service eq $list{$_}, keys %list) {
	  push @missing, $service;
	}
  }
print "\rThere're ".$proc_list->GetNProcesses()." running and ".scalar(@missing)." missed processes." if $config{'print_state'};

#send_email(\@missing) if (@missing);
select(undef,undef,undef,$config{'delay'});
}

sub send_email {
  my $missing = shift;
  my $message = "\nThere're some missing processes:\n";
  $message .= join "\n", @$missing;
  print "$message\n\n";
}

sub load_config {
  my %config;
  #arguments wich will accept
  my @args = qw/procs print_state delay host usr pass/;
  #readout configfile
  open(CONF, "<procinfo_conf.conf") or die("Can't open file: $!");
  for (<CONF>) {
    next if ( (/^#/) or (/^\W/) ); #ignore comment-lines
    chomp;
    my @parts = split(/=/, $_);
    my ($var, $value) = @parts;
    for my $option (@args) {	   
      if ($var eq "$option") {
         $config{$var} = $value if $value;
        last;
      }	   
    }
  }
  close CONF;
  return %config;
} #sub load_config()
procinfo_conf.config
Code:
#configuration file for procinfo.plx

#processes which have to watch
procs=calc.exe;mspaint.exe

#print out results (boolean)
print_state=1

#wait time in seconds
delay=5

#emal settings
host=www.example.org
usr=username
pass=password
Wenn du fragen hast, immer frage
MfG

------------------------------------------------------------------

Sooo..... habs fertig :-)

procinfo.plx
Code:
#!/usr/bin/perl -w
use strict;
use Win32::Process::List;
use Net::SMTP;
use NET::SMTP_auth;
$|++;

my %config = load_config();
my @required_services = split /;/, $config{'procs'};

#main loop
while (1) {
  #get process-list
  my $proc_list = Win32::Process::List->new();
  my %list = $proc_list->GetProcesses();

  #check for missing processes
  my @missing;
  for my $service (@required_services) {
	unless (grep $service eq $list{$_}, keys %list) {
	  push @missing, $service;
	}
  }
  print_1 ("\rThere're ".$proc_list->GetNProcesses()." running and ".scalar(@missing)." missed processes.");

  send_email(\@missing) if (@missing);
  select(undef,undef,undef,$config{'delay'});
}

sub send_email {
  my $missing = shift;
  print_1 ("\nSending warn mail(!) and waiting 20 minutes.\n");
  my $smtp = Net::SMTP_auth->new($config{'host'});
  $smtp->auth('LOGIN', $config{'usr'}, $config{'pass'}) || die $!;

  my($to, $subject) = ($config{'to'}, 'Process-Warning');
  my $msg = "There're some missing processes:\n" . join("\n", @{$missing} );
  
  $smtp->mail();
  $smtp->to($config{'to'});
  $smtp->data();
  $smtp->datasend("From: $config{'from'}\n");
  $smtp->datasend("To: $config{'to'}\n");
  $smtp->datasend("Subject: $subject\n\n"); # end header
  $smtp->datasend("$msg\n");
  $smtp->dataend();
  $smtp->quit;
  print_1 ("Missing: ". join(',', @{$missing} ) ."\n\n");
  sleep(20*60);
}

sub load_config {
  my %config;
  #arguments wich will accept
  my @args = qw/procs print_state delay host usr pass from to/;
  #readout configfile
  open(CONF, "<procinfo_conf.conf") or die("Can't open file: $!");
  for (<CONF>) {
    next if ( (/^#/) or (/^\W/) ); #ignore comment-lines
    chomp;
    my @parts = split(/=/, $_);
    my ($var, $value) = @parts;
    for my $option (@args) {	   
      if ($var eq "$option") {
         $config{$var} = $value if $value;
        last;
      }	   
    }
  }
  close CONF;
  return %config;
} #sub load_config()

sub print_1 {print "$_[0]" if $config{'print_state'};}
procinfo_conf.conf
Code:
#configuration file for procinfo.plx

#processes which have to watch
procs=calc.exe;mspaint.exe

#print out results (boolean)
print_state=1

#wait time in seconds
delay=3


#email settings

#smpt-server
host=deinServerName.de
#usr to login
usr=username
#pw
pass=passwort
#addressor
from=von@email.adresse
#acceptor
to=an@email.adresse
styx-cc ist offline   Mit Zitat antworten
Alt 03.08.07, 12:47   #8 (permalink)
ftx
Themenstarter
 
Registriert seit: 11.07.07
ftx Leistung: Facit NTK
Likes: 0
Standard

Hiho, danke für deine Mühen, mittlerweile habe ich es aber auch schon in Python gescriptet ^^

Funktionen.py
Code:
# -*- coding: iso-8859-1 -*-

""" 
Written by ftx with a Codesnippet from gerold 
""" 
#Module werden importiert
import sys 
import os 
import re

#Variable für den Pfad, wo die config Datei sitzt
config_pfad="./config.cfg"
def prozess_config():
    cfg = {} # Dictionary initialisierung
    config=open(config_pfad) #Öffnen der Configdatei

    exerex = re.compile('.*\.*') # Regex initialisierung
    
    for line in config:
        line=line.strip() # Leerzeichen am Anfang und Ende entfernen
        if not line:
            continue # Überspringe leere Zeilen
        if line.startswith("#"):
            continue # Überspringe Kommentarzeilen
        if(line == "[Prozesse]"): #Wenn er in er for Schleife auf den String trifft
            for new_line in config: #geht die nächste vorschleife durch
                new_line=new_line.strip() #Leerzeichen entfernen
                if new_line.startswith("#"): #Kommentarzeilen überspringen
                    continue
                
                match=exerex.match(new_line) # Regulärer Ausdruck 
                if new_line.startswith("["): #Wenn neue Kategorie dann raus aus der Schleife
                    break
                if(type(match) is not type(None)): # Wenn der gematchte Type NICHT vom Typ "None" ist,
                    match.group()                  # wird er in die Match-Group aufgenommen
                    variable=match.group()
                    cfg[variable] = 0    # Alle Variablen bekommen den Wert 0
        
    return cfg   # Return des Dictionarys

def email_config():
    email = {} # Dictionary initialisierung
    config=open(config_pfad) #Öffnen der Configdatei
    
    for line in config:
        line=line.strip() # Leerzeichen am Anfang und Ende entfernen
        if not line:
            continue # Überspringe leere Zeilen
        if line.startswith("#"):
            continue # Überspringe Kommentarzeilen
        if(line == "[Email]"): # Wenn er auf den String trifft, wird eine neue
            for new_line in config: # for Schleife initialisiert
                new_line=new_line.strip() # Leerzeichen am Anfang und Ende entfernen
                if new_line.startswith("#"):
                    continue # Überspringe Kommentarzeilen
                match=re.match('(.*?)\s*=\s*(.*?)$', new_line) # Regulärer Ausdruck
                if new_line.startswith("["): # Schleifen-Break wenn neue Kategorie beginnt
                    break
                if(type(match) is not type(None)): # Wenn der gematchte Type NICHT vom Typ "None" ist,
                    variable=match.group(1)        # wird er in die Group aufgenommen
                    wert=match.group(2)
                    email[variable]=wert # Dictionary mit der vorderen Group als Key und der Hinteren als Value
    return email # Rückgabe des Dictionarys

def optional_config():
    optional = {} # Dictionary initialisierung
    config=open(config_pfad) #Öffnen der Configdatei
    
    for line in config:
        line=line.strip() # Leerzeichen am Anfang und Ende entfernen
        if not line:
            continue # Überspringe leere Zeilen
        if line.startswith("#"):
            continue # Überspringe Kommentarzeilen
        if(line == "[Optional]"): # Wenn er auf den String trifft, wird eine neue
            for new_line in config: # for Schleife initialisiert
                new_line=new_line.strip() # Leerzeichen am Anfang und Ende entfernen
                if new_line.startswith("#"):
                    continue # Überspringe Kommentarzeilen
                match=re.match('(.*?)\s*=\s*(.*?)$', new_line) # Regulärer Ausdruck
                if new_line.startswith("["): # Schleifen-Break wenn neue Kategorie beginnt
                    break
                if(type(match) is not type(None)): # Wenn der gematchte Type NICHT vom Typ "None" ist,
                    variable=match.group(1)        # wird er in die Group aufgenommen
                    wert=match.group(2)
                    optional[variable]=wert # Dictionary mit der vorderen Group als Key und der Hinteren als Value
    return optional # Rückgabe des Dictionarys




def get_current_processes(): 

    
    retdict = {} 
    
    if sys.platform.startswith("win"): 
        # tasklist.exe runs on Windows XP and higher. (To parse the ouput of 
        # tasklist.exe is faster than WMI.) 
        import csv 
        csvlines = [] 
        for line in os.popen("tasklist.exe /fo csv /nh"): # Für jede Zeile die der Befehl ausgibt
            line = line.strip()  # Leerzeichen entfernen
            if line: 
                csvlines.append(line) # Die Zeilen werden in einem Dictionary gespeichert
        for line in csv.reader(csvlines): 
            pid = int(line[1]) 
            details = { 
                "name": line[0].decode("cp850"), # to unicode 
                "pid": pid, 
            } 
            value = "".join( 
                char for char in line[4] 
                if char in "0123456789" 
            ) 
            details["size_kb"] = int(value) 
            retdict[pid] = details 

    return retdict or None

prozesse.py

Code:
# -*- coding: iso-8859-1 -*- 

""" 
Written by ftx with a Codesnippet from gerold 
""" 

#Benötigte Module werden importiert

import sys 
import os 
import re
import smtplib
import funktionen

#Funktionsrückgabewerte werden in Variablen gespeichert

email = funktionen.email_config()
optional = funktionen.optional_config()
eintraege = funktionen.get_current_processes().items()
config = funktionen.prozess_config()

#Initialisierung eines Dictionarys für die Überprüfung, ob die Prozesse laufen,
#welche in der Config stehen.

dic={}

#Einfügen der Prozesse, die in der Config stehen, in ein Dictionary welches allen
#automatisch den Value 0 gibt

for k, v in config.iteritems():
    if not (dic.has_key(k)):
        dic[k] = 0  # neuen Eintrag hinzufügen


#For-Schleifen zum Testen, ob es Übereinstimmungen gibt zwischen den laufenden Prozessen
#und den in der CFG-Datei eingetragenen. Wenn übereinstimmung, wird der Value auf 1 gesetzt

for eintrag in eintraege:
    for key in dic.keys():
        for value in dic.values():
            if(str(eintrag[1]["name"]) == str(key)):
                dic[key] = 1

#Das Email Dictionary wird durchgegangen, wenn bestimmte Strings matchen, wird es
#in Variablen geschrieben

for k, v in email.iteritems():
    if(k == "Empfaenger"):
        empfaenger = v
    if(k == "SMTPServer"):
        smtpserver = v
    if(k == "Absender"):
        absender = v

#Das Optional Dictionary wird durchgegagen, wenn bestimmte Strings matchen, wird es
#in Variablen geschrieben
for k, v in optional.iteritems():
    if(k == "Loginname"):
        loginname = v
    if(k == "Passwort"):
        passwort = v

#Mail Server Verbindung wird aufgebaut, sollte loginname&passwort in der CFG-Datei
#eingetragen worden sein, so läuft die Schleife normal durch, wenn nicht wird so
#versucht zum SMTP-Server zu connecten
server = smtplib.SMTP(smtpserver)
try:
    server.login(loginname,passwort)
except:
    smtplib.SMTPAuthenticationError
else:
    ausfall = "Folgende/r Dienst/e sind/ist ausgefallen:"
    allesklar = "Alle Dienste laufen, super!"
    zwisch = 0 # Variablen initialisierung
    err = False # Variablen initialisierung
    format = 0 # Variablen initialisierung
    for k, v in dic.iteritems(): # Wenn es Prozesse gibt, die ausgefallen sind, wird err = True gesetzt
        if(v == 0):
            if(format == 0):
                ausfall = ausfall + " " + k
                err = True
                format = 1
            else:
                ausfall = ausfall + " " + k + ","
    ausfall = ausfall.strip(",")
#Wenn err True ist, wird ein ausfall beklagt, wenn alle Dienste laufen, wird die Var "allesklar" versendet        
    if (err == True):
        server.sendmail(absender,empfaenger,ausfall)
    else:
        server.sendmail(absender,empfaenger,allesklar)
    server.quit() # Server Connection Close
Die dazugehörige config Datei mit dem Namen "config.cfg"

Code:
#Alle Zeilen die mit einer "#" beginnen, sind Kommentarzeilen
#Unter Prozesse werden alle Prozesse eingetragen, die überwacht werden sollen
#Es sollten dabei die Korrekte schreibweise beachtet werden, d.h. der Prozess
#sollte so eingetragen werden, wie er im Taskmanager auftaucht (auch groß/kleinschreibung beachten

[Prozesse]
#Hier Prozessnamen eintragen
explorer.exe   
eclipse.exe

[Email]
#Hier Email Daten einfügen und auf Korrektheit prüfen, wenn diese fehlerhaft sind, wird KEINE Email versendet!
SMTPServer=smtp.****.de  
Empfaenger******@googlemail.com  
Absender=*******@web.de  

[Optional]
#Falls Login beim smtp-Server notwendig ist, hier die Daten rein
Loginname=*******
Passwort=******

Das läuft super, bis jetzt auch keine Bugs gefunden... tolles Programm Bin froh das ich das so hinbekommen habe, habe erst vor 3 Tagen angefangen mit Python
ftx ist offline   Mit Zitat antworten
Alt 14.07.08, 17:13   #9 (permalink)
 
Registriert seit: 21.06.08
Igdirli 76 Leistung: Facit NTK
Likes: 0
Standard

Hallo Leute ,
Ich wollte fragen ob ihr mir helfen könnt
Ich wollte das gleiche nur bei mir gehts es um Plesk
wenn ein Service ausfällt z.B. falls Fehler auftauchen oder veränderungen geben will ich benarichtigt werden.
Wenn es möglich ist soll es auch in den Diensten von Windows möglich sein also die überwachung z.B. in
ISS 6
Dateiserver usw.
oder im Plesk wenn sich jemand mehr als 2 mal falsch einloggt oder so soll ich benahrichtigt werden auch das gleiche bei dem VPN verbindung könnt ihr mir Helfen Leute??


mfg
Igdirli 76 ist offline   Mit Zitat antworten
Alt 14.07.08, 19:18   #10 (permalink)
 
Registriert seit: 29.07.07
styx-cc Leistung: Facit NTK
Likes: 0
Standard re

Klar kann man dir da helfen, zeig doch mal her was du bis jetzt gemacht hast
styx-cc ist offline   Mit Zitat antworten
Alt 14.07.08, 19:20   #11 (permalink)
 
Registriert seit: 21.06.08
Igdirli 76 Leistung: Facit NTK
Likes: 0
Standard

Leider noch nix weil ich mich nicht mit Python nicht auskenne
habe auch nicht viel zeit weil morgen kriegen wird die zeugnisse und danach ab in den Ferien deshalb brauch ich es dringend daher würde ich dich bitten mir zu helfen.


Mfg
Igdirli 76 ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Operating Systems » Windows » Service Überwachungs Tool
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Suche Überwachungs-/Protokollprogramm Sunstepper Windows 7 09.03.08 21:15
kostenloser VPN Service Mechanius Linux/UNIX 0 03.01.08 18:26
XP Service Pack 2 SteVe_O Windows 16 20.09.04 16:29
Service Pack 2 Stanly Umfragen 29 02.09.04 15:47
Service Pack 2 Wizo Windows 6 16.08.04 15:45


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61