Schrift
[thread]12284[/thread]

Linux: Allgemeine Vorgehensweise zu Monitoring-Skript in Perl

Leser: 2


<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
Duff
 2008-08-01 14:38
#112987 #112987
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hallo,

ich bin dabei, mir ein Monitoring für einen Server mit Hilfe von perl aufzusetzen.

Nun wollte ich euch mal fragen, wie ihr sowas am besten realisieren würdet.


Das Skript sollte erweiterbar sein (neue Überprüfungen kommen hinzu) und ich würde gerne mal das objektorientierte Programmieren in perl anwenden (wenn dies hier sinnvoll ist).

Bisher habe ich verschiedene Subroutinen/Funktionen geschrieben, die bestimmte Ergebnis von Überprüfungen zurückliefen und die ich im Teil "Main/Hauptprogramm" aufrufe.

Zusätzlich wollte ich noch eine Subroutine anlegen, um dann bei positiven Rückgaben der Subroutinen/Funktionen Mails zu versenden.


Wäre für Anregungen, Verbesserungen dankbar.

gruß,
DAniel
D'OH
Daniel
tecker
 2008-08-01 16:00
#112990 #112990
User since
2008-02-26
77 Artikel
BenutzerIn
[Homepage] [default_avatar]
soll das ganze auch einen lerneffekt in perl mit sich bringen? sonst könnte man ja auf bereits vorhandene monitoring-tools setzen die eigentlich alles nötige an features mit sich bringen oder halt für individuelle sachen mit entsprechenden perl-skripten ergänzt werden. stichwort cacti (cacti.net) ... nettes php-frontend zum monitoring. benutze ich viel
Duff
 2008-08-01 16:05
#112993 #112993
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Danke, aber ich will eigentlich nichts mit php machen und auch nicht auf ein Frontend zurück greifen müssen.

Ich will mit dem perl-Skript verschiedene Sachen auf meinem Server überwachen und bei definierten Alarmen eine Mail versenden.

Eventuell schreibe ich auch noch ein Logfile, in dem dann alle Ausgaben nochmal aufgeführt sind.

Oder ich schreibe immer alles in ein Logfile und werte dann in bestimmten Zeitabständen das Logfile aus und Alarmiere bei einem NOK oder so.
D'OH
Daniel
tecker
 2008-08-01 16:55
#112997 #112997
User since
2008-02-26
77 Artikel
BenutzerIn
[Homepage] [default_avatar]
dann spricht wohl nichts dagegen das so zu machen wie du geschrieben hast. kannst ja noch ein snmp modul einbinden und dann traffic, cpu, packet loss etc. von deinem router z.B. überwachen
pq
 2008-08-01 17:40
#112999 #112999
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
also ich kann nagios und munin empfehlen. für beides kann man auch perl-plugins schreiben.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Duff
 2008-08-01 18:06
#113000 #113000
User since
2006-10-06
283 Artikel
BenutzerIn

user image
pq+2008-08-01 15:40:28--
also ich kann nagios und munin empfehlen. für beides kann man auch perl-plugins schreiben.

Über nagios habe ich schon mal was gelesen.

Aber ich würde gerne selber ein Monitoring aufsetzen. DAnn sollte ich auch wissen, was ich überwache bzw. was überwacht wird.
D'OH
Daniel
LanX-
 2008-08-02 01:10
#113010 #113010
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
Duff+2008-08-01 16:06:32--
Aber ich würde gerne selber ein Monitoring aufsetzen. DAnn sollte ich auch wissen, was ich überwache bzw. was überwacht wird.


Falls wir von Windows reden empfehle ich dir
Windows_Management_Instrumentation
falls nicht gibts ähnliche Projekte für Unix-und Linux Server :
http://en.wikipedia.org/wiki/Web-Based_Enterprise_...
Duff
 2008-08-02 11:07
#113014 #113014
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Danke, wir sprechen von linux (debian) hier. Sorry, hatte ich nicht erwähnt.
//ModEdit GwenDragon: deswegen Titel ergänzt

Aber eigentlich will ich kein Web-Frontend oder überhaupt ein Frontend haben. Die Überwachung soll rund um die Uhr laufen und bei Fehlern alarmieren (per Mail bzw. SMS).
D'OH
Daniel
LanX-
 2008-08-02 14:38
#113017 #113017
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
das heißt auch nur historisch "Web-Based", letztendlich definierst du lokal nur eine Art SQL-Query mit Pollingintervallen, Schwellwerten und Call-Back-Funktion. Das sind pro überwachtem Objekt eine Zeile. Unter Win kannst du auch SNMP oder Mail als Reaktion konfigurieren.
bloonix
 2008-08-04 18:09
#113072 #113072
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo Duff,

wenn du dir selbst etwas schreiben möchtest, dann solltest du das
Projekt modular aufbauen. Wenn dann einmal der Main-Bereich fertig
ist, kannst du neue Checks sehr einfach hinzufügen.

Die Struktur könnte wie folgt aussehen:

Code: (dl )
1
2
3
4
5
6
bin/monitor.pl
lib/Linux/Monitor.pm
lib/Linux/Monitor/Memory.pm
lib/Linux/Monitor/CPU.pm
lib/Linux/Monitor/Disk.pm
lib/Linux/Monitor/Net.pm


usw. Monitor.pm ist dabei dein Main-Modul, welches von monitor.pl
geladen wird und in dem alles gesteuert wird.

Für jeden Check, den du machen möchtest, solltest du ein extra
Modul schreiben (CPU, Net, Disk, etc). Jedes Modul benötigt dann
Standardroutinen ala

Code: (dl )
1
2
3
sub new { ... }
sub set_options { ... }
sub check { ... }


Dann legst du eine Config an, in der die Checks aktiviert werden:

etc/monitor.conf

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<check>
name = Linux::Monitor::Memory
active = 1
<set_options>
foo = 1
bar = 2
baz = 3
</set_options>
</check>

<check>
name = Linux::Monitor::Net
active = 1
<set_options>
foo = 1
bar = 2
baz = 3
</set_options>
</check>


Somit weißt du, welche Module mit einem "require" geladen werden müssen
und welche Optionen du den Modulen übergibst.

usw usw usw...

Aber ich würde dir eher raten auf ein OpenSource Projekt zurück zu greifen.
Es gibt da ein paar sehr gute... zum Beispiel:

Nagios
Munin
Ganglia
Cacti
Zabbix

Gruss,
bloonix
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2008-08-01 14:38.