Netzwerkmonitor

Der Netzwerkmonitor 'netmon.pl' ist ein kleiner schlanker Perl-Hack auf CGI-Basis und unterliegt der BSD-Licence.

Er ueberwacht Server/Ports und generiert daraus einen HTML-View. Falls ein Server/Port aussteigt wird an eine definierbare E-Mail-Adresse eine Error-Mail versand (nur einmal).

Mit Version 1.0 generiert netmon.pl diese Alert-Mail per default erst wenn ein Test zweimal hintereinander fehlgeschlagen ist. Damit wird verhindert, dass kurzzeitige Leitungs- oder Serverprobleme sofort zu einem Alert fuehren. Durch einfaches Auskommentieren zweier Zeilen im 'sub alert{}' kann aber auch das sofortige Alerting wieder aktiviert werden.

Ein Ziel bei der Entwicklung war und ist alles minimal zu halten. Deshalb kommt das Programm auch nur in Form eines einzigen Files daher.

Dieses File enthaelt sowohl den Code als auch die Konfigurationsschalter.

Es werden nur Perl-Module verwendet die in der Default-Perl-Distribution enthalten sind.

Die Datenbank, welche die Informationen haelt welche Hosts 'up' oder 'down' sind liegt non-persistent in /tmp.


CHANGELOG
---------
Current: 1.1 if serverport down, don't use rup (13/05/2004)

Version: 1.0 add escalation notify (15/04/2004)
Version: 0.9 add allowed lan-access (27/11/2003)
Version: 0.8 add notify only one time (02/10/2002)
Version: 0.7 add load average warning (24/05/2002)
Version: 0.6 add comment-hash (16/05/2002)
Version: 0.5 add socket-timeout (25/03/2002)
Version: 0.4 add email-notification
Version: 0.3 add rup-hosts
Version: 0.2 add exceptions
Version: 0.1 (born)

Downloads
---------
Screenshot1 - Webview
Screenshot2 - Mail-Notify

Download    - Source

TODO
----

* InfoMail wenn Statuswechsel (ServerPort wieder up)
* Konfigurationsmoeglichkeit nach 'wieviel' fehlgeschlagenen
  Versuchen erst die Alert-Mail versand werden soll ...

1. Installation 
---------------

% cp netmon.pl /var/www/cgi-bin 
% chmod 755 netmon.pl
% httpd -u

Um dieses Programm zu verwenden sollte man mindestens die Zeile 'allowed 
net' editieren um den Access zu regeln (im Beispiel wird ein ganzes 
Class-C-Netz berechtigt das Script zu starten), dann einfach im Browser:

	http://mein.server.name.de/cgi-bin/netmon.pl

Alternativ koennte man das Programm z.B. auch als Cron-Job starten:

*/3     *       *       *       *       perl /foo/netmon.pl > /bar/out.html

Hinweis: In diesem Fall muss die Zeile fuer die 'Access Restriction' so
aussehen:

		if (! ($remo =~ //) ){

2. Die Schalter: 'rup-hosts' und 'loadwarning'
----------------------------------------------

Um die Uptime und das Load der entfernten Rechner mit anzuzeigen muss
man folgendes einstellen:

* /etc/rc.conf:
   portmap=YES

* /etc/inetd.conf:
   rstatd/1-3      dgram   rpc/udp wait    root    /usr/libexec/rpc.rstatd rpc.rstatd

Hinweis: Das '$load = 0' bedeutet, dass eine Warnung ausgegeben wird,
fall der Remote-Host innerhalb der letzten 15 Minuten ein Load groesser
0 (also 1 oder hoeher) hatte.

3. Erklaerung: 'exceptions'
---------------------------

Der Netzwerkmonitor will prinzipiell alle Server aus dem Arrary '@a'
checken, und zwar auf alle Ports aus Array '@b'.

Ausnahmen kann man dann bei Bedarf im Hash '%c' definieren.

4. Auslagern der Konfiguration
------------------------------

Optional kann man auch die Konfiguration schnell in ein separates File
auslagern:

A) Als erstes also netmon.pl bearbeiten und den Konfigurationsteil
auschneiden und dafuer 'use config' hinzufuegen wie im Beispiel hier:

[...]

use DB_File;

use config;

tie %db, "DB_File", "/tmp/netmon.db", O_RDWR|O_CREAT, 0644, $DB_HASH;

[...]

B)  Dann die ausgeschnittene Konfiguration in ein neues File mit Namen
'config.pm' einfugen - wie hier im Beipiel (und die abschliessende 1;
nicht vergessen!):

{

@a = (                                           ### hosts
    "localhost",                                          
    "www.openbsd.org",
    "bla.foo.bar",    
);

[...]

$load = 0;                                       ### loadwarning

}
1;