- Mitglied seit
- 5 Dez 2005
- Beiträge
- 1,844
- Punkte für Reaktionen
- 0
- Punkte
- 36
Hallo Zusammen,
seit 2005 läuft hier Asterisk - immer gab es irgendwo mal ein Problem, resultierend aus vielen einfachen Nebenstellen - auch außerhalb. Mal steckte ein Stecker wie durch Geisterhand nicht mehr in der Buchse, mal wurde schlichtweg der Kabel zerstört, mal war ein Gerät überlastet oder nach einem autom. Update nicht sauber neu hochgefahren......
#############################################################
Wie findest Du das HowTo?
Ich freue mich sehr über eine kleine Bemerkung im Diskussions-Thread!
#############################################################
VORWORT - Der Grundgedanke im Sinne der VoIP
Seit Anfang 2010 läuft hier Nagios 3 und es ist wirklich ein Festschmaus, alle VoIP Geräte sind eingebunden, so bekomme ich eine Meldung (Email - aber auch Anruf ist möglich) BEVOR die berühmte "Panik" ausbricht, zBsp. eine Fritz!Box in einer räumlich getrennten Niederlassung ausfällt, oder eine VPN Verbindung nicht aufgebaut wird, ein Drucker ausfällt (auch zBsp. kein Papier wäre möglich), ein Faxgerät streikt, ein POS System nach einem Update nicht mehr hochfährt oder natürlich einer der Server Probleme bereitet. In meinem Umfeld könnte man Nagios als hoffnungslos überdimensioniert betrachten - ich sehe Nagios als Entspannung an - ich kann mich dann um Dinge sorgen, wenn ich es muss - ansonsten habe ich einen freien Kopf und weniger schlechten Schlaf!
Hätte man mir früher die Vorzüge einer ca. 3-4 Stunden dauernden Installation von Nagios herangetragen so hätte ich das ganze direkt mit aufgesetzt. Ein alter Schulfreund (alleiniger Administrator eines sehr großen TK Lieferanten) meinte als alter Windows-Freund dazu "Wenn etwas schief geht, habe ich das in 15 Minuten wieder im Griff." Ich wunderte mich, da bei mir die "Meldung über ein Problem" ohne Nagios immer erst dann kam, wenn bereits alle Arbeit zum Erliegen kam, dann kam meine Fahrtzeit, Ausfindig machen des Problems und entgültiges Beseitigen dazu. Ich habe es sehr selten auf 15 Minuten "verlorene Zeit" gebracht.
Das folgende HOWTO ist in fünf Teile aufgebaut, es wird in den nächsten Tagen erweitert und vervollständigt - es verfolgt (auch) das Ziel Nagios zu erklären und ich erhoffe mir persönlich auch eine bessere Konfiguration, im Dez09 arbeitet Nagios hier nur mit einem einfachen Ping Check, alle anderen Optionen liegen bereit, es fehlt nur schlichtweg die Zeit. Update - im Februar 2011 fragt Nagios differenzierter ab (Service ON, snmp-walk..)
Sollten in diesem HOWTO Fehler entstehen, Dinge nicht richtig erklärt sein oder sollte es noch bessere Lösungswege geben, so würde ich es sehr begrüßen wenn die Diskussion HIER stattfinden würde. Auch Bemerkungen, Hilfe etc. bitte dort - ich freue mich darauf! Vielen Dank.
------------------------------------------------------------------------
Teil 1 - Einsetzen der Abhängigkeiten und Grundinstallation
Teil 2 - Konfiguration von Nagios
Teil 3 - Überwachen von Endgeräten
a) rudimentäre Drucker
b) VoIP Geräte
c) Windows-PCs (mit Nagios Plugin)
d) Linux-Server (auch mit dem Nagios-Plugin)
Teil 3 1/2 - Fehlerbehandlung in der Konfiguration
a) Hilfe! Wie finde ich den Fehler
Teil 4 - Meldungen/Alarme zum Empfänger reichen
a) per simpler Mail
b) per Anruf (zBsp. ISDN)
c) per SMS
Teil 5 - Manuelle Modifikationen (Tipps!)
<<im Aufbau>>>
------------------------------------------------------------------------
Teil 1 - Einsetzen der Abhängigkeiten und Grundinstallation
Wir gehen im Folgenden von diesen Gegebenheiten aus :
- Unser PC ist so dimensioniert das er noch >50MB Speicherplatz anbietet
- Unser PC ist möglichst sehr gut verfügbar und hat idealerweise eine Möglichkeit zur ISDN Nutzung
- Wir setzen Nagios ebenfalls idealerweise auf 2 PCs auf, welche unterschiedliche Anbindungen haben.
- Unser Linux ist Debian, zur Not auch Ubuntu
- Wir sind bei der Installation "root"
- Später werden wir Nagios als "nagios" (!) ansprechen.
- Linuxer sind seltsam, zum editieren nehme ich "nano" - wer "vi" mag nehme den..
-unter Debian-
i. Abhängigkeiten erfüllen
ii. Benutzer und Gruppe erstellen
iii. Herunterladen von Nagios Source und den Addons
Wir suchen uns die gewünschte Version von hier aus, wir benötigen den Core und die Plugins! Wget lädt für uns in das Download-Verzeichnis und wir machen weiter.
Alternativ nehmen wir die zur Zeit der Erstellung aktuellste Version 3.2.0 und 1.4.14 :
iv. Nagios kompilieren
v. Wir kompilieren das Webinterface
vi. Die Plugins kompilieren
vii. Wir stellen das Nagios Startskript in Runlevel 2
viii. Wichtig ! Für spätere Zeitpunkte! wir setzen uns ein Skript für unseren Nutzer (hier root) um schnell die Konfigurationsdateien zu überprüfen! Bitte beim "täglichen Nutzer" erstellen, da wir ja root nur zur Installation nutzen möchten! Es gibt mehrere Wege zum Ziel, dies ist meiner:
In die nun geöffnete Bash.rc setzen wir :
Und schließen Nano oder vi. Nach einem ab und anmelden unter aktuell root können wir mit "nag" die Konfigurationsdateien überprüfen und erhalten idealerweise ein :
Herzlichen Glückwunsch, Nagios ist installiert und könnte bereits starten. KÖNNTE!
------------------------------------------------------------------------
Teil 2 - Konfiguration von Nagios
Wir teilen das ganze nun in "Anfänger" (i.) und "das reicht schon" - und "wir wollen Funktionalität prüfen, nicht nur Anwesenheit" (ii.) !
i. Basis-Konfiguration
Am einfachsten kann man ein Gerät überwachen welches sich im Netzwerk schlichtweg anpingen lässt.
Das setzen wir am Beispiel eines Routers, welcher sich praktischerweise auf 10.0.0.1 befindet - so um :
Man wechsle in das Nagios Hauptverzeichnis .. :
Unter dem Verzeichnis "Objects" befindet sich unser Hauptsteuerungsmechanismus - die Konfigurationsdateien der Objekte.
Wir möchten gerne von Null anfangen, das eignet sich in meinen Augen am besten um zu lernen und erstellen eine Neue Konfiguration, die wir "Router.cfg" nennen, in ihr sollen später alle "Router" Ihre Überwachungskonfiguration finden :
In die Konfigurationsdatei, welche idealerweise noch leer ist - setzen wir nun unsere Definition unseres ersten, zu überwachenden Routers ein, an jedem "host" können wir mehrere Arten der Prüfung fahren, aber step by step:
Hinweis! (Siehe zur Konfiguration auch "Tipp2" ganz unten im Thread!)
Ist eigentlich ganz einfach - nicht? Ist ja auch das "Schnellschema"..
Nun müssen wir unsere zu prüfenden Schemen anpassen, wir setzen direkt nach dem o.g. Eintrag diesen hier ein:
Fertig.
Nun könn(t)en wir bereits unseren Nagios laufen lassen, jedoch - was passiert wenn etwas schief geht? Wer wird informiert?
Wir werfen einen kurzen Blick in die Contacts.cfg und setzen unseren Namen und unsere Email ein.
ACHTUNG! Bitte stell sicher das Dein System auch Emails versenden kann!
Nagios Konfig. prüfen mit "nag" - ist alles okay?
Nagios starten.
Wer nunmehr mag, kann schon per Apache auf seinen Neuen Nagios Webauftritt schauen :
Benutzer ist per default : nagiosadmin
Passwort : nagiospwd
Sicherheitsbedenken wegen des einfachen Passwortes? Richtig, wir setzen unser eigenes :
Eingeben. Übernommen. Fertig. Verloren? Befehl als root neu starten.
Wir können auch noch den Zugriff separieren, aber das sprengt den Rahmen - wer es mag .. :
Ende der Schnellanleitung.
ii. Funktionsweite Konfiguration (wir beginnen bei Null - aber wir lernen viel)
Fangen wir einfach an und entfernen alle Vorlagen .. :
So. Nun sind wir rein und können verstehen wie Nagios arbeitet und warum.
##### Neubau heisst viel Zeit haben - ich arbeite an beidem ######
------------------------------------------------------------------------
Teil 3 - Überwachen von Endgeräten
------------------------------------------------------------------------
Teil 3 1/2 - Fehlerbehandlung in der Konfiguration
a) Hilfe! Wie finde ich den Fehler
Fehler gefunden? Nagios startet nicht? Was nun?
Versuche es mit dem Nagios Prüfroutinchen, der v erbosity :
Das sollte Dir den Fehler deutlich einkreisen!
------------------------------------------------------------------------
Teil 4 - Meldungen/Alarme zum Empfänger reichen
Vorweg, da zwingend benötigt um per Telefon alarmiert zu werden - aber OffTopic - wer noch keine Sprachausgabe - also besser gesagt eine Sprachsynthese in sein Asterisk integriert hat sollte dies an dieser Stelle mit meinem HOWTO zu MBROLA tun. MBROLA ist Freeware und kann frei genutzt werden, für kommerzielle Einsätze sollte man auf CEPSTRAL wechseln - ich nutze hier kein MBROLA mehr, weshalb meine Skripte den CEPSTRAL Weg folgen werden, die Übernahme nach MBROLA ist aber ein Kinderspiel.
Wer noch SMS Kontakt wünscht der kann dies zBsp. hier finden, oder hier - ich stehe auf ausgesprochene Worte und eine bestätigte Warnung (durch abheben des Hörers)
Wir richten unsere KONTAKTE richtig ein, das machen wir über die Datei "contacts.cfg" in objects :
Speichern.
Wir modifizieren die "commands.cfg" im Verzeichnis "objects" des Nagios "etc" um unsere Sprachanrufe zu tätigen (Hinweis! Wer MBROLA nutzt muss nur den Befehl lt. HOWTO oben verändern, dieses Beispiel weist Cepstral an zu konvertieren!)
Unter den beiden Kommandos zum EMAIL Support fügen wir nun unsere beiden Telefonkommandos ein :
Nun noch den Kontakt selber unter dem default "generic-contact" in "templates.cfg" erstellen, ich habe ihn hier mit "Arbeitszeit" und nur bei kritischen Fehlern laufen lassen :
Die Uhrzeiten setzen wir ebenfalls etwas eleganter, wer will schon unterm Weihnachtsbaum nen Anruf bekommen ?
timeperiods.cfg
Wir müssen ebenfalls unser Shellskript in /var/lib/asterisk/agi-bin/ erstellen, wir geben eine Variable "$1" als Rufnummer für Asterisk mit - nochmals deutlich - Asterisk muss dies inkl. CHANNEL erhalten !! Also nicht "40" sondern "SIP/40" "mISDN/1/123456" oder mW "ZAP/2" oder oder..
Wir erstellen die Datei "nagios-anruf.sh" in /var/lib/asterisk/agi-bin
Ausführbar machen mit chmod a+x <dateiname>. Bitte beachtet die in diesem Skript nicht voll ausgefertigte Idee - "was passiert wenn mehrere notrufe ausgegeben werden?"
Nun ran an Asterisk - wer NICHT REALTIME nutzt kann es so machen wie ich :
extensions.conf editieren und folgendes einfügen :
Was ist AMD ? AMD findet heraus ob ein Mensch abnimmt oder eine Maschine - es funktioniert super, ein Nachteil - hört AMD das man abnimmt aber sich nicht seinem Namen meldet nimmt AMD an das ein Anrufb. rangegangen ist und legt einfach auf, bzw. führt das aus was wir wollen was passiert wenn ein AB rangeht. anbei - ich lasse die Nachricht 2 x durchsprechen, es ist halt so das man beim ersten Anruf nicht immer alles wichtige versteht.
Fertig.
Bitte noch mit "/etc/init.d/nagios checkconfig" die Konfiguration prüfen!
Was jeder selber wissen muss ob er nicht eine Zeitfunktion einbaut, wer will schon nachts angerufen werden weil ein Drucker ausgegangen ist, aber wie gesagt, das muss jeder selber wissen.
zBsp. so :
Teil 5 - Manuelle Modifikationen (Tipps!)
Tipp 1 - Wer nachher gerne mit der WebGUI arbeitet und zBsp. "Downtimes scheduled" oder "Notifikationen verändert" etc. wird etwas feststellen - unter meinem Debian wird aus irgendeinem Grund die Datei "nagios.cmd" täglich und nach jedem Neustart des PC / Server mit anderen Schreibrechten versehen - warum dem so ist und/oder ob es an dem Verzeichnis liegt weiss ich nicht - meine Abhilfe steht in einem kleinen "Tagesskript" an letzter Stelle :
Dann ist wieder alles möglich - es hilft allerdings NICHT bei einem Neustart und dem Willen direkt danach etwas in der GUI zu tun.
Tipp 2 - [GuterTipp!!] Wer sich gerne "optisch" mit Nagios auseinandersetzen will, sollte die Option "parents" beherrschen und überall in der Konfiguration einpflegen !!
Parents steht für nicht mehr als das man seinem Objekt der Überwachung sagt von wem es abhängt.
Einfaches Beispiel - DSL fällt aus, der Webserver dahinter ist lokal natürlich noch zu erreichen - jedoch ist er für die Außenwelt tot.
Gibt man dem Webserver jedoch die Option parents mit, versteht er das er ebenfalls down ist wenn die Eltern ausfallen - und noch mehr, mit gesetzter Parents kann man per Klick direkt zu einer geplanten Ausfallzeit (scheduled downtime) die Kinder mit einplanen.
Eine Konfig sieht dann zBsp. so aus :
Wie man sieht sind auch mehrere parents möglich..!
Optisch kann parents dann direkt auch noch was. Die Symbole werden in der "map" den Abhängigkeiten nach sortiert und aufgereiht.
Bei mir sieht das ganze dann so aus :
Tipp 3 - Wer gerne Windows Rechner auf HDD, RAM Nutzung, Logprobleme etc. überwachen will die nicht ständig an sind, oder auch Laptops oder was weiss ich was halt nicht immer da ist, der kann "check_multi" nutzen.
Ich muss jedoch zugeben check_multi bisher nicht so verstanden zu haben das es einsatzfähig wäre :-(
Doku hier.
War das HOWTO nützlich?
Ich freue mich sehr über eine kleine Bemerkung im Diskussions-Thread!
Stefan.
seit 2005 läuft hier Asterisk - immer gab es irgendwo mal ein Problem, resultierend aus vielen einfachen Nebenstellen - auch außerhalb. Mal steckte ein Stecker wie durch Geisterhand nicht mehr in der Buchse, mal wurde schlichtweg der Kabel zerstört, mal war ein Gerät überlastet oder nach einem autom. Update nicht sauber neu hochgefahren......
#############################################################
Wie findest Du das HowTo?
Ich freue mich sehr über eine kleine Bemerkung im Diskussions-Thread!
#############################################################
VORWORT - Der Grundgedanke im Sinne der VoIP
Seit Anfang 2010 läuft hier Nagios 3 und es ist wirklich ein Festschmaus, alle VoIP Geräte sind eingebunden, so bekomme ich eine Meldung (Email - aber auch Anruf ist möglich) BEVOR die berühmte "Panik" ausbricht, zBsp. eine Fritz!Box in einer räumlich getrennten Niederlassung ausfällt, oder eine VPN Verbindung nicht aufgebaut wird, ein Drucker ausfällt (auch zBsp. kein Papier wäre möglich), ein Faxgerät streikt, ein POS System nach einem Update nicht mehr hochfährt oder natürlich einer der Server Probleme bereitet. In meinem Umfeld könnte man Nagios als hoffnungslos überdimensioniert betrachten - ich sehe Nagios als Entspannung an - ich kann mich dann um Dinge sorgen, wenn ich es muss - ansonsten habe ich einen freien Kopf und weniger schlechten Schlaf!
Hätte man mir früher die Vorzüge einer ca. 3-4 Stunden dauernden Installation von Nagios herangetragen so hätte ich das ganze direkt mit aufgesetzt. Ein alter Schulfreund (alleiniger Administrator eines sehr großen TK Lieferanten) meinte als alter Windows-Freund dazu "Wenn etwas schief geht, habe ich das in 15 Minuten wieder im Griff." Ich wunderte mich, da bei mir die "Meldung über ein Problem" ohne Nagios immer erst dann kam, wenn bereits alle Arbeit zum Erliegen kam, dann kam meine Fahrtzeit, Ausfindig machen des Problems und entgültiges Beseitigen dazu. Ich habe es sehr selten auf 15 Minuten "verlorene Zeit" gebracht.
Das folgende HOWTO ist in fünf Teile aufgebaut, es wird in den nächsten Tagen erweitert und vervollständigt - es verfolgt (auch) das Ziel Nagios zu erklären und ich erhoffe mir persönlich auch eine bessere Konfiguration, im Dez09 arbeitet Nagios hier nur mit einem einfachen Ping Check, alle anderen Optionen liegen bereit, es fehlt nur schlichtweg die Zeit. Update - im Februar 2011 fragt Nagios differenzierter ab (Service ON, snmp-walk..)
Sollten in diesem HOWTO Fehler entstehen, Dinge nicht richtig erklärt sein oder sollte es noch bessere Lösungswege geben, so würde ich es sehr begrüßen wenn die Diskussion HIER stattfinden würde. Auch Bemerkungen, Hilfe etc. bitte dort - ich freue mich darauf! Vielen Dank.
------------------------------------------------------------------------
Teil 1 - Einsetzen der Abhängigkeiten und Grundinstallation
Teil 2 - Konfiguration von Nagios
Teil 3 - Überwachen von Endgeräten
a) rudimentäre Drucker
b) VoIP Geräte
c) Windows-PCs (mit Nagios Plugin)
d) Linux-Server (auch mit dem Nagios-Plugin)
Teil 3 1/2 - Fehlerbehandlung in der Konfiguration
a) Hilfe! Wie finde ich den Fehler
Teil 4 - Meldungen/Alarme zum Empfänger reichen
a) per simpler Mail
b) per Anruf (zBsp. ISDN)
c) per SMS
Teil 5 - Manuelle Modifikationen (Tipps!)
<<im Aufbau>>>
------------------------------------------------------------------------
Teil 1 - Einsetzen der Abhängigkeiten und Grundinstallation
Wir gehen im Folgenden von diesen Gegebenheiten aus :
- Unser PC ist so dimensioniert das er noch >50MB Speicherplatz anbietet
- Unser PC ist möglichst sehr gut verfügbar und hat idealerweise eine Möglichkeit zur ISDN Nutzung
- Wir setzen Nagios ebenfalls idealerweise auf 2 PCs auf, welche unterschiedliche Anbindungen haben.
- Unser Linux ist Debian, zur Not auch Ubuntu
- Wir sind bei der Installation "root"
- Später werden wir Nagios als "nagios" (!) ansprechen.
- Linuxer sind seltsam, zum editieren nehme ich "nano" - wer "vi" mag nehme den..
-unter Debian-
i. Abhängigkeiten erfüllen
Code:
apt-get install apache2 build-essential php5 libapache2-mod-php5 libgd2-xpm-dev
Code:
useradd -m nagios
passwd nagios
groupadd nagios
usermod -G nagios nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd www-data
Code:
mkdir nagios-download && cd nagios-download
Alternativ nehmen wir die zur Zeit der Erstellung aktuellste Version 3.2.0 und 1.4.14 :
Code:
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.0.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz
tar -xzf nagios-3.2.0.tar.gz
tar -xzf nagios-plugins-1.4.14.tar.gz
Code:
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
Code:
make install-webconf
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
/etc/init.d/apache2 reload
Code:
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
Code:
ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
Code:
nano ~/.bashrc
Code:
alias nag='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'
Code:
Things look okay - No serious problems were detected during the pre-flight check
Herzlichen Glückwunsch, Nagios ist installiert und könnte bereits starten. KÖNNTE!
------------------------------------------------------------------------
Teil 2 - Konfiguration von Nagios
Wir teilen das ganze nun in "Anfänger" (i.) und "das reicht schon" - und "wir wollen Funktionalität prüfen, nicht nur Anwesenheit" (ii.) !
i. Basis-Konfiguration
Am einfachsten kann man ein Gerät überwachen welches sich im Netzwerk schlichtweg anpingen lässt.
Das setzen wir am Beispiel eines Routers, welcher sich praktischerweise auf 10.0.0.1 befindet - so um :
Man wechsle in das Nagios Hauptverzeichnis .. :
Code:
cd /usr/local/nagios/etc/objects
Wir möchten gerne von Null anfangen, das eignet sich in meinen Augen am besten um zu lernen und erstellen eine Neue Konfiguration, die wir "Router.cfg" nennen, in ihr sollen später alle "Router" Ihre Überwachungskonfiguration finden :
Hinweis! Nagios ist so ausgelegt das man Entwürfe vorfertigen kann, daher macht diese separate Konfigurationsdatei Sinn, Router werden selten in der Lage sein zBsp. Ihre CPU Auslastung zurückzugeben, das können wir mit einem Template so markieren und dieses Template legen wir als Definition für alle Router fest. Die Konfigdatei zBsp. Server würde dann ein anderes Template haben, wo es besonders darauf ankommt wieviel ? Speicherplatz ? eine Partition hat, oder wie hoch die Auslastung ist oder oder.
Code:
nano router.cfg
Hinweis! (Siehe zur Konfiguration auch "Tipp2" ganz unten im Thread!)
Code:
define host{
use generic-switch ; Das ist ein vordefiniertes Template - welches wir nun für Router nehmen.
host_name unser_router ; Der Maschinenlesbare Name, also ohne Leerzeichen etc.
alias Dieser Router verbindet Zentrale 1 mit 2 und ist sehr wichtig ; ein langer - menschenlesbarer Text, ein Alias
address 10.0.0.1 ; Die IP des Gerätes, wir hatten uns auf 10.0.0.1 geeinigt.
hostgroups switches ; Welcher Gruppe gehört dieser einzelne Router an? Der vordefinierten Gruppe "switches"
}
Nun müssen wir unsere zu prüfenden Schemen anpassen, wir setzen direkt nach dem o.g. Eintrag diesen hier ein:
Code:
define service{
use generic-service ; Wir nutzen, mal wieder ein Template, der einfachherheithalber aus den Vorlagen
host_name unser_router ; Wie heisst nochmal das Gerät welches geprüft werden soll? Achja, "unser_router"
service_description PING ; Beschreibung des Services - diese kommt zBsp. bei Fehlermeldungen zur Ansicht.
check_command check_ping!200.0,20%!600.0,60% ; Wir geben dem Plugin "PING" seine Anweisungen
normal_check_interval 5 ; Wenn alles okay ist dann prüfe alle 5 Minuten
retry_check_interval 1 ; Schlägt Check1 fehl, prüfe alle 1 Minute ob wir wieder online sind
}
Nun könn(t)en wir bereits unseren Nagios laufen lassen, jedoch - was passiert wenn etwas schief geht? Wer wird informiert?
Wir werfen einen kurzen Blick in die Contacts.cfg und setzen unseren Namen und unsere Email ein.
ACHTUNG! Bitte stell sicher das Dein System auch Emails versenden kann!
Nagios Konfig. prüfen mit "nag" - ist alles okay?
Nagios starten.
Code:
/etc/init.d/nagios start
Code:
http://localhost/nagios
Passwort : nagiospwd
Sicherheitsbedenken wegen des einfachen Passwortes? Richtig, wir setzen unser eigenes :
Code:
htpasswd2 -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Wir können auch noch den Zugriff separieren, aber das sprengt den Rahmen - wer es mag .. :
Code:
nano /etc/apache2/conf.d/nagios.conf
ii. Funktionsweite Konfiguration (wir beginnen bei Null - aber wir lernen viel)
Fangen wir einfach an und entfernen alle Vorlagen .. :
Code:
cd /usr/local/nagios/etc/objects
mkdir backup
mv *.cfg backup
##### Neubau heisst viel Zeit haben - ich arbeite an beidem ######
------------------------------------------------------------------------
Teil 3 - Überwachen von Endgeräten
------------------------------------------------------------------------
Teil 3 1/2 - Fehlerbehandlung in der Konfiguration
a) Hilfe! Wie finde ich den Fehler
Fehler gefunden? Nagios startet nicht? Was nun?
Versuche es mit dem Nagios Prüfroutinchen, der v erbosity :
Code:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
------------------------------------------------------------------------
Teil 4 - Meldungen/Alarme zum Empfänger reichen
Vorweg, da zwingend benötigt um per Telefon alarmiert zu werden - aber OffTopic - wer noch keine Sprachausgabe - also besser gesagt eine Sprachsynthese in sein Asterisk integriert hat sollte dies an dieser Stelle mit meinem HOWTO zu MBROLA tun. MBROLA ist Freeware und kann frei genutzt werden, für kommerzielle Einsätze sollte man auf CEPSTRAL wechseln - ich nutze hier kein MBROLA mehr, weshalb meine Skripte den CEPSTRAL Weg folgen werden, die Übernahme nach MBROLA ist aber ein Kinderspiel.
Wer noch SMS Kontakt wünscht der kann dies zBsp. hier finden, oder hier - ich stehe auf ausgesprochene Worte und eine bestätigte Warnung (durch abheben des Hörers)
Wir richten unsere KONTAKTE richtig ein, das machen wir über die Datei "contacts.cfg" in objects :
Code:
define contact{
contact_name nagiosadmin
use phone-contact
alias Voller Name
[B]pager Die Rufnummer - so wie Asterisk sie DIREKT wählen kann, also : zBsp. "SIP/40"[/B]
email [email protected]
}
define contact{
contact_name nagiosemail-empfaenger
use phone-contact
alias Voller Name
email [email protected]
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin, nagiosemail-empfaenger
}
Wir modifizieren die "commands.cfg" im Verzeichnis "objects" des Nagios "etc" um unsere Sprachanrufe zu tätigen (Hinweis! Wer MBROLA nutzt muss nur den Befehl lt. HOWTO oben verändern, dieses Beispiel weist Cepstral an zu konvertieren!)
Unter den beiden Kommandos zum EMAIL Support fügen wir nun unsere beiden Telefonkommandos ein :
Code:
# 'notify-service-by-phone' command definition
define command{
command_name notify-service-by-phone
command_line /opt/swift/bin/swift -o /tmp/nagios-alert-service.wav -p audio/sampling-rate=8000,audio/channels=1' "NAGIOS-ÜBERWACHUNG VON EINZELNEN DIENSTEN. Zustand ist $NOTIFICATION$, $SERVICESTATE$. Der Service $SERVICEDESC$ auf $HOSTALIAS$ benötigt Ihre Aufmerksamkeit. Es wird keine weiteren Hinweise auf Ihrem Telefon zu diesem Status geben." & /var/lib/asterisk/agi-bin/nagios-anruf.sh $CONTACTPAGER$
}
# 'notify-host-by-phone' command definition
define command{
command_name notify-host-by-phone
command_line /opt/swift/bin/swift -o /tmp/nagios-alert-host.wav -p audio/sampling-rate=8000,audio/channels=1' "NAGIOS-ÜBERWACHUNG VON HOSTS. Zustand ist $NOTIFICATION$, $SERVICESTATE$. Der Service $SERVICEDESC$ auf $HOSTALIAS$ benötigt Ihre Aufmerksamkeit. Es wird keine weiteren Hinweise auf Ihrem Telefon zu diesem Status geben." & /var/lib/asterisk/agi-bin/nagios-anruf.sh $CONTACTPAGER$
}
Code:
define contact{
name phone-contact
service_notification_period [B]Arbeitszeit[/B]
host_notification_period [B]Arbeitszeit[/B]
service_notification_options c ; c = critical
downtime events
host_notification_options d,u ; down und unreachable
service_notification_commands notify-service-by-phone
host_notification_commands notify-host-by-phone
register 0
}
timeperiods.cfg
Code:
define timeperiod{
timeperiod_name Arbeitszeit
alias Normal Work Hours
monday 04:00-19:00
tuesday 04:00-19:00
wednesday 04:00-19:00
thursday 04:00-19:00
friday 04:00-19:00
saturday 04:00-19:00
sunday 06:00-16:00
}
Wir erstellen die Datei "nagios-anruf.sh" in /var/lib/asterisk/agi-bin
Code:
#!/bin/bash
#
# NAGIOS ALARMFUNKTIONS-SKRIPT
#
# $1 beinhaltet die Rufnummer des zu alarmierenden
# Wir pruefen als ersten Schritt ob die Datei von NAGIOS auch wirklich existiert!
# ACHTUNG! Diese Vorgehensweise hat einen Haken - alarmiert Nagios urplötzlich über viele Probleme, so wird die Sprachdatei laufend aktualisiert und
# könnte zum Zeitpunkt unserer Kontrolle nicht verfügbar sein, so dass nicht alarmiert wird. Umgehung mit einer TIMESTAMP Datei und der Weiterverfolgung
# des Ansatzes unten - jedes Callfile bekommt eine eigene Nummer oder halt einen TIMESTAMP, ich mache es immer so das ich bis zu 3 Nummern vergebe und dann
# bei Skriptstart pruefe ob .1 da ist, dann prüfe ich ob .2 da ist, nein? dann nutze ich .2 usw
#
if [ -f /tmp/nagios-alert-host.wav ]; then
ZEILE1="Channel: $1" # wer und wohin - variabel
ZEILE6="Extension: nagios"
ZEILE2="MaxRetries: 3" # Wie oft anrufen
ZEILE3="RetryTime: 300" # Wartezeit zwischen..
ZEILE4="WaitTime: 50" # Wartezeit bis zur Abnahme des Apparates
ZEILE5="Context: nagios" # Sprungpunkt
ZEILE7="Priority: 1" # Prioritaet
ZEILE8="CallerID: Nagios <91>" # Wer ruft an
rm /var/spool/asterisk/entwurf/nagios_nachricht.1 2>/dev/null
touch /var/spool/asterisk/entwurf/nagios_nachricht.1
# Hier setzen wir den Lock fuer die Verarbeitung von Anruf 1 - bei mir LOCK 10.
touch /var/spool/asterisk/entwurf/10
echo $ZEILE1 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE2 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE3 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE4 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE5 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE6 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE7 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE8 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
mv /var/spool/asterisk/entwurf/nagios_nachricht.1 /var/spool/asterisk/outgoing/nagios_nachricht.1
# Und hier nehmen wir den Lock wieder weg
rm /var/spool/asterisk/entwurf/10 2>/dev/null
fi
# Wir pruefen ob ein Dienst einen Neuen Status hat..
if [ -f /tmp/nagios-alert-service.wav ]; then
ZEILE1="Channel: $1" # wer und wohin - variabel
ZEILE6="Extension: nagios-service"
ZEILE2="MaxRetries: 3" # Wie oft anrufen
ZEILE3="RetryTime: 300" # Wartezeit zwischen..
ZEILE4="WaitTime: 50" # Wartezeit bis zur Abnahme des Apparates
ZEILE5="Context: nagios" # Sprungpunkt
ZEILE7="Priority: 1" # Prioritaet
ZEILE8="CallerID: Nagios <91>" # Wer ruft an
rm /var/spool/asterisk/entwurf/nagios_nachricht.1 2>/dev/null
touch /var/spool/asterisk/entwurf/nagios_nachricht.1
# Hier setzen wir den Lock fuer die Verarbeitung von Anruf 1 - bei mir LOCK 10.
touch /var/spool/asterisk/entwurf/10
echo $ZEILE1 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE2 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE3 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE4 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE5 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE6 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE7 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
echo $ZEILE8 >>/var/spool/asterisk/entwurf/nagios_nachricht.1
mv /var/spool/asterisk/entwurf/nagios_nachricht.1 /var/spool/asterisk/outgoing/nagios_nachricht.1
# Und hier nehmen wir den Lock wieder weg
rm /var/spool/asterisk/entwurf/10 2>/dev/null
fi
Nun ran an Asterisk - wer NICHT REALTIME nutzt kann es so machen wie ich :
extensions.conf editieren und folgendes einfügen :
Was ist AMD ? AMD findet heraus ob ein Mensch abnimmt oder eine Maschine - es funktioniert super, ein Nachteil - hört AMD das man abnimmt aber sich nicht seinem Namen meldet nimmt AMD an das ein Anrufb. rangegangen ist und legt einfach auf, bzw. führt das aus was wir wollen was passiert wenn ein AB rangeht. anbei - ich lasse die Nachricht 2 x durchsprechen, es ist halt so das man beim ersten Anruf nicht immer alles wichtige versteht.
Code:
[nagios]
exten => nagios,1,AMD
exten => nagios,n,GotoIf($[${AMDSTATUS}=HUMAN]?humn:mach)
exten => nagios,n(humn),Playback(/tmp/nagios)
exten => nagios,n(humn),Playback(/tmp/nagios)
exten => nagios,n(humn),Hangup()
exten => nagios,n(mach),Hangup()
; Aktion bei einem Service - ggf. nicht so dringend und somit anders zu behandeln?
exten => nagios-service,1,AMD
exten => nagios-service,n,GotoIf($[${AMDSTATUS}=HUMAN]?humn:mach)
exten => nagios-service,n(humn),Playback(/tmp/nagios)
exten => nagios-service,n(humn),Playback(/tmp/nagios)
exten => nagios-service,n(humn),Hangup()
exten => nagios-service,n(mach),Hangup()
Bitte noch mit "/etc/init.d/nagios checkconfig" die Konfiguration prüfen!
Was jeder selber wissen muss ob er nicht eine Zeitfunktion einbaut, wer will schon nachts angerufen werden weil ein Drucker ausgegangen ist, aber wie gesagt, das muss jeder selber wissen.
zBsp. so :
Code:
exten => nagios,n,GotoIfTime(22:00-06:00,mon-sun,*,*?email-reicht-aus,,1)
Tipp 1 - Wer nachher gerne mit der WebGUI arbeitet und zBsp. "Downtimes scheduled" oder "Notifikationen verändert" etc. wird etwas feststellen - unter meinem Debian wird aus irgendeinem Grund die Datei "nagios.cmd" täglich und nach jedem Neustart des PC / Server mit anderen Schreibrechten versehen - warum dem so ist und/oder ob es an dem Verzeichnis liegt weiss ich nicht - meine Abhilfe steht in einem kleinen "Tagesskript" an letzter Stelle :
Code:
chmod 777 /usr/local/nagios/var/rw/nagios.cmd
Tipp 2 - [GuterTipp!!] Wer sich gerne "optisch" mit Nagios auseinandersetzen will, sollte die Option "parents" beherrschen und überall in der Konfiguration einpflegen !!
Parents steht für nicht mehr als das man seinem Objekt der Überwachung sagt von wem es abhängt.
Einfaches Beispiel - DSL fällt aus, der Webserver dahinter ist lokal natürlich noch zu erreichen - jedoch ist er für die Außenwelt tot.
Gibt man dem Webserver jedoch die Option parents mit, versteht er das er ebenfalls down ist wenn die Eltern ausfallen - und noch mehr, mit gesetzter Parents kann man per Klick direkt zu einer geplanten Ausfallzeit (scheduled downtime) die Kinder mit einplanen.
Eine Konfig sieht dann zBsp. so aus :
Code:
define host{
use generic-voip
host_name asterisk-service
alias Der ASTERISK DIENST
address 10.0.0.60
hostgroups voip
parents patton-isdn
parents dsl-router-1
parents dsl-router-2
parents dsl-router-3
}
Optisch kann parents dann direkt auch noch was. Die Symbole werden in der "map" den Abhängigkeiten nach sortiert und aufgereiht.
Bei mir sieht das ganze dann so aus :
Tipp 3 - Wer gerne Windows Rechner auf HDD, RAM Nutzung, Logprobleme etc. überwachen will die nicht ständig an sind, oder auch Laptops oder was weiss ich was halt nicht immer da ist, der kann "check_multi" nutzen.
Ich muss jedoch zugeben check_multi bisher nicht so verstanden zu haben das es einsatzfähig wäre :-(
Doku hier.
War das HOWTO nützlich?
Ich freue mich sehr über eine kleine Bemerkung im Diskussions-Thread!
Stefan.
Zuletzt bearbeitet: