Januar 2010 Archive

Normalerweise arbeitet Nagios ja nach dem Prinzip: "Ich bin der Server und Ich prüfe" (aktive checks). In der Konfiguration steht drin welche Test in welchem Zeitraum abgearbeitet werden müssen und wann benachrichtigt wird. So weit so gut.

Jetzt gibt es aber Situationen in denen das nicht geht. Zum Beispiel möchte man vielleicht prüfen ob ein lange laufender Prozess erfolgreich beendet worden ist. Oder aber der Nagios Server selber hat keinen Zugriff auf den Server. In meinem Fall hatte ich folgendes Szenario.

Mein Backupserver wird nachts geweckt (per wake on lan) und um eine bestimmte Uhrzeit started ein Prozess der per rsnapshot  verschiedene Backups macht. Danach schaltet sich der Server wieder ab. Ich würde gerne in Nagios sehen welchen Plattenplatz ich auf dem Backupserver noch frei habe. Aktive Checks gehen nicht weil ich nicht genau terminieren kann wann die Backups fertig sind. (Und nachts um 2.00 Uhr schaue ich auch nicht nach :-).

So siehts dann am Ende aus:201002-nagios-nsca-disk.gif

Generell gibts verschiedene Optionen. Ich habe mich für NSCA (Nagios Service Check Acceptor). Ein Dienst der Nagios Stati entgegen nimmt und an Nagios weiterleitet. Er muss auf dem Nagios Server erstmal installiert werden. Bei Gentoo ging das so:

emerge -av nagios-nsca
rc-update add nsca default
vi /etc/nagios/nsca.cfg  
  (ich habs nicht mehr genau parat aber die defaults waren ok - nur das password musste geänder werden)

So jetzt noch auf dem Nagios Server sagen das es einen passiven check gibt

vi /etc/nagios/services.cfg

define service{
        use                             generic-service-important
        active_checks_enabled           0              
        passive_checks_enabled          1
       host_name                       backup
       service_description             Volume-Backup
       contact_groups                  mail-admins-crit
       check_command                   check_dummy
       }

Dieser check_dummy hat mich etwas Nerven gekostet. Eigentlich brauchen wir keinen Check (weil der wird ja remote ausgeführt) aber die Syntaxprüfung verlangt einen. Also

vi /etc/nagios/checkcommands.cfg

define command{
        command_name    check_dummy
         command_line   ls
                   }

So - auf dem Sever ist alles ready. Jetzt müssen wir noch dem anderen Rechner (in diesem Fall mein Backup) sagen was zu tuen ist. Wie oben erstmal NSCA installieren:

emerge -av nagios-nsca

vi /etc/nagios/send_nsca.cfg  (verschlüsselung muss kongruent zu oben sein)

Das Plugin was wir brauchen muss noch auf den server und in ein preferiertes verzeichniss kopiert sein. Bei mir

/opt/c/check_disk

Wie immer erstmal den Test local probieren und schauen das das Ergebniss stimmt. Dann habe ich alles auf Basis dieses Threads in ein Script gepackt.

vi /opt/c/nagios/c-nsca-check_disk.sh

#!/bin/bash
send_nsca=/usr/lib/nagios/plugins/send_nsca
send_nsca_cfg=/etc/nagios/send_nsca.cfg
nagioshost=x.c.de
host=backup
service=Volume-Backup
plugin=/opt/c/check_disk
warn=70%
crit=90%
mountpoint='/dev/mapper/c--vg-backup'
output=`$plugin -m $mountpoint -w $warn -c $crit`
rc=$?
echo -e "$host\t$service\t$rc\t$output"|$send_nsca -H $nagioshost -c $send_nsca_cfg
exit 0

Bemerkung: ist natürlich alles wichtig aber auf jeden Fall muss man darauf achten das im Script "service=Volume-Backup" mit dem passiven Check auf dem Server übereinstimmt.

Dieses Script muss natürlich irgendwann laufen. Ich habs einfach in die start/stop scripts gepackt.

vi /etc/conf.d/local.start
vi /etc/conf.d/local.stop

/opt/c/nagios/c-nsca-check_disk.sh &>/dev/null
/opt/c/nagios/c-nsca-check_backup-date.sh &>/dev/null
 

(boah: ist das wieder lange geworden. hätte ich nicht gedacht. aber jetzt wenigstens für mich sauber niedergeschreiben)

Diese Woche in der Welt gelesen. Es ging um Artensterben und die Frage: welche Arten genau sterben denn da?

Nach den inzwischen mehr als fragwürdigen Methoden unserer Klimaforscher ein weiterer Fall von politisch angeheiztem Aktionismus. Die in der Vergangenheit am meisten verbreitete Untersuchung sagte einmal über das Artensterben

74 Arten pro Tag

Dann treffen sich dii G8 Umweltminister und machen daraus die eine neue Zahl. Klar 74 ist schon komisch und vor allem viel zu klein

150 Arten pro Tag

hört sich viel besser an und ist auch einfacher zu merken. Soweit die wohl inzwischen schon übliche politische Aufrundung.

Wenn man allerdings fragt: "Wer verschwindet da eigentlich?" scheint man nur ein Achselzucken zu bekommen. Man weiß es einfach nicht. Das Berechnungsverfahren wirkt abenteuerlich. Es geht so:


Für Inseln gibt es eine Theorie das bei Zerstörung von 90% des Lebensraums 50% der Arten sterben. Wie gesagt: Inseln, die Tiere können nicht ausweichen. Jetzt nimmt man den Verlust an Lebensraum in tropischen Regenwäldern (alle nicht auf einer Insel) und wendet diese Regel an. Toll nicht?

Ich will hier nicht das Problem verniedlichen aber dieser Ansatz scheint mir schon abenteuerlich. Sucht man nach den bekannten Verlusten so scheint es ein paaar Nullen weniger zu geben. Seit dem 15. Jahrhundert 785 Arten

Nur noch mal als Vergleich hoch gerechnet: auf die letzen 20 Jahre müssten es eine Million sein.

Wie gesagt: Wir müssen schon aufpassen mit unserer Umwelt vernüftig umzugehen. Aber willkürliche Zahlen zur Dramatisierung schaden und helfen nicht.

Google Analytics ist ein (noch) kostenloses Werkzeug zur Analyse und Optimierung des Zugriffs auf Webseiten. Aus meiner  Sicht ein weiterer Baustein in der Datensammelleidenschaft dieses Konzerns. Über den zugegebener Massen sehr erfolgreichen Suchdienst sammelt dieser Konzern jetzt auch noch das Surfverhalten der Nutzer auf den Webseiten selbst ein.

Es wird Ihre Adresse, die Verweildauer, Ihre Herkunft und Ihre  Aktivitäten auf der Website gespeichert. So weiß Google nicht nur das Sie nach bestimmten Begriffen gesucht haben. Nein - Google weiß danach auch noch was Sie wie lange auf einer Webseite gelesen haben. Und mit der IP Addresse ist das genau an Ihre Person verknüpfbar.

Es ist ja okay wenn Ich als Person entscheide, daß ich den Google Suchdienst nutze. Was ich aber überhaupt nicht OK finde ist das Webseiten oder Shopbetreiber mein Surfverhalten ungefragt an Google weiterleiten.

Das die eine oder andere kommerzielle Organisation das macht, naja das war zu erwarten. Das aber jetzt "Hinz und Kunz" das auf jeder belieben Website macht und in keinster Form den Begriff Datenschutz im Blickfeld hat - das stimmt mich nachdenklich.

Dabei gibt es Opensource Programme die es einem erlauben die zweifelsohne wichtigen Daten über die Nutzung der eigenen Webseite selber zu sammeln (z.B. Piwik) Sind natürlich nicht so schön aber erfüllen den Zweck auch. (Wird auch hier genutzt)

Wie kann man feststellen ob Google Analytics benutzt wird:

1. Links unten im Webbrowser taucht dann ganz kurz auf "google-analytics" auf

2. Unter "View - Page Source" kann man mal im ganzen html nach "google-analytics.com" suchen

Nicht nur, daß sie dabei meine Privatsphäre mißachten - Sie missachten auch noch die Nutzungsbedingungen von Google Analytics. Dort kann man eindeutig lesen:

Sie sind ferner verpflichtet, an prominenten Stellen Ihrer Websites eine sachgerechte Datenschutzpolicy zu dokumentieren (und sich an diese zu halten). Auch werden Sie alle zumutbaren Anstrengungen unternehmen, die Aufmerksamkeit der Nutzer Ihrer Website auf eine Erklärung zu lenken, die in allen wesentlichen Teilen wie folgt lautet:

„Diese Website benutzt Google Analytics, einen Webanalysedienst der Google Inc. („Google“). Google Analytics verwendet sog. „Cookies“, Textdateien, die auf Ihrem Computer gespeichert werden und die eine Analyse der Benutzung der Website durch Sie ermöglichen. Die durch den Cookie erzeugten Informationen über Ihre Benutzung dieser Website (einschließlich Ihrer IP-Adresse) wird an einen Server von Google in den USA übertragen und dort gespeichert. Google wird diese Informationen benutzen, um Ihre Nutzung der Website auszuwerten, um Reports über die Websiteaktivitäten für die Websitebetreiber zusammenzustellen und um weitere mit der Websitenutzung und der Internetnutzung verbundene Dienstleistungen zu erbringen. ....

Das heist, es muss auf der Webseite gut sichtbar stehen das man das Werkzeug benutzt.

Ich werde mal regelmäßig solche Webseiten anschreiben und Sie fragen warum Sie das so machen. Mal sehen was passiert

Niemand braucht es. Aber trotzdem ....


Der Nabaztag ist ein Gadget das man wirklich nicht braucht. Bei mir lag es in der Schublade (Herkunft nicht mehr nachvollziehbar aber Geld hatte ich dafür nicht ausgegeben).

In Anlehnung an eine Figur die bei "Sandmänchen" läuft hat es den Namen "Mifi"

Vorschaubild für mifi01.JPG



Wer mehr darüber wissen will kann hier was nachlesen. Oder hier ein Video. Kurz gesagt. Das Ding "redet" mit einem speziellen Server und kann so wichtige Dinge tun wie "Emails/RSS feeds" vorlesen oder mit ein paar Dioden lustig blinken. Außerdem kann es die Ohren bewegen. Man kann auch über eine API dem Nabaztag Befehle geben. z.B. Drehe das Ohr 3 mal und blinke rot grün. (oder so)


In meinem Fall hat es eine einfach Aufgabe bekommen. Es signalisiert uns, wenn  auf unsere Asterisk Telefonanlage eine Nachricht hinterlassen worden ist. (der letzte gravierende Fall von mangelndem WAF meiner Telefonanlage im Keller)


Hier die technischen Details:

Asterisk speichert seine Aufzeichnungen in bestimmten Verzeichnissen. Ein Dienst schaut alle 5 Minuten dort nach ob eine neue Datei abgelegt worden ist und wenn ja sendet es einen Befehl an den zentralen Nabaztag Server im Internet. Und von dort erfährt es mein "Hase".

Datei da=> Ohr hoch

Datei weg => Ohr runter.

Das ganze links und rechts für zwei verschiedene Anrufbeantworter im Hause.


#!/bin/bash
FILE=""
DIR_PRI="/var/spool/asterisk/voicemail/default/5/INBOX/"
DIR_1b3="/var/spool/asterisk/voicemail/default/6/INBOX/"
if [ "$(ls -A /var/spool/asterisk/voicemail/default/5/INBOX/)" ]; then
             # pos 0 ist senkrecht
                curl -o "/dev/null" -s "http://api.nabaztag.com/vl/FR/api.jsp?sn=seriennummer&token=geheim&posleft=0" &
     else
                curl -o "/dev/null" -s "http://api.nabaztag.com/vl/FR/api.jsp?sn=seriennummer&token=geheim&posleft=8" &
         fi
if [ "$(ls -A /var/spool/asterisk/voicemail/default/6/INBOX/)" ]; then
      curl -o "/dev/null" -s "http://api.nabaztag.com/vl/FR/api.jsp?sn=seriennummer&token=token&posright=0" &
        else
        curl -o "/dev/null" -s "http://api.nabaztag.com/vl/FR/api.jsp?sn=seriennummer&token=1260780059&posright=8" &
      fi

	

Eingetragen in crontab

*/5   *   * * *    /opt/c/tools/nabaztag-asterisk-voicemail-check.sh

Heutige Festplatten kommen von Haus aus mit Diagnoseeinrichtung daher. Leider werden die nur selten genutzt und dann ärgert man sich dass die Platte kaputt geht.  Nutzt man die Diagnosemöglichkeiten zum Beispiel mit smartmontools kann man die Vorwarnzeit deutlich verlängern und hat somit Zeit, ein Backup zu machen. Für  Nagios gibt es ein Plugin das diesen Dienst "anzapft" Check SMART status und auf die Service Übersicht bringt und den Nagios Warnungsmechanismus integriert. Hier meine persönliche Doku:

Die Datei downloaden und auf den Nagios Sever kopieren. (Ich halte alle meine "nicht Standard Plugins" in einem anderen Ordner)


cp check_smart /opt/c/nagios
cd /opt/c/nagios
chown nagios:nagios check_smart

Check_smart braucht root rechte: also Sudo

vi /etc/sudoers
nagios ALL=(ALL) NOPASSWD:/opt/c/nagios/check_smart

Erstmal unter der User nagios auf der Kommandozeile testen. Dann in

/etc/nagios/checkcommands.cfg

define command{
        command_name    check_smart
        command_line    sudo /opt/c/nagios/check_smart -i $ARG1$ -d $ARG2$
        }

und in
/etc/nagios/services.cfg für die verschiedenen Platten den Service definieren.

define service{
       use                             generic-service-important
       host_name                       mail
      service_description             SMARTD-SDC
       normal_check_interval          360
      check_command                   check_smart!scsi!/dev/sdc
                                         }
define service{
       use                             generic-service-important
       host_name                       mail
       service_description             SMARTD-HDA
       normal_check_interval          360
       check_command                   check_smart!ata!/dev/hda
       }

nagio-smartd.gif


 

Eigentlich hatte ich den Schlitten gestern schon wieder in den Keller gestellt. Und heute morgen lag Schnee!!!


Und auf die Frage:

"Soll ich Dich heute morgen mit dem Schlitten in die Schule bringen"

kam von meinem Sohn nur ein lautes

JA!!!!!

Und als wir die Brücke über die Strasse zur Autobahn überquerten war ich wirklich froh heute nicht Autofahren zu müssen :-)

20100125-schulweg-schnee-1.jpg

20100125-schulweg-schnee-2.jpg

Hier eine Dokumentation meiner MovableType 5.01 installation. Basiert im wesentlichen auf dieser Doku. Wie immer dient diese Doku mehr für meine Aufzeichung aber vielleicht hilfts ja noch einem anderen. Basis ist eine Debian Server.

Zuerst mal das Programm runterladen

cd /root/inst
mkdir mt
cd mt
wget http://www.movabletype.com/downloads/blogger/MT-5.01-de.tar.gz

Dann die Dateien installieren

cd /var/www/
mkdir webxx
cd webxx/
mkdir html
mkdir cgi-bin
mkdir logs
cd cgi-bin/
tar xzvf /root/inst/mt/MT-5.01-de.tar.gz
ln -s MT-5.01-de/ mt
mv mt/mt-static/ /var/www/webxx/html/
chmod 755 mt/*.cgi
cd /var/www/
chown www-data:www-data webxx/ -R


Jetzt den Webserver konfigurieren. (Details hängen natürlich von der jeweiligen Apache Konfiguration ab.)

Die Webserver Konfig soll folgendes erreichen.

admin.yoursite.de für den SiteMaster
www.yoursite.de für den normalen Zugriff.


vi /etc/apache2/sites-available/webxx-admin.de

<VirtualHost admin.yoursite.de:80>
        ServerAdmin admin@youraddress.de
        DocumentRoot /var/www/webxx/html
        <Directory />
                Order Deny,Allow
                Deny from all
        </Directory>
        <Directory /var/www/webxx/html>
                Options Indexes MultiViews
                AllowOverride none
                Order allow,deny
                allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /var/www/webxx/cgi-bin/
        <Directory "/var/www/webxx/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog  /var/www/webxx/logs/error.log
        LogLevel warn
</VirtualHost>


<VirtualHost www.yoursite.de:80>
        ServerAdmin admin@youraddress.de
        DocumentRoot /var/www/webxx/html
        <Directory />
                Order Deny,Allow
                Deny from all
        </Directory>

        <Directory /var/www/webxx/html>
                Options Indexes MultiViews
                AllowOverride none
                Order allow,deny
                allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /var/www/webxx/cgi-bin/
        <Directory "/var/www/webxx/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog  /var/www/webxx/logs/error.log
        LogLevel warn
</VirtualHost>

Jetzt das Herzstück

vi mt-config.cgi

CGIPath    /cgi-bin/mt/
AdminCGIPath http://www.yoursite.de/cgi-bin/mt/
# das folgende ist seeeehhrr wichtig"!!!!
StaticWebPath   /mt-static
StaticFilePath /var/www/webxx/html/mt-static
##### MYSQL #####
ObjectDriver DBI::mysql
Database webxx
DBUser webxx_admin
DBPassword yourpassword
DBHost localhost

Und jetzt die Datenbank.

mysql> create database webxx;
mysql> CREATE USER 'webxx_admin'@'localhost' IDENTIFIED BY 'yourpassword';
mysql> GRANT ALL ON webxx.* TO 'webxx_admin'@'localhost';


Enable Site Konfigurationen enablen.

a2ensite webxx-admin.de
a2ensite webxx-www.de
 

Und nun die MT Konfiguration. Erst der Check und dann die Konfig

http://admin.yoursite.de/cgi-bin/mt/mt-check.cgi => OK


webxx-mt-screen1.gif

webxx-mt-screen2.gif

webxx-mt-screen3.gif

Und nach der Installation

remove mt-check.cgi
 

Nagios bietet einem ja eine schöne Weboberfläche an um den Status der verschiedenen Services einzusehen. Nur habe ich nicht ständig einen Browser offen der mir die Übersicht zeigt. nagstamon_header_logo.gif
Zuerst habe ich ein Firefox Plugin verwendet. Das war auch nicht schlecht. Hatte aber den Nachteil/Vorteil das es immer startete wenn ich den Firefox starte. Da ich heufig ausserhalb meines privaten Netzes unterwegs bin musste ich das Plugin immer deaktiveren. Und dann vergass ich es zu aktivieren wenn ich wiede zu Hause war. Ich war auf der Suche nach einer andere Lösung dich einfach starten/stoppen konnte und nicht in den Browser integriert war.

Hier kam ich auf NagStaMon. Ein kleines Programm für Linux das sich in die Taskleiste integriert.
nagstamon.jpg

 
(Gibts auch für Win/Mac)

Das habe ich auch noch nicht erlebt. "Unser Büro hat zu. Schicken Sie Ihre Email noch mal wenn wir wieder aufhaben"

 

Ce mail ne sera pas pris en considération !
Le bureau est actuellement fermé.
Merci de nous renvoyer un nouveau mail à partir du 02 janvier 2010
Le Camp du Domaine

Diese Mail kann nicht bearbeitet werden !
Das Büro ist geschlossen.
Bitte schicken Sie erneut eine Mail ab 02 Januar 2010.
Danke
Le Camp du Domaine

This mail will not be dealed !
The office is closed actually.
Please write a new mail from the 02th january 2010
Thanks
Camp du Domaine

Heute morgen hat mich folgende Nachricht in meiner täglichen Rootkithunter Statusmail in Aktion versetzt.

Warning: The file properties have changed:
         File: /usr/bin/ldd
         Current inode: 78091342    Stored inode: 78097442
         Current file modification time: 1263516539
         Stored file modification time : 1231092667

Für diejeningen unter Euch die nicht wissen was das ist. Rkhunter ist ein Werkzeug welches nach Hinweisen auf Serverangriffe oder Einbrüche sucht. Pflichtprogramm für jeden der einen Server im Internet betreibt.

Rootkithunter sagt mir also: Ein wichtiger Befehl wurde geändert. Eine Mail weiter hat mich meine Systemaktalisierung darauf aufmerksam gemacht das Programme aufgrund von Securityupdates aktualisiert wurden

RON-APT RUN [/etc/cron-apt/config]: Wed Jan 20 04:00:02 CET 2010
CRON-APT SLEEP: 2195, Wed Jan 20 04:36:37 CET 2010
CRON-APT ACTION: 3-download
CRON-APT LINE: /usr/bin/apt-get upgrade -u -y
Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be upgraded:
  libc6 libc6-dev locales
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 12.4MB of archives.
After this operation, 434kB of additional disk space will be used.
Get:1 http://security.debian.org lenny/updates/main libc6-dev 2.7-18lenny2 [3388kB]
Get:2 http://security.debian.org lenny/updates/main libc6 2.7-18lenny2 [4555kB]
Get:3 http://security.debian.org lenny/updates/main locales 2.7-18lenny2 [4490kB]

Das Programm LDD ist teil von libc und somit ist die Warnung berechtigt aber nicht wichtig.

rkhunter --propupd

aktualisiert die rootkit hunter Datenbank und sagt rkhunter das die Änderung in Ordnung ist.

Ich verwende Nagios um verschiedene Dienste innerhalb meiner IT Landschaft zu überwachen. (IT Landschaft hört sich schon monströs an trifft es aber am besten.) Da sind zum Beispiel

  • Ein Server im Internet mit Shop/Blogs/Kindergartenwebsite
  • Mein interner Hausserver mit Telefonanlage Asterisk, Videorecorder  VDR und den anderen üblichen Dingen wie File/Print/Mail
  • Backup Server

Alles auf Basis von Linux (meistens Gentoo aber immer mehr Debian)

Ausschlaggebend war die Überwachung des Internet Servers um sicherzustellen das dort nix schiefgeht. Und wenn man es schon hat dann kann man auch noch einige andere nette Dinge tuen. Zum Beispiel kann man einstellen wann man eine Warnung über zu wenig Hauptspeicher oder Festplattenplatz bekommt. Man kann Schwellenwerte festlegen wann man eine SMS bekommt usw.

 

nagios-1.gif