Sponsoring DebConf 2015

DebConf 15Die jährliche Debian conference, kurz DebConf, findet dieses Jahr in Heidelberg statt. Gleichzeitig wird es wohl die größte DebConf aller Zeiten sein, mit über 500 Teilnehmern.
Wir als NETWAYS benutzen Debian für viele unserer eigenen Server und die unserer Kunden. Da ich selbst Debian Entwickler bin, lasse ich mir die Gelegenheit natürlich nicht entgehen.
Da wir auch der Community etwas zurückgeben möchten, haben wir uns als Sponsor gemeldet und unterstützen die Konferenz. Auch Icinga soll dabei nicht zu kurz kommen, deswegen erkläre ich “Why favor Icinga over Nagios?” in einem kurzen Talk am kommenden Sonntag.
Vielleicht findet sich bei der Gelegenheit ein paar Interessenten für unser Team, denn wir suchen immer nach neuen Kollegen!
Wer jetzt noch Lust hat die DebConf zu besuchen, den muss ich enttäuschen, es sind keine Anmeldungen mehr möglich. Falls jemand von unseren Lesern auch dort ist, ich bin immer für ein Gespräch zu haben!

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

Icinga 2 und SCOM

scom_logo
Als Consultant begegnet man vielen Kunden und vielen verschieden Computer Systemen, aber eben auch andere Monitoring Lösungen.
Für komplexe Microsoft Umgebungen ist System Center Operations Manager (kurz SCOM) sicherlich keine schlechte Alternative zu Icinga, nur leicht teurer… 😉
Bei einem Kunden habe ich mich in den vergangen Wochen mit SCOM beschäftigt, da er sich eine Integration von SCOM in Icinga gewünscht hat. Um den Status der Windows Systeme in der Oberfläche von Icinga sehen zu können.
Das Ergebnis dieser Arbeit ist der Icinga2 SCOM Connector, und natürlich Open Source.
(mehr …)

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

Die Idee von freier Software

Wir als NETWAYS haben uns schon vor vielen Jahren Open Source auf die Fahnen geschrieben, und meinen damit freie Software. Man muss manchmal aufpassen mit den beiden Termini “Open Source” und “Free Software”, das ist nämlich nicht pauschal das Gleiche!
Open Source heißt einfach, dass der Quellcode offen ist, jeder kann ihn lesen, er ist nicht verschlüsselt oder vorkompiliert. Dies bedeutet aber noch lange nicht, dass Sie als Benutzer auch Änderungen daran vornehmen dürfen, oder diese gar weitergeben dürfen.
Free Software, dagegen ist die Idee, dass eine Software völlig frei ist, jeder darf sie benutzen, verändern, weiter verbreiten. Wie es ihm passt, und nur mit geringen Einschränkungen, wie z.B. Nennung des Ursprungs-Authors oder Hinweise auf Veränderungen.
Dabei sagt man: “Free as in liberty, not free beer” – also “Frei wie Freiheit, und nicht Freibier” – denn Freibier kann irgendwann zu Ende sein.

Tim O´Reilly und Richard Stallman


Es gibt viele bekannte Projekte hinter denen freie Software steht, Linux, GNU, Debian, Fedora, FreeBSD, Icinga und viele, viele mehr. Und das Konzept funktioniert, jeder kann es benutzen und jeder kann mitmachen, ob durch Meinungen, Bugs, Patches oder viele Zeilen Code.
Wir als NETWAYS möchten nicht einfach Software verkaufen, sondern unser Wissen. Sei es in Workshops bei Kunden, Schulungen, oder auch Programmierung, um unsere Kunden bei der Integration und Benutzung von freier Software unterstützen.
Organisationen wie die Free Software Foundation Europe (FSFE), die Open Source Business Foundation (OSBF) oder die Open Source Business Alliance (OSBA) versuchen die Politik und Öffentlichkeit mehr auf Open Source und freie Software aufmerksam zu machen. Und Diskussionen, wie sie in den letzten Monaten in München zum Thema LiMux stattfinden zeigen, wie nötig dies ist.
Zum Abschluss noch ein kurzes Video, genau richtig für die Mittagspause. Und dabei erzählt kein geringerer als Richard Stallmann (der Gründer des GNU Projektes) was zu seiner Vorstellung von “Free software, free society”. Natürlich auf Englisch!

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

Foreman und die PuppetDB

foreman_small
Ein schönes, aber selten gewürdigtes Feature von Puppet sind wohl die sogenannten exported resources.
In einem Standard Setup mit Foreman funktionieren diese Resources jedoch nicht, ich möchte heute zeigen wie das zusammen mit der PuppetDB recht einfach umsetzbar ist.

Aber was tut das?

Mit exportierten Resourcen können Resourcen aus der einzelnen Node Konfiguration herausgehoben, und auf allen Nodes verwendet werden.
Hier ein kleines Beispiel, bzw. eigentlich das Standardbeispiel.

@@sshkey { $::fqdn:
  type         => rsa,
  key          => $::sshrsakey,
  host_aliases => [ $::hostname, $::ipaddress ],
}

Die Resource SSH-Key kümmert sich hierbei darum, den Key auf Basis eines Facts in die Datei /etc/ssh/ssh_known_hosts einzupflegen.
Grundsätzlich würde die Resource aber nur für den gleichen Node gültig sein, dies ändert das Prefix “@@” vor dem Resourcentyp, er macht die Resource exportierbar.
Um die exportierten Resourcen nun auch zu benutzen muss noch folgender Puppetcode ergänzt werden:

Sshkey <<| |>>

Dieser Collector sorgt dafür dass die Resourcen dieses Typs verwendet werden.
Es gibt noch ein paar Tricks mit Tags um unterschiedliche Bereiche dieser Resourcen zu unterscheiden und aufzuteilen, hierzu empfehle ich die Dokumentation zu Tags und Kollektoren zu lesen.

Wie funktioniert die Speicherung?

(mehr …)

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

End2End Monitoring mit CasperJS

CasperJS LogoWas ist eigentlich dieses End2End Monitoring? Während viele Nutzer von Icinga haarklein jede Ecke ihrer IT-Landschaft überwachen, und sofort merken sollten wenn ein Dienst ausfällt oder ein Dateisystem voll läuft, werden Funktionstests aus der Endbenutzer-Sicht oft vernachlässigt.
Hier bietet CasperJS einen netten Funktionsrahmen um solche Tests für Webseiten einfach zu machen und z.B. den Inhalt zu prüfen oder mit der Webseite zu interagieren.
Ein kleiner Auszug der Funktionen von Casper:

  • Navigations-Schritte definieren und abarbeiten
  • Formulare ausfüllen und absenden
  • Interaktion mit der Webseite (Buttons und Links)
  • Screenshots zu jedem Zeitpunkt
  • Javascript Code im Context der Webseite (DOM) ausführen
  • Test Funktionen für den Inhalt der Webseite

Den Kern hinter Casper bildet dabei das Browser-Framework PhantomJS, dass einen Webkit Browser simuliert den man über Javascript steuern kann. Der große Unterschied zu einem echten Browser ist nur dass PhantomJS keinerlei Frontend bietet, alles geschieht im Hintergrund, und erfordert somit auch keine Desktop Oberfläche. Als Alternative lässt sich auch SlimerJS nutzen, was einen ähnlichen Funktionsumfang wie Phantom bietet, aber auf der Firefox Engine (Gecko) basiert.
Beide Tools liefern eine komplette Javascript API um den Browser zu steuern, was Casper beisteuert sind viele Hilfsfunktionen, die man sich sonst selbst schreiben müsste.
Aber wie sieht so ein CasperJS Skript eigentlich aus? Hier ein einfaches Beispiel:

/*
 * Webseite www.netways.de
 */
var url = 'http://www.netways.de';
casper.test.begin('NETWAYS.de', 4, function suite(test) {
  casper.start(url, function() {
    test.assertHttpStatus(200, "HTTP Request erfolgreich");
    test.assertUrlMatch(url, "auf der richtigen Webseite");
    test.assertTitleMatch(/NETWAYS/, "Titel der Webseite");
    test.assertExists('a[href="de/info/jobs/"]', 'Link auf Jobs');
  });
  casper.run(function() {
    test.done();
  });
});

Das Ergebnis auf der Kommandozeile sieht dann so aus:
CasperJS www.netways.de
Für einen Kunden integriere ich gerade CasperJS in Icinga, damit man zum einen die Ergebnisse melden, als auch Performancedaten sammeln und auswerten kann. Ich werde berichten sobald es etwas herzeigbares gibt!
Für alle die gerne jetzt, oder am Wochenende, mit CasperJS erste Gehversuche machen folgen noch ein paar Links. Am besten sollte man mit der Beta Version testen – dort sind viele neue Funktionen enthalten.
Weiterführende Links

P.S. Unsere Stellenanzeigen sollte man übrigens wirklich mal “von Hand” checken, Automatisierung ist nicht für alles gut…

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

Eindrücke vom LinuxTag 2014

Ende der vergangenen Woche fand der Linux Tag in neuer Umgebung in Berlin statt.
Nachdem die Konferenz nun einige Jahre in der Messe Berlin gastiert hat, hat man sich nun entschieden eine neue Umgebung zu suchen und bildet einen gemeinsamen Rahmen mit der re:publica und der droidcon.
Und dieser neue Rahmen funktioniert sehr gut, viele Teilnehmer, sehr interessante Vorträge und eine Ausstellung verschiedener Projekte und Firmen. Viele bekannte Gesichter, und auch, durch die unterschiedlichen Veranstaltungen, neue interessante Ideen.
(mehr …)

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

Und das war die PGConf.DE 2013

PostgreSQL Elephant Kollege Lennart und ich haben letzte Woche einen Abstecher nach Oberhausen gemacht, um an der deutschsprachigen PostgreSQL Konferenz 2013 teil zu nehmen.
In über 20 Vorträgen gab es viele Neuigkeiten zu PostgreSQL, der Community und einigen Projekten für und mit PostgreSQL. Wie auch an unseren Konferenzen zu spüren wächst das internationale Interesse an deutschen Konferenzen immer mehr, und so gab es auch viele englischsprachige Vorträge.
Aus einigen Vorträgen war zu entnehmen dass viele viele Anwender an Performance-Problemen scheitern, die meist auf grundsätzliche Index-Probleme, fehlende Tuningeinstellungen oder sogar schlecht durchdachte Anwendungen zurückzuführen sind.
Einige Unternehmen waren anwesend und berichteten von Ihren positiven Erfahrungen bei, Einsatz von PostgreSQL und der Migration von anderen RDBMS.
Es ist immer wieder eine Freude viele bekannte Gesichter zu treffen und sich über den neuesten “IT Tratsch” auszutauschen.
Wer uns auf einer Konferenz entdeckt, darf übrigens gerne Hallo sagen, wir beißen nicht! 😉 Wir haben auch Steckbrief-Bilder zum einprägen!
Hier noch ein paar Vortrags-Empfehlungen:

The PostgreSQL name and logo are trademarks of The PostgreSQL Community Association of Canada. (source)

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

Passwörter im Puppet Master speichern mit trocla

Sichere PasswörterIn meinen Puppet Installationen habe ich mir angewöhnt alles in Git zu Versionieren, sowohl die kleinsten Module, als auch die Site Konfiguration der einzelnen Nodes.
Das stellte mich vor das Problem, wie hinterlege ich hier Passwörter ohne sie in die Manifeste zu schreiben und später mit in der Versionskontrolle gespeichert zu haben – was unter Umständen ein Sicherheitsrisiko wäre, selbst bei der Verwendung von Hashes.
Was ich als Lösung für mich gefunden habe war trocla. Es handelt sich dabei um ein Ruby Gem und ein Puppetmodul, das die einfache Möglichkeit bereitstellt die Passwörter in einer eigenen Datei zu speichern, abseits der Manifeste. Um ein Passwort zu verwenden muss nur die Parser-Funktion trocla() im jeweiligen Manifest verwendet werden.

Funktionen

  • Speichert Passwörter in einer YAML Datei, als einfache Key-Values
  • Kann mehrere Hash-Typen und Plaintext speichern
  • Passwörter können bei Bedarf automatisch erstellt werden
  • Das Plaintext Passwort muss nicht gespeichert bleiben
  • Muss nur auf dem Puppetmaster installiert sein

(mehr …)

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

VIM ist einfach cool

Als Linux-Consultant arbeitet man viel auf der Shell, daher sollte der Editor der Wahl möglichst auch überall wo man SSH hat einsetzbar sein.
Meine Wahl ist seit einigen Jahren daher VIM, dabei gewöhnt man sich über die Jahre ein seine eigenen Einstellungen und möchte diese auch gar nicht mehr missen.
Ich persönlich werde jedenfalls halb wahnsinnig wenn ich mit so einem blanken VIM ohne meine eigene Konfiguration arbeiten muss 😉
Heute nutze ich die Gelegenheit um meine mühsam gepflegte .vimrc zu teilen, natürlich mit Kommentaren.

syntax on                 " Aktiviert das Syntax Hervorhebung immer
set background=dark       " Hilfreich bei Terminals mit dunklem Hintergrund
                          " dann sieht man auch die Kommentare endlich wieder
set title                 " Titel Text für moderne Terminals (Datei und Pfad)
set modeline modelines=5  " Schaltet die Modeline Erkennung an
set ts=4                  " Setzt den Tabstopp und die Shiftwidth (Sprungweite
set sw=4                  " beim Einrücken) auf 4 Leerzeichen
set expandtab             " Nie Tabstopps benutzen, sondern Leerzeichen
set autoindent            " Automatisches Einrücken bei New-Line
set smarttab              " Intelligenteres Löschen von Leerzeichen-Tabs
set mouse=a               " Schaltet die Maus Bedienung ein
                          " Ein geniales Feature - nach etwas Eingewöhnung...
                          " Tipp: mit Shift-Klick kann man ganz normal im
                          " Terminal markieren
                          " Achja: Mausrad funktioniert wunderbar!
set hlsearch              " Hebt die aktuellen Suchergebnisse hervor
" Tell vim to remember certain things when we exit
"  10  :  marks will be remembered for up to 10 previously edited files
"  100 :  will save up to 100 lines for each register
"  20  :  up to 20 lines of command-line history will be remembered
"  %    :  saves and restores the buffer list
"  n... :  where to save the viminfo files
set viminfo='10,\"100,:20,%,n~/.viminfo
" Und zu guter letzt: Mit dieser kleinen Hilfsfunktion wird die Position
" an der man zuletzt in einer Datei war mit in die .viminfo gespeichert
function! ResCur()
  if line("'\"") <= line("$")
    normal! g`"
    return 1
  endif
endfunction
augroup resCur
  autocmd!
  autocmd BufWinEnter * call ResCur()
augroup END

Ich benutze auch einige Addons:

Weiterführende Links:

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

Ereignis Überwachung mit EventDB und Icinga

Wie jede andere Software hat auch Icinga Grenzen, wo es nur sehr schwer fällt ein Szenario optimal in der Überwachung abzubilden. Icinga ist z.B. darauf ausgelegt den Status eines gewissen Objektes zu überwachen, und wenn dieser gestört ist das zu melden – so lange der Status gestört ist.
Wenn es nun aber um Ereignisse geht, also kein dauerhafter Status, sondern nur eine einmalige Benachrichtung über einen Fehler, fällt es einem recht schwer dies in Icinga einzubauen.
Beispiele für solche Ereignisse:

  • SNMP Traps
  • Syslog
  • MS Eventlog
  • Alarme anderer Überwachungssysteme
  • bestimmte E-Mail Meldungen

Ein Weg dazu ist ein kleines Datenbank Framework namens EventDB.
Die Idee dahinter ist, eine Datenbank zu haben die von verschiedenen Adaptern befüllt wird (dazu reicht grundsätzlich ein simples Datenbankskript) und diese Datenbank dann mit einem Icinga Plugin zu überwachen. Die Überwachung erlaubt Filterung nach Systemname, Schweregrad, Meldungstext und Zeit.
Das Plugin stellt fest dass neue Events vorhanden sind und kann über die normalen Methoden von Icinga den Admin benachrichtigen. Dieser wirft einen Blick in die EventDB über das Webinterface und bestätigt, bzw. bearbeitet die einzelnen Ereignisse. Sobald alle Ereignisse bestätigt sind wird der Servicestatus in Icinga wieder grün.
Beispiel:
Der Switch “switch-3-A” stellt fest, dass Port 12 down ist und sendet einen SNMP Trap an den Icinga Server. Dort empfängt SNMPTT den Trap, verarbeitet die Nachricht und schreibt eine Zeile in die EventDB.
Eine Minute später wird check_eventdb von Icinga ausgeführt, dieser prüft ob für Host “switch-3-A” in den letzten 24 Stunden Events vorliegen, die unacknowledged sind und mindestens Schweregrad “warning” haben. Dies trifft zu und das Plugin meldet Ergebnis WARNING mit einem kurzen Auszug des Events an Icinga zurück.
Der Admin kann nun die Events prüfen und reagieren, der Status springt erst wieder auf OK wenn die betreffenden Events bestätigt sind.
Integration:
Die EventDB kann sowohl ins klassische Webinterface, als auch in Icinga Web integiert werden. So kann man eine direkte Verbindung zwischen der Überwachung und dem Addon schaffen.
Beide Schnittstellen erlauben das Filtern der Suchergebnisse und bearbeiten von Kommentaren und Bestätigungen zu allen Ereignissen.
  
Links und weitere Ressourcen:
EventDB auf netways.de
Wiki und Details auf netways.org (in English)
EventDB Git Repo

Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.