Grok Debugger

So kurz vor dem Wochenende möchte ich euch eine Webseite vorstellen die mir schon einige Tage Lebenszeit gespart hat: Der Grok Debugger!
Da ich immer wieder mit erstaunen feststellen muss das nur sehr wenige diese Seite kennen, sei sie hiermit auf unserem Blog verewigt 🙂
Solltet ihr nicht wissen welche tollen Sachen man mit Grok anstellen kann müsst ihr unbedingt mal in unserem Elastic Stack Training vorbei schauen 😉

 

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

Icinga 2 API Cheat Sheet

Zum Wochenende möchte ich euch meine fünf “most used” API-Aufrufe in einem Blogpost verewigen:
1) Testen des Logins
Bevor ihr jetzt alle lacht weil diese Zeile in der Doku sehr gut zu finden ist, ja, ich habe die dort raus kopiert. Warum? Weil sie wichtig ist! Egal ob ihr nur ganz einfach den Icinga Director installiert oder komplexe Automatismen bauen möchtest, viele (ja, seeeeeehr viele!) scheitern schon an der sehr einfachen Grundeinrichtung der API. Deshalb: Bitte vor Verwendung testen!
/usr/bin/curl -k -s -u 'root:icinga' https://localhost:5665/v1
2) Status der Endpoints
Ein sehr beliebter Aufruf beim Betrieb von Clustern bzw. Endpoints
/usr/bin/curl -k -s -u root:icinga 'https://localhost:5665/v1/status/ApiListener' | jq
3) Anzeige der Service-Check result Details
Ihr kennt das sicher. Euer neu eingerichteter Service check macht nicht das was er soll. Ihr habt mühsam das Command zusammen gebaut und irgendetwas ist in der Definition schief gelaufen. Im Output seht ihr beim Attribut “command” exakt auf welche Weise Icinga 2 das Command zusammen baut und ausführt 😉
/usr/bin/curl -k -s -u root:icinga 'https://localhost:5665/v1/objects/services?service=test-host-01!test-service-01&attrs=name&attrs=last_check_result'|jq
4) Filtern nach Customvars
/usr/bin/curl -k -s -u 'root:icinga' -H 'X-HTTP-Method-Override: GET' -X POST 'https://localhost:5665/v1/objects/hosts' -d '{ "filter": "host.vars.os == os", "filter_vars": { "os": "Linux" } }' | jq
5) Anzeige aller Services die unhandled sind und weder in Downtime, noch acknowledged sind
/usr/bin/curl -k -s -u 'root:icinga' -H 'X-HTTP-Method-Override: GET' -X POST 'https://127.0.0.1:5665/v1/objects/services' -d '{ "attrs": [ "__name", "state", "downtime_depth", "acknowledgement" ], "filter": "service.state != ServiceOK && service.downtime_depth == 0.0 && service.acknowledgement == 0.0" }''' | jq

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

Debugging mit Docker

docker
Docker ist uns allen als leichtgewichtige Lösung bekannt mit deren Hilfe man Anwendungen in Containern bereitstellen kann. Ist man etwas kreativ, kann man mit Docker aber viel mehr “verbrechen”. So kann man beispielsweise Docker sehr gut zum debuggen von Applikationen verwenden.
Jetzt fragt ihr euch sicher: “Was ist den bei dem kaputt? Zum debuggen brauch ich in 90 % aller Fälle eine Konsole”. Aber warum den nicht!? Es ist zwar gegen die Idee von Docker, aber man kann damit natürlich auch einen kleine Debugging-Container mit SSH betreiben.
 
 
Hier ein kurzes Beispiel in Form eines Dockerfiles:
FROM debian:8.4
MAINTAINER $your_name $your_email


# install needed packages
RUN apt-get update && apt-get install -y openssh-server rsync rsnapshot vim git sudo ntpdate ethtool screen dnsutils shorewall curl unzip telnet net-tools ntp ntpdate


# prepare root account and login
RUN mkdir /var/run/sshd

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile


# prepare user
RUN groupadd -g 10000 $your_name
RUN useradd -g 10000 -u 10000 -s /bin/bash -m $your_name
RUN mkdir /home/$your_name/.ssh && chmod 750 /home/$your_name/.ssh && chown $your_name. /home/$your_name/.ssh
RUN echo "<$your_ssh_key>" > /home/$your_name/.ssh/authorized_keys && chmod 600 /home/$your_name/.ssh/authorized_keys && chown $your_name. /home/$your_name/.ssh/authorized_keys
RUN echo "$your_name ALL=NOPASSWD: ALL" > /etc/sudoers.d/$your_name && chmod 640 /etc/sudoers.d/$your_name


# map ssh port and run ssh
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

Wenn ihr jetzt alle $your_name durch euren Benutzernamen ersetzt (Variablen funktionieren bei Docker leider nicht in der RUN-Umgebung) erhaltet ihr ein aktuelles Debian 8.4 mit einem SSH Zugang. Dieses Dockerfile mit SSH kann man nun z. B. sehr einfach um Icinga2 Pakete erweitern. Etwas weiter gesponnen könnte man noch verschiedene Betriebssystemversionen oder die Auswahl Icinga2 Stable oder Snapshot mit einbauen.
Alles in allem erhält man einen sehr leichtgewichtigen Container der das Debuggen ermöglicht, der sehr schnell provisioniert ist und man mit der entsprechenden Storage Config sogar anwendungsspezifische Konfigurationen und Dateien mit schleppen kann.

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

Foreman/Puppet vs. Gnome – Einstellungen automatisieren

foreman_small
Der Gnome Desktop ist prinzipiell eine sehr schöne Software, da durch seine Hilfe die Bedienung eines Linux Betriebssystems als Desktop deutlich einfacher wird. Ähnlich zu Windows Systemen können Einstellungen durch wenige Klicks mit der Maus getätigt werden.
Aber wie Automatisiert man diese Einstellungen? Und warum will man das? Für alle Teilnehmer unserer Schulungen stellen wir Notebooks zur Verfügung. Diese sind je nach Schulung (Icinga, Puppet, Ceph, usw.) unterschiedlich vorbereitet. Daher betanken wir alle Notebooks vor jeder Schulung mit unserem Foreman neu. Nach der frischen Grundinstallation müssen Einstellungen wie z. B. das Keyboard Layout dementsprechend neu konfiguriert werden.
Keyboard Layout ändern? Ja und? – Genau das dachte ich mir auch. Kann doch nicht so schwer sein…
Aber die Praxis belehrt eines besseren. Ändert man mit Puppet die /etc/default/keyboard ist dies bei unserem Debian 8.4 zwar theoretisch global gültig (z. B. für den Login-Screen), die einzelnen Benutzer-Accounts (mit Gnome) interessiert dies aber herzlich wenig. Wurde das Grundsystem in englischer Sprache installiert, ist das Tastaturlayout englisch und das völlig unabhängig von den Einträgen der /etc/default/keyboard.
Aber nichts leichter als das. Mit einem beherzten gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'de')]" lassen sich solche Einstellungen schnell korrigieren. Pustekuchen! Das Kommando gsettings verlangt einen Execute über eine grafische Oberfläche, was Puppet und sein Manifest ziemlich uncool finden.
Rätsels Lösung ist in diesem Fall der für meine Begriffe etwas “dreckige” Workaround:
/usr/bin/sudo -u training dbus-launch --exit-with-session gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'de')]"
Tja, wer hätte das gedacht. Es ist nicht sonderlich hübsch, funktioniert aber tadellos. In Zukunft kümmere ich mich lieber wieder um Serversysteme und behaupte nie wieder das die Umstellung des Keyboard Layouts nicht so schwer sein kann 😉

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

Jobs Jobs Jobs…

Team
…und damit meine ich nicht Steve! Wer diesen schlechten Spruch kapiert hat, sollte sich direkt mit einer E-Mail an jobs@netways.de bewerben 😉
Aber mal zum ernst der Sache: In diesem Blog wird viel zu selten drauf aufmerksam gemacht, das wir quasi durchgehend neue Kollegen suchen. Egal ob San Francisco, Zürich, Brüssel oder einfach Deutschlands Großstädte, als reisebegeisterter Consultant kommt man hier ganz schön rum. Solltet ihr Lust aufs Reisen und ein wenig Icinga, Puppet oder Logstash haben könnt ihr euch sehr gerne als Linux Consultant (m/w) oder Puppet Consultant (m/w) bewerben. Sollte euch die Wahl schwer fallen, könnt ihr unsere Kunden selbstverständlich auch mit allen Themen beglücken.
 
Als kleiner Anreiz: Aktuell haben wir für 2016 noch Consulting-Termine in Atlanta und Peking zu vergeben. Wenn euer Knowledge passt und ihr schnell genug eure Bewerbung schreibt, könnt ihr gerne dort hin fliegen 🙂
In diesem Sinne: Bewerben! Bewerben! Bewerben!

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

Consultingleben – Kapitel 2: Online in 17 Ländern (Update)

three_ukAn dieser Stelle möchte ich nur ein kurzes Update zu meinem Blogpost mit der “Reise-SIM-Karte” geben. Mittlerweile hat Three.uk seine Feel-At-Home Zone weiter ausgebaut, womit Neuseeland und Spanien hinzugekommen sind.
 
Summa summarum sind wir nun bei:

  • Großbritannien
  • USA (inkl. Hawaii)
  • Österreich
  • Schweiz
  • Italien
  • Spanien
  • Frankreich
  • Schweden
  • Norwegen
  • Finnland
  • Dänemark
  • Irland
  • Australien
  • Neuseeland
  • Hong Kong
  • Sri Lanka
  • Macau
  • Israel
  • Indonesien

Eine SIM-Karte – 19 Länder! Es fehlt eigentlich nur noch Deutschland 😉

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

inDoc – Mach es dem Support einfacher…

16811692146_85b370edb1_oBeim eröffnen eines Tickets ist es immer das gleiche. Welches Betriebssystem? Welche Version der Applikation? Immer die gleichen Fragen… Ihr habt keine Lust mehr Informationen zusammen zu sammeln? Dann nehmt doch inDoc!
inDoc ist eine kleine Sammlung an Skripten die Informationen aus eurem Monitoring-Setup sammelt und diese in einer XML-Datei speichert. Auf diese Weise wird z. B. die icinga.cfg oder auch Daten über den laufenden Icinga Prozess (PID, Speicherverbrauch, usw.) gesichert.
Aber keine Angst, der Entwickler ist nicht die NSA! Die Daten sind dann ausschließlich auf eurem Server und Passwörter werden in formschöne Sterne (******) verwandelt.
Der XML-Output ist neutral und kann mit allen gängigen Programmiersprachen wieder eingelesen werden, womit das gute Stück auch für Dokumentationszwecke genutzt werden kann. Ein erstes Beispiel hierfür zeigt das Skript inDoc2HTML.pl.
In der Praxis ist inDoc denkbar einfach:
icinga@monitoring-host# git clone https://github.com/NETWAYS/indoc
icinga@monitoring-host# cd indoc
icinga@monitoring-host# ./inDoc.pl

That’s it! 🙂
Das war kurz und schmerzlos, aber was hab’ ich nun davon?

icinga@monitoring-host# ls -la /tmp/inDoc-out/
total 56
drwxr-xr-x 3 icinga icinga 4096 Aug 14 18:49 .
drwxrwxrwt 4 root root 4096 Aug 14 18:54 ..
-rw-r--r-- 1 icinga icinga 492 Aug 14 18:49 check_disk.xml
-rw-r--r-- 1 icinga icinga 450 Aug 14 18:49 check_http.xml
-rw-r--r-- 1 icinga icinga 449 Aug 14 18:49 check_load.xml
-rw-r--r-- 1 icinga icinga 7456 Aug 14 18:49 icinga.xml
-rw-r--r-- 1 icinga icinga 2434 Aug 14 18:49 indoc_base.xml
-rw-r--r-- 1 icinga icinga 12875 Aug 14 18:49 inDoc.xml
-rw-r--r-- 1 icinga icinga 1476 Aug 14 18:49 pnp4nagios.xml
drwxr-xr-x 2 icinga icinga 4096 Aug 14 18:48 savedFiles

Ohne weitere Optionen schreibt das Skript nach /tmp/inDoc-out. Hierunter findet ihr die Discovery-Ergebnisse der einzelnen Module. Das inDoc.xml beinhaltet die Informationen aller Module. So sind die Daten bequemer weiter zu verarbeiten.
Das ganze Set an Skripten wird von Zeit zu Zeit erweitert. Icinga 2 wird selbstverständlich zu den ersten gehören 😉
Picture by GotCredit – https://www.flickr.com/photos/jakerust

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

check_cache (is back)

check_cache_workflowEs gibt Dinge im Leben die einfach nicht tot zu kriegen sind. Deswegen haben wir, frei nach dem Motto “Totgesagte leben länger”, unser gutes altes check_cache etwas aufpoliert.
Für alle die sich nicht mehr an den ersten Blogpost erinnern können, check_cache ist Jahrgang 2009 (Südhang, spätlese) und funktioniert grob gesagt wie ein intelligentes check_by_ssh das beim Ausführen mehrere Checks gebündelt verarbeitet. Somit spart man sich in größeren Umgebungen ziemlich viele SSH-Sessions, was einem irgendwann von den Netzwerkern gedankt wird.
In der nun aktuellen Version 1.2.2 sind viele Bugfixes enthalten. In den Bereichen “XML Escaping” und “Exit Codes” wurde etwas mehr korrigiert.
check_cache steht auf exchange.icinga.org zum Download bereit.

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

3 Dinge die Sie schon immer mit der Icinga Config machen wollten

1) Ihre Hosts mit Paragraphen benennen:

object Host "§1 testserver" {
  import "generic-host"
  address = "127.0.0.1"
}
object Host "§2 prodserver" {
  import "generic-host"
  address = "127.0.0.2"
}

3things_i2cfg_1
2) Sprechende Namen für Templates verwenden:

template Service "Kaffeemaschinen-/Kuchen-/Cookie-Monitoring Template; Bei beschwerden: dev@null.com" {
  import "generic-service"
  max_check_attempts = 3
  check_interval = 1m
  retry_interval = 30s
  check_command = "check_coffee_cookie"
}

3) Unicode-Zeichen für Services verwenden:

apply Service "Liegt Schnee? ☃" {
  import "generic-service"
  check_command = "check_snow"
  assign where host.name == "§1 testserver"
}

3things_i2cfg_3

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

Consultingleben – Kapitel 2: Online in 17 Ländern

three_ukIm ersten Blogpost dieser Serie habe ich euch ein paar Tips zur Flugbuchung gegeben. Für das zweite Kapitel möchte ich auf eine (für mich als IT’ler) elementare Grundlage eingehen. Den Internetzugang 🙂
Egal ob es sich um eine dienstliche oder private Reise handelt, bin ich quasi immer online. Im Urlaub bemühe ich mich beispielsweise sehr nicht meine dienstlichen E-Mails zu lesen, jedoch ist “online sein” auch im Urlaub in vielerlei Hinsicht von Vorteil. Navigation im Auto, Navigation zu Fuß, das Finden des besten Jet-Ski-Verleihs am Strand oder einfach nur die Unabhängigkeit von unverschämt teuren Hotel-WLAN’s. Es gibt viele gute Gründe.
So schön und einfach sich diese Sätze lesen, wer viel außerhalb von Deutschland unterwegs ist kennt die traurige Wahrheit. Entweder man zahlt relativ hohe Roaming-Gebühren oder besorgt sich eine SIM-Karte des jeweiligen Landes. Um hier nicht in eine wahnsinnige “SIM-Karten-Schlacht” zu verfallen, hat sich in letzter Zeit ein einziges Produkt in meiner Consulting-Tasche bewährt. Die Three Pay As You Go SIM.
An dieser Stelle ist die Firma Three.uk bitte nicht mit der österreichischen Drei.at zu verwechseln. Beide Firmen haben zwar miteinander zu tun, man benötigt aber ganz speziell die SIM-Karte von Three.
Was ist nun so toll an dieser SIM-Karte? Ganz einfach! Man kann Guthaben aufladen oder die SIM direkt mit Guthaben kaufen. Dieses Guthaben ist dann in Großbritannien und in allen sogenannten “Feel At Home destinations” nutzbar. Das sind: USA (inklusive Hawaii), Österreich, Schweiz, Italien, Frankreich, Schweden, Norwegen, Finnland, Dänemark, Irland, Australien, Hong Kong, Sri Lanka, Macau, Israel und Indonesien. Ein ganz besonderes Killer-Feature ist für mich das Roaming in der USA. Hier hat Three Verträge mit AT&T und T-Mobile USA, womit man quasi überall 3G Empfang hat.
Wie komme ich nun an so eine SIM-Karte? Ebenfalls, ganz einfach! Man nimmt seine handelsüblichen Amazon Anmeldedaten und loggt sich auf amazon.co.uk ein. Die Three Pay As You Go SIM ist in verschiedenen Varianten erhältlich. Ich habe mich für die “Preloaded SIM” mit 12 GB entschieden. Das Volumen hat eine Laufzeit von einem Jahr und kann mit jedem Aufladen  verlängert werden. Zum Zeitpunkt meiner Bestellung waren vier Anbieter verfügbar, wovon drei nach Deutschland liefern. Nach ca. 5 Tagen ist die SIM-Karte bei mir zu Hause angekommen.
Was kostet der Spaß? Zugegeben ist die Three SIM im Vergleich zu anderen SIM-Karten der jeweiligen Länder teurer. Die 12 GB Variante kostet z. B. £ 78,90 + £ 9,90 Versand, womit man bei ca. 116 € landet. Quasi 9,66 € pro Gigabyte. Der Preis ist aber meiner Meinung nach aufgrund der Flexibilität noch im vertretbaren Bereich.
Falls Ihr eine Bestellung wagt, wünsche ich euch viel Spaß beim surfen. Bei mir hat die SIM mittlerweile in 6 Ländern treue Dienste geleistet, zwei weitere kommen dieses Jahr mindestens noch hinzu. Wenn es eurer Erfahrung nach noch ein vergleichbares oder besseres Produkt gibt würde ich mich über eine kurze Info sehr freuen.
In diesem Sinne. Happy surfin.

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.