Icinga/Nagios Ampel – Fortschritt und Alteisen

Wir haben schon bei einigen Kunden mit Erfolg und großer Akzeptanz im Großraumbüro die Nagios Ampel eingesetzt.
Heute war ich auf dem regionalen Schrottplatz und habe feuchte Augen bekommen. Dort ist zwischen alten Autos und Baumaschinen auch Industrietechnik gelandet. An der Anlage die ich dort fand, war ebenfalls eine Ampel angebracht. Im Gegensatz zu der in unserem Shop (im Moment sogar als Ausstellungsstück zum Sonderpreis) erhältlichen Ampel fehlt der Ampel auf dem Schrottplatz aber der USB Anschluss und das Icinga als Backend. Vermutlich wurde die Technik wegen der harten Verdrahtung und der rudimentären Monitoring- und Steuerkonsole ausgemustert.
Ich hoffe dass dort wo die Anlage zuvor im Einsatz war, nun ein System eingesetzt wird, welches auf Open Source Lösungen setzt. Bei so einer Umstellung hätten wir natürlich helfen können. In diesem Fall war Netways, soweit ich weiss, allerdings nicht beteiligt.

Die Puppen vorangehen lassen

RWE-LogoAuch unser Kunde RWE Dea setzt Puppet zur Konfiguration seiner Server ein. Im Jahr 2011 ist die Verbreitung des open source Werkzeugs für IT systems management schon deutlich gewachsen. Das war schon auf unserer Open Source Data Center Konferenz 2011 zu merken, und schlägt sich seit dem auch in den Schulungs-/Beratungsaufträgen deutlich nieder.
Die nächste Puppet Schulung ist vom 27. – 29. März 2012 in Nürnberg. Ich würde mich freuen den ein oder anderen von euch dort zu sehen.

Ich durfe letztens für ein Training in die Hansestadt an der Elbe reisen und hatte beim Anflug sehr gutes Wetter. Das habe ich bei der Gelegenheit im Bild festgehalten. In Hamburg war zum Glück nicht gerade Messe – somit war es kein Problem ein Hotel zu finden, dafür gabs dann aber einen Feueralarm bei dem sich die Gäste des Amedia Hotels kennenlernen konnten. Abgebrannt ist glücklicher Weise nichts. Allerdings war die Nacht dadurch etwas kürzer.

Auch das geflügelte Pferd nutzt Icinga

Bei unserem Kunden Pegasus GmbH wird Icinga zur Überwachung eingesetzt. So weit so normal. Um die damit gesammelten Performance Daten aber weiterverarbeiten zu können, war es wichtig von der Speicherung in RRD Dateien zur Datenhaltung in einer SQL Datenbank zu wechseln. Diesen Schritt haben wir inzwischen vollzogen. Wir werden weiter Erfahrungen sammeln und zu gegebener Zeit über diese hier berichten.
Freut Euch auf the next big thing ;-).

Neues Check-Plugin für Gude Sensoren

Die Gude Sensoren, die Sie bei uns im Shop bekommen können, haben ein neues Plugin bekommen.
Es werden folgende Geräte zur Überwachung von Temperatur, Luftfeuchtigkeit und Strom/Spannung unterstützt:

  • expert net control 2101/2151
  • expert net control 2120 2100/2150
  • expert sensor box 7212 (noch nicht verfügbar)
  • Gude Stromleisten inkl. Verbrauchsmessung (noch nicht verfügbar)


Das Plugin (check_gude.pl) für Nagios/Icinga ist hier zu finden.
Beispiele für den Aufruf des Plugins:
check_gude.pl -H sensorbox -k Temp1 -w 15 -c 25
may give you:
expert sensor box 7212: WARNING – WARNING: Temp1=22.9C (w:15, c:25)
You may check multiple values at a time:
check_gude.pl -H sensorbox -k Temp1 -w 15 -c 25 -k Hygro1 -w 10 -c 20
with the following result:
expert sensor box 7212: CRITICAL – CRITICAL: Hygro1=39.1% (w:10, c:20) WARNING: Temp1=22.9C (w:15, c:25)
Further on you may rename keys:
check_gude.pl -H sensorbox -k Temp1 -w 15 -c 25 -k Hygro1 -w 10 -c 20 -l Humidity
with leads to this:
expert sensor box 7212: CRITICAL – CRITICAL: Humidity=39% (w:10, c:20)
You can give it an [other] unit
check_gude.pl -H sensorbox -k Temp1 -w 15 -c 25 -u °
may give you:
expert sensor box 7212: WARNING – WARNING: Temp1=22.9° (w:15, c:25)
And you can multiply it by a factor:
check_gude.pl -H sensorbox -k Temp1 -w 15 -c 25 -u ” -f 1
may give you:
expert sensor box 7212: CRITICAL – CRITICAL: Temp1=229 (w:15, c:25)
note: because there is a default factor of 0.1 for the temperature,
a factor of 1 leads to this (SNMP gives tenth of a degree often).
Some more examples:
check_gude.pl -H netcontrol -k Temp1 -w 11 -c 21 -k Temp2 -w 12 -c 22
expert net control 2151: CRITICAL – CRITICAL: Temp1=-999.9C (w:11, c:21) WARNING: Temp2=21C (w:12, c:22)
there is no sensor connected for Temp1.
Test if there is something connected to the Input1:
check_gude.pl -H nc2i2o -k Input1 -w 1: -c 1:
expert net control 2i2o 2100/2150: OK – OK: Input1=1 (w:1:, c:1:)
check_gude.pl -H nc2i2o -k Input1 -w 1: -c 1:
expert net control 2i2o 2100/2150: CRITICAL – CRITICAL: Input1=0 (w:1:, c:1:)
Test if there is nothing connected to the Input1:
check_gude.pl -H nc2i2o -k Input1 -w :0 -c :0
expert net control 2i2o 2100/2150: OK – OK: Input1=0 (w::0, c::0)
check_gude.pl -H nc2i2o -k Input1 -w :0 -c :0
expert net control 2i2o 2100/2150: CRITICAL – CRITICAL: Input1=1 (w::0, c::0)
Everything between 215V and 235V is OK:
check_gude.pl -H powercontrol -k Voltage1 -w 215:235 -c 210:240
Expert Power Control 1100: OK – OK: Voltage1=230V (w:215:235, c:210:240)
Test port state:
check_gude.pl -H powercontrol -k PortState1 -w :0 -c :0
Expert Power Control 1100: CRITICAL – CRITICAL: PortState1=1 (0=off, 1=on) (w::0, c::0)

OSMC2011 Eröffnung

Die diesjährige Open Source Monitoring Conference ist eröffnet. Bernd hat die Teilnehmer auf die kommenden Vorträge und die Abendveranstaltung eingestimmt und die Gelegenheit der Eröffnungsrede genutzt um kurz InGraph vorzustellen.
Die Vorträge laufen wie immer parallel in zwei Sälen. Den ersten Vortrag im größeren der beiden, “Performance-Vergleich von Nagios Monitoring Lösungen” von Christoph Siess habe ich mir angehört.
Es werden die aktuellen Monitoringlösungen/Komponenten mit Nagiosbezug (Nagios, Icinga, Shinken, mod_gearman, Merlin) im Hinblick auf ihre Performance und Skalierbarkeit verglichen.
Ausgeklammert wurden der embedded Perl Interpreter, und Performance Daten.
Die Ergebnisse sind sehr interessant:
– beim Nagios 3.2.1 steigt die Latenz ab einer bestimmten Zahl von Checks sprunghaft an. Die Dauer der Checks wirkt sich merklich auf die Latenz aus. Störungen (also nicht OK Checks) wirken auch negativ auf die Latenz. (Latenz bei 2200 checks 7s)
– im Vergleich dazu Nagios mit mod_gearman (Latenz 0.5s)
– Shinken (Latenz 0.9s)
– Icinga, Nagios und Merlin verhalten sich nahezu identisch.
– Merlin profitiert von weiteren Nodes zur Lastverteilung.
– mod_gearman profitiert von Worker Prozessen die die Checks ausführen
Leider bleiben einige Fragen offen.
– Wie wirkt sich das anhängen der NDO bzw. IDO aus?
– Welche Wirkung haben Performance Daten?
Wir freuen uns auf zwei spannende Tage hier in Nürnberg

Die Post ist viel elektronischer als mancher denkt

Etwas abseits der Fachwerkhäuser im Zentrum von Einbeck werkelt IT Infrastruktur im Rechenzentrum die überwacht werden muss damit auch die nicht elektronische Post schnell ihr Ziel erreicht. Dafür haben wir mit dem Kunden eine gespiegelte Monitoringumgebung aufgesetzt die vom Icinga Core über Icinga Web, LConf, Bussiness Process View und Grapher alles beinhaltet, was das Leben des Admin angenehmer macht. Ausserdem haben wir so auch das Reporting ermöglicht um dem Management einen Überblick zu verschaffen. Der Kunde hat uns dabei geholfen unangenehme Falten glatt zu ziehen und das Beste aus der Gesamtlösung heraus zu holen. Wir freuen uns auf die weiter gute Zusammenarbeit im Support und weitere gute Projekte in Zukunft.

Wenn das MacBook zu heiß ist – cpulimit.sh

Ich mag laute Hardware nicht. Und ich fand es gut, dass mein iBook mit 600MHz PowerPC G3 Prozessor aus dem Jahr 2001 nur im absoluten Notfall den Lüfter eingeschaltet hat. Auch mein MacBook Pro mit 2,4GHz Intel Core 2 Duo Prozessor war im Normalfall nicht zu hören.
Aber mein neues MacBook Pro mit 2,2GHz Intel Core i7 erdreistet sich, bei verschiedenen Gelegenheiten, in den “Jet-mode” zu gehen. Die Ursache ist dann gern mal der Indexer für Spotlight (metadata server – mds) oder ein Video Player (video lan client – vlc). Beide brauchen eigentlich nicht mit voller Power zu laufen um meinen Ansprüchen gerecht zu werden. Ausserdem braucht man meist auch die dedizierte Grafikkarte nicht. Die kann man aber Dank gfxCardStatus einfach abschalten. Achtung, nicht vergessen wieder anzuschalten, wenn man den Beamer dranhängt!
Apple hat leider keine Möglichkeit vorgesehen die CPU zu drosseln um weniger Strom zu verbrauchen und somit den Akku und das Gehör zu schonen. Todtraurig!
Nice ist auch keine Lösung, weil ja dennoch die Power genutzt wird die zur Verfügung steht.
Aber ich habe etwas gefunden was an dieser Stelle weiterhelfen kann: cpulimit. Das ließ sich aber unter Lion nicht compilieren. Es gibt da aber noch diese Variation davon.
An der Shell Variante habe ich ein wenig gefeilt. Nun bekommt man eine Liste der CPU hungrigen Prozesse zur Auswahl und den Erstplatzierten als Vorauswahl.
Das Ergebnis sieht dann so aus:

$ sudo ~/bin/cpulimit.sh
Password:
  This script will throttle a chosen process as you like it.
  Therefore your cpu runs cooler - hopefully.
Chose which process to throttle:
 PPID   PID USER            %CPU %MEM STARTED      TIME     STIME COMMAND
    1    66 root            25,5  5,1 Do08am   73:25.42  32:24.31 mds
  273   436 bschmidt        23,1  0,1 Do08am    1:20.18   0:13.72 Folder Actions Dispatcher
    1 19304 root            15,3  0,1 Sa03pm   62:40.11  51:14.03 activitymonitord
  273 91519 bschmidt        14,6  0,3  7:57pm   0:06.47   0:02.17 mdworker
    1    12 _mdnsresponder  12,6  0,0 Do08am   26:20.00  19:02.96 mDNSResponder
  273 91189 bschmidt        11,6  0,4  7:55pm   0:06.54   0:02.21 mdworker
  273 91520 bschmidt        11,3  0,3  7:57pm   0:06.48   0:02.17 mdworker
  273 91518 bschmidt         9,2  0,3  7:57pm   0:06.36   0:02.14 mdworker
  273 13471 bschmidt         8,7  3,6 Fr02pm  101:01.25  22:25.71 Google Chrome
Which process ID (PID) [guess: 66]?
Chosen:
  PID USER  %CPU %MEM STARTED      TIME COMMAND
   66 root  21,9  5,1 Do08am   73:26.43 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds
Sleep time in seconds (e.g 0.5 or 1 …) [default: 0.5]?
Run time in seconds (e.g 0.5 or 1 …) or percent [default: .5000 = 50%]?
OK. I will throttle PID 66 now and dislay processinfo every 20 seconds …
  PID USER  %CPU %MEM STARTED      TIME COMMAND
   66 root  40,5  4,7 Do08am   73:34.02 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds
  PID USER  %CPU %MEM STARTED      TIME COMMAND
   66 root  32,7  4,8 Do08am   73:34.91 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds
  PID USER  %CPU %MEM STARTED      TIME COMMAND
   66 root   0,0  4,8 Do08am   73:35.15 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds
^C
*** Ouch! Stop throtteling of PID 66. Exiting ***

Mit diesem Script ist es ein Leichtes, Prozesse ausser Rand und Band wieder einzufangen. Erstaunlicher Weise sogar den Video Player, wenn man nur die sleep time kurz genug wählt.
Da das Script nicht lang ist, stell ich es hier einfach mal rein:

#! /bin/bash
# Description:
#
# If you want to decrease the CPU demands for an application
# you can use this very simple and ugly "hack".
# I use it when I convert videos on my MacBook Pro
# to prevent it from getting to warm. Even if the CPU is IDLE this hack
# will prevent the application to use the CPU during Sleep Time
# (in contrast to renice/nice commands which will take all IDLE time).
# This means the conversions will take longer time, but I
# don't care because I run it at night.
#
# There is similar c program for Linux called cpulimit, but it wont
# compile on my Mac.
#
# Usage:  sudo ./cpulimit.sh
#
#################################
# config
sleeptime_default=0.5   # in seconds
runtimep_default=50     # in percent (50 = same as sleeptime)
reporttime=30           # report every x seconds while running
# PROCESSLISTformat: pid has to be on the second position
PROCESSLISTformat="ppid,pid,user,%cpu,%mem,start,cputime,stime,command"
#PROCESSLISTformat="ppid,pid,user,%cpu,%mem,start,cputime,stime,rss,vsz,cpu,re,wq,wqr,stat,nsigs,command"
#################################
# dont change anything below here
pid=""
scriptuser=$(id -u)
# run if user hits control-c
control_c()
{
  echo ""
  if [ "$pid" != "" ]; then
    echo -en "\n*** Ouch! Stop throtteling of PID $pid. Exiting ***\n"
    kill -SIGCONT $pid
  fi
  echo ""
  exit $?
}
# trap keyboard interrupt (control-c)
trap control_c SIGINT
pidstring()
{
  # takes pid as argument
  ps -p $1 -w -o pid,user,%cpu,%mem,start,cputime,command 2>/dev/null
}
isnumber()
{
  if [[ "$1" =~ ^[0-9]*([.][0-9]+)?$ ]] ; then
    return 0
  else
    return 1
  fi
}
#################################
# main
cat << EOF
  This script will throttle a chosen process as you like it.
  Therefore your cpu runs cooler - hopefully.
EOF
if [ "$scriptuser" != "0" ]; then
cat << EOF
  You're not root!
  If you want to controll processes that you dont own,
  please run via sudo.
EOF
fi
PIDSTRING=""
until [ "$PIDSTRING" != "" ]; do
  #PROCESSLIST=$(ps -r -A -f -S | head)
  if [ "$scriptuser" != "0" ]; then
    PROCESSLIST=$(ps -r -u $scriptuser -S -c -o $PROCESSLISTformat 2>/dev/null)
  else
    PROCESSLIST=$(ps -r -A -S -c -o $PROCESSLISTformat 2>/dev/null)
  fi
  if [ "$PROCESSLIST" = "" ]; then
    echo -en "\n*** Sorry, ps dont work as expected on $(uname). Exiting ***\n\n"
    exit 1
  else
    PROCESSLIST=$(echo "$PROCESSLIST" | head)
  fi
  echo -en "\nChose which process to throttle:\n$PROCESSLIST\n"
  PID_GUESS=$(echo "$PROCESSLIST" | head -2 | tail -1 | awk '{print $2}')
  echo -n "Which process ID (PID) [guess: $PID_GUESS]? "
  read pid
  if [ "$pid" = "" ]; then
      pid=$PID_GUESS
  fi
  # test if $pid is valid
  PIDSTRING=$(pidstring $pid)
  if [ "$?" -eq "0"  ]; then
    echo -en "\nChosen:\n$PIDSTRING\n"
  else
    echo -en "\n$pid is not a valid PID for a running process.\n"
    pid=""
  fi
  echo -en "\n"
done
sleeptime=""
until [ "$sleeptime" != "" ]; do
  echo -n "Sleep time in seconds (e.g 0.5 or 1 …) [default: $sleeptime_default]? "
  read sleeptime
  if [ "$sleeptime" = "" ]; then
    sleeptime=$sleeptime_default
  fi
  isnumber $sleeptime || sleeptime=""
done
#echo "sleeptime $sleeptime"
runtime=""
until [ "$runtime" != "" ]; do
  runtime_default=$(echo "scale=4;$sleeptime*$runtimep_default/(100-$runtimep_default)"|bc)
  echo -n "Run time in seconds (e.g 0.5 or 1 …) or percent [default: $runtime_default = $runtimep_default%]? "
  read runtime
  if [[ "$runtime" =~ ^([0-9]*([.][0-9]+)?)%$ ]] ; then
    runtimep_default=${BASH_REMATCH[1]}
  fi
  if [ "$runtime" = "" ]; then
    runtime=$runtime_default
  fi
  isnumber $runtime || runtime=""
done
#echo "runtime $runtime"
# now begin throttle
throttletime=1000000
looptime=$(awk "BEGIN { printf \"%.0f\\n\", ($sleeptime+$runtime)*100 }")
echo "OK. I will throttle PID $pid now and dislay processinfo every $reporttime seconds … "
((reporttime=$reporttime*100))
while true
do
  if [ $throttletime -ge 500 ]; then
    throttletime=0
    PIDSTRING=$(pidstring $pid)
    echo "$PIDSTRING"
  fi
  kill -SIGSTOP $pid || control_c
  sleep $sleeptime
  kill -SIGCONT $pid || control_c
  sleep $runtime
  throttletime=$(($looptime+$throttletime))
done

Backups mit TimeCapsule und Drobo

Vor inzwischen zweieinhalb Jahren schrieb ich hier über meine Drobo mit DroboShare. Inzwischen hat sich mein Anspruch leicht gewandelt. Diesem wurde das alte Setup nicht mehr gerecht. Also habe ich was geändert. Vielleicht interessiert es euch ;-).
Backups vom MacBook via WLAN auf die Drobo haben bis Lion gut funktioniert. Die Mediathek (iPhoto und iTunes) via WLAN auf der Drobo nicht. Also hatte ich die Mediathek lokal am Mini auf der externen Platte und via TimeMachine als Backup auf der Drobo. Das Setup hat mir nicht so 100% gefallen, weil die Platte einen Lüfter hatte. Aber der war nicht oft an und so war es dann doch ganz OK. Jedenfalls waren meine Daten sicher. Allerdings war es schon recht zäh wegen des 802.11g Netzes das die alte Fritzbox aufgespannt hat. Vom Konzept der Drobo – einfach SATA Platten beliebiger Größe für BeyondRAID einsetzen und die “absolutely plug and play experience” bekommen, bin ich nach wie vor begeistert. Die DroboShare war zwar irgendwie cool – ist ja schliesslich ein Linux drauf, aber genutzt hab ich das dann doch nicht wirklich. Zum crosscompile war ich mangels Notwendigkeit (keine Applikation derer es dringend bedurft hätte) nach Feierabend nicht mehr motiviert.
Aber nun kam Lion und TimeMachine via afp und DroboShare ging nicht mehr. Es werden Teile benötigt die im alten Netatalk nicht drin sind. Die Motivation nun doch das crosscompile zu beginnen war aber immer noch nicht da. Nicht ganz unverständlich wird  BackMyFruitUp auch nicht mehr weitergepflegt – auch Jon Stevens fehlt die Motivation. Und die TimeCapsule ist ja nach wie vor nicht redundant ausgelegt und daher solo als Alternative auch nicht ganz passend.

Da hab ich mir dann gedacht, beides zusammen ist vielleicht der Schlüssel zum Glück. Die Drobo als externe Platte an die TimeCapsule und darauf dann die Backups. Das hätte dann auch den positiven Effekt das WLAN (802.11n) zu beschleunigen. Also hab ich mir eine TimeCapsule gekauft. Backups gehen nun deutlich schneller und funktionieren auch unter Lion wieder. Die Mediathek ist zwar immer noch lokal (und das wird wegen der Zugriffszeiten auch so bleiben), aber in dem Zuge auf eine lüfterlose externe 2½” Platte umgezogen.
Ausserdem hab ich noch einen Mehrwert von dem ich zwar schon gelesen hatte, der mir aber nicht bewusst war: Wake on WLAN. Die Freigaben (Screensharing, iTunes, Shares) vom Mini sind, via Proxy über die TimeCapsule auch wenn der Mini schläft, sichtbar und der Mini wird automatisch von der TimeCapsule geweckt wenn ich darauf zugreifen will. Sehr schön.
Das ganze hat seinen Platz weiter in der Kammer weil die erste Generation der Drobo doch recht laut ist wenn die Platten sich drehen und der Lüfter läuft.

Kartenzahlungen abwickeln und Püppchen tanzen lassen


Nicht was Sie denken! Hier geht es um Open Source Systems Management und professionelle Zahlungslösungen. Unser Kunde Wirecard nutzt Puppet und genau darum ging es in diesem Projekt. Positives Feedback bei Schulungen und zufriedene Gesichter im Consulting machen einfach Spaß! Nur München zur Messezeit ist wenig entspannend. Da sollten wir beim nächsten mal besser acht geben.

Dieses Internet ist überall.

Und Nagios auch! Und bald Icinga. Ich habs wieder gesehen als ich bei Aida war.
AIDAWer denkt schon an Überwachung wenn von Kreuzfahrten die Rede ist? Ich denke jedenfalls an Palmen oder Eisberge oder Essen. Jedenfalls nicht unbedingt an Computer. Aber auch auf Kreuzfahrtschiffen muss die IT-Infrastruktur laufen. Am besten ohne Unterbrechungen. Um so etwas zu erreichen, ist es besser ein Auge darauf zu haben. Da hat man bisher gern Nagios genommen. So auch Aida Cruises. Nicht nur im Hauptsitz in Rostock, sondern auch in den Aussenstellen und auf den Schiffen. Die Konfiguration soll doch aber besser Zentral erfolgen. Und die Checkergebnisse will man doch auch ganz gern Standortübergreifend im Auge behalten. Das geht inzwischen mit Icinga und LConf noch ein wenig besser.
Wenn man die Monitoringergebnisse von den Schiffen auf den sieben Weltmeeren via Satellitenverbindung einsammelt um im Headquarter den Überblick zu behalten, bekommt das Wort von den Monitoringsatelliten eine neue Dimension.
Übrigens ist Rostock eine sehr schöne Stadt und nicht nur wegen guter Projekte, sondern auch touristisch eine Reise wert! Vom 11. bis 14. August ist wieder Hanse Sail in Rostock und Warnemünde. Wer also noch nichts vor hat…