Fritz!Box Monitoring

  • Unsere Website ist morgen von 07:00 bis 12:00 UTC aufgrund von Wartungsarbeiten nicht verfügbar. Wir entschuldigen uns für etwaige Unannehmlichkeiten.

campino12

Neuer User
Mitglied seit
26 Aug 2007
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

also ich habe hier einen Nagios server am laufen und würde mit diesem gerne meine beiden Fritzboxen (7050 und 7170) monitoren. auf der 7170 läuft bereits freetz 1.0.

ich habe mir gedacht, man könnte ja wie bei aneren linux servern mit check_by_ssh arbeiten, dabei würde ich mich per publickey authentifizieren.

Mein Problem an der sache ist, dass wenn ich mir einen neuen user nagios auf der box anlege ich mich mit diesem nciht einloggen kann.... der user steht zwar in passwd datei drinn hat auch eine gültige shell aber es kommt immer nach der passworteingabe ein "Connection abort" von der box zurück.

wie stelle ich es an, dass ich mich mit dem user Nagios per ssh mit der Box verbinden kann?

Gruß
Alexander
 
Es gibt einen Patch, der ausschliesslich root-Anmeldungen per ssh erlaubt.
 
wie cinerious schon sagt, du musst den 100-root-login-only.patch löschen
Code:
rm make/dropbear/patches/100-root-login-only.patch
dann wahrscheinlich noch ein
Code:
make dropbear-dirclean
und dann das image bauen, dann sollte es funzen.
 
klingt interessant, werde das morgen mal ausprobieren... ich hoffe, dass ich das image auch auf der 7050 endlich mal hinbekomme, die sind bisher alle zu groß, obwohl ich nur den dropbear und sonst nix eingebaut habe.... naja mal schaun ob ich noch irgendwo nen usbstick hae mit dem man das evtl umgehen könnte...

ich berichte hier weiterhin was ich so hinbekommen ahbe in hinblick mit nagios und fritz!Box!

Gute Nacht
Alexander
 
Ich habe einfach in der /tmp/passwd eine Zeile hinzugefügt:

mrtg:2fdBbHTAwOhQ.:0:0:meimi039:/:/bin/sh

Das ist der User mrtg mit passwd mrtg. Eigentlich ist es auch root, aber mit anderem Namen. Für diesen User kannst Du dann die Keys bauen und mit ssh -i keyfile IP auf die Box zugreifen, ohne Passwort.
Das gaht dann mit check_by_ssh.
Besser finde ich passive checks über send_nsca. Das hat den Vorteil bei Boxen, die remote abgefragt werden, daß es keine CRITICAL host down anzeigen gibt, da die Boxen ihren Status selbst übemitteln. Und da Du die Parameter ja auf den Boxen ermittelst, kannst Du viel mehr Informationen visualisieren. Sehr einfach zu integrieren ist dann auch pnp4nagios. So bekommst Du schöne Grafiken über Datendurchsatz, Gesprächszeiten, ... alles was Du scripten kannst. Du könntest dann auch Syslog auf send_nsca pipen und hast von allen Boxen, die Du unterstützt (bei Onkels und Tanten oder Freunden...) einen guten - zentralen Überblick, was alles passiert.
Kurz: Ich finde send_nsca geschickter, denn es ist ein statisch gelinktes binary, das man einfach auf die Boxen verteilen kann.
Ich mounte das über Webdav (send_nsca und die scripte, die die Infos beschaffen). Somit kann ich dann die Config zentral ändern und alle Boxen haben automatisch den gleichen Versionsstand aller Scripte...
Ideen gibt es viele. Die Realisierung dauerte aber zugegebenermaßen sehr lange. Möglicherweise geht das auch einfacher über nc anstelle send_nsca.

Viel Erfolg beim Basteln...

Michael
 
Zuletzt bearbeitet:
hi meimi039,

das klingt ja irgendwie fast noch besser.... hast du soche scripte schon geschrieben und möchtest mir diese evtl zur verfügung stellen? wenn nciht hier öfffentlich dann auch gerne per mail oder so...

gerade so sachen wie das mit den Gespächsdauern klingt sehr interessant... oder mir mal einen ansatz geben da saowas zu basteln?
 
An einem kleinen HowTo wär' ich auch interessiert, das erspart viel Zeit!
 
Ich bin im Moment etwas in Überlast. Ich werde hier aber demnächst immer mal wieder was hinzufügen. Vorraussichtlich schon morgen...
 
NSCA funktioniert eigentlich sehr einfach. Man wertet auf dem lokalen Host die Informationen aus, sendet diese mit send_nsca an den NSCA-Server, welcher auf der Nagios-Maschine läuft. Dieser schreibt die empfangenen Infos in eine named pipe, aus der Nagios liest.
Damit das funktioniert sind ein paar Schritte nötig. Ich habe es so installiert:

1. cd /usr/local/src
2. wget http://www.mirrors.wiretapped.net/security/network-monitoring/nagios/nsca-2.7.2.tar.gz (Ist gerade nicht bei sourceforge zu haben)
3. tar -xzf nsca-2.7.2.tar.gz
4. cd nsca-2.7.2
5. ./configure
6. make all​

README lesen ist ne gute Idee!


Dann die Dateien für den Server kopieren:

PHP:
cp src/nsca /usr/local/nagios/bin
cp src/send_nsca /usr/local/nagios/bin
cp sample-config/nsca.cfg /usr/local/nagios/etc
cp sample-config/send_nsca.cfg /usr/local/nagios/etc

Dann den xinet.d configurieren:

PHP:
cat sample-config/nsca.xinetd >> /etc/xinetd.conf

Die /etc/xinetd.conf sollte nochmal überprüft werden!!!

Die gleichen Sourcen nochmal unter freetz cross-compilieren. Das hier entstandene nsca_send kommt dann auf die Box genau wie auch die sample-config/send_nsca.cfg, denn die wird beim Senden immer als Parameter übergeben.

Auf dem Server müssen noch die Rechte angepasst werden:

PHP:
chown nagios:nagios /usr/local/nagios/etc/nsca.cfg
chmod 400 /usr/local/nagios/etc/nsca.cfg

Wer will trägt noch

PHP:
nsca    5667/tcp     # Nagios Service Check Acceptor

in die /etc/services ein.

Nun die nsca.cfg editieren und debug=1 setzen, damit man in /var/log/messages was sehen kann. Über die Pipe /usr/local/nagios/var/rw/nagios.cmd werden die Ergebnisse ausgetauscht.

Es empfielt sich ein Passwort und eine Verschlüsselung zu vergeben in den Dateien /usr/local/nagios/etc/nsca.cfg und /usr/local/nagios/etc/send_nsca.cfg

Man kann nun schon mal lokal auf dem Nagios-Server testen:

PHP:
/usr/local/nagios/bin/nsca -c /usr/local/nagios/etc/nsca.cfg

Mit netstat -na | grep LISTEN nachsehen, ob Port 5667 hört.

PHP:
echo "localhost;Current Users;1;USERS OK - 999 users currently logged in" | /usr/local/nagios/bin/send_nsca -H localhost -d ";" -c /usr/local/nagios/etc/send_nsca.cfg

Jetzt sollte send_nsca antworten mit "1 data packet(s) sent to host successfully."

In der Webgui sollte jetzt unmittelbar der Status auf "WARNING" wechseln. "Disable active checks of this service" kann man machen, damit Nagios nicht immer mit eigenen Checks den Status wieder ändert.
Sollte das nicht gehen, kann man in der nagios.cfg mal untersuchen, ob external checks erlaubt sind.

Wenn bis hierher alles geht kann man sich ein dummy_command definieren:

PHP:
define command {
     command_name      check_dummy
     command_line      $USER1$/check_dummy $ARG1$
}

Noch ein ServiceTemplate:

PHP:
define service{
     use                     generic_service
     name                    passive_service
     register                0
     active_checks_enabled   0
     passive_checks_enabled  1
     flap_detection_enabled  0
     is_volatile             0
     check_period            24x7
     max_check_attempts      1
     normal_check_interval   5
     retry_check_interval    1
     check_freshness         0
     contact_groups          admins
     check_command           dummy!0
     notification_interval   120
     notification_period     24x7
     notification_options    w,u,c,r
     stalking_options        w,c,u
}

Jetzt kann man für jeden Host den passenden Service einrichten. Mit send_nsca schickt man die Werte dann jeweils an die service_description.

Beispiel:

PHP:
define service{
     use                     passive_service
     service_description     TestMessage
     host_name               fritzbox              # Muss definiert sein
}
Nun kann man von der fritzbox ein Paket schicken mit:

PHP:
echo "fritzbox;TestMessage;0;Alles in bester Ordnung" | /tmp/send_nsca -H localhost -d ";" -c /tmp/send_nsca.cfg

Voraussetzung ist natürlich, daß die Dateien auf der Box sind.

Wie das geht müssen wir hier aber nicht diskutieren, denke ich.


Schaut mal, wie weit ihr kommt. Das nächste ist dann wohl pnp4nagios ;-)


PS: Kleiner Tip noch: In der nagios.cfg trägt man alle .cfg-files ein mittels cfg_file=abcde.cfg
Einfacher ist es ein Verzeichnis anzulegen und alle cfg-files mit "cfg_dir=/usr/local/nagios/etc/meimi039" einzubinden. Dann kann man in diesem Verzeichnis auch die Strukturen abbilden wie z.B. räumliche Anordnungen ... etc...
 
Zuletzt bearbeitet:
cool das sieht ja schonmal fast perfekt aus... ich werde das morgen abend mal versuchen umzusetzen... mal sehn wie weit ich komme ;) Interessant sind ja dann vorallem deine scripte bezüglich gesprächsdauer und co...

hmmm ganz vergessen... dazu muss ich erstmal freetz auf die box bekommen... meine 7050 tut sich da ein bischen schwer mit der größe der images mal sehen ob ich das problem mit dem USB Root umgehen kann...
 
@campino12: ... oder schau dir mal das external Skript an, es wurde gerade hier dazu was geschrieben
@meimi039: Danke!
 
Ein kleines Script als Beispiel, wie man die Dateigrösse überwachen kann - z.B. für Logfiles...
Das kann man unter /usr/local/nagios/libexec ablegen und als command definieren...

PHP:
#!/bin/sh 
########################################################################### 
###                                                                     ### 
###   Program........: check_maxfilesize                                ### 
###   Author.........: meimi039                                         ### 
###   License........: GNU GPL                                          ### 
###   Version........: 1.0 (2008-07-31)                                 ### 
###   Remarks........: Check Max Filesize                               ### 
###                                                                     ### 
########################################################################### 

### Moegliche Rueckgabewerte 
STATE_OK=0 
STATE_WARNING=1 
STATE_CRITICAL=2 
STATE_UNKNOWN=3 

if [ $# -eq 0 ]; then 
   echo "FILE UNKNOWN: usage: $0 [-w Value] [-c Value] Filename" 
   exit $STATE_UNKNOWN 
fi 


### Zerlegung der Optionen 
while getopts c:w:h OPTION 2> /dev/null 
do if [ $OPTION = ?  ]; then echo "Falsche Option"; exit $STATE_UNKNOWN; fi 
   case "$OPTION" in 
     w) WARNING="$OPTARG"  ;; 
     c) CRITICAL="$OPTARG" ;; 
     h) echo "Sample: $0 -w 1000 -c 10000 /etc/termcap" 
        exit $STATE_UNKNOWN 
        ;; 
   esac 
done 

### Ist Filename Datei 
FILENAME=$(eval echo \${$#}) 
if [ ! -f "$FILENAME" ] 
   then echo "FILE UNKNOWN: $FILENAME gibt es nicht, oder ist keine Datei" 
        exit $STATE_UNKNOWN 
fi 

### Pruefung der Dateigroesse 
LENGTH=$(/bin/ls -l $FILENAME | tr -s ' ' | cut -d ' ' -f5) 
if [ $LENGTH -gt $CRITICAL ] 
   then echo "FILE CRITICAL: $FILENAME $LENGTH Bytes gross" 
        exit $STATE_CRITICAL 
   else if [ $LENGTH -ge $WARNING ] 
           then echo "FILE WARNING: $FILENAME $LENGTH Bytes gross" 
                exit $STATE_WARNING 
        fi 
fi 

echo "FILE OK: $FILENAME $LENGTH Bytes gross" 
exit $STATE_OK

Ist nur ein Beispiel, wie man eigene Sachen testen kann...
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.