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.

MySQL Cheat-Sheet

Da ich euch nicht mit Dingen wie SELECT, INSERT oder UPDATE nerven möchte, aber es auch immer wieder Dinge gibt die ich regelmäßig nachschlagen muss, hier mein persönliches MySQL-Cheat-Sheet in der Hoffnung das es euch auch helfen möge 😉
Mitschneiden der MySQL-Session, z. B. für Doku’s:
[user@host ~]$ mysql -u root -p --tee=/tmp/what_i_have_done.log
Logging to file '/tmp/what_i_have_done.log'
Enter password:

Anzeigen aller DB’s mit der jeweiligen Größe in MB:
SELECT table_schema "Data Base Name",
sum( data_length + index_length ) / 1024 /
1024 "Data Base Size in MB",
sum( data_free )/ 1024 / 1024 "Free Space in MB"
FROM information_schema.TABLES
GROUP BY table_schema ;

Auflisten aller Benutzer und deren Datenbankberechtigungen:
SELECT grantee, table_schema, privilege_type FROM information_schema.schema_privileges;

Klonen von Tablellen (keys und index werden nicht automatisch übernommen!):
CREATE TABLE AS SELECT * FROM ;

Erstellen / Wiederherstellen einer Replikation:
STOP SLAVE;
RESET SLAVE;
CHANGE MASTER TO MASTER_HOST='myotherdbms', MASTER_USER='replication_user', MASTER_PASSWORD='nsa_will_never_guess', MASTER_LOG_FILE='mysql-bin.00000', MASTER_LOG_POS=414138;
START SLAVE;

Bei Fehlern in der Replikation auch gerne gesehen… Ignoriere eine Anzahl N an Fehlern:
SET GLOBAL sql_slave_skip_counter = N;

Sollte ich noch mehr coole Sachen finden, werde ich diese Liste selbstverständlich erweitern 🙂

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.

Einfachere Dokumentation durch Wikis

In vielen unserer Projekten entsteht immer wieder die Anforderung nach einem (neuen) Dokumentationssystem. Entweder weil der Kunde noch gar nichts in diesem Bereich einsetzt oder mit dem bestehenden System unzufrieden ist. Wir benutzen selbst ein Wiki und empfehlen das auch unseren Kunden. Aus mehreren Gründen:

  • Dokumentation ist in der Regel eine sehr unbeliebte Aufgabe, die kein Administrator gerne erledigt. Folglich sollten die Einstiegshürden möglichst niedrig und die Dokumentation mit möglichst wenig Arbeit verbunden sein. Wikis sind webbasiert, einfach zu erreichen, leicht zu bedienen und damit einfach schneller als andere Systeme. Je schneller und einfacher es für einen Admin ist einen Change zu dokumentieren, umso höher ist die Wahrscheinlichkeit, dass es auch gemacht wird.
  • Durch die flexible Struktur eines Wikis, können auch neue Bereich oder Themen einfach eingepflegt werden, ohne auf eine komplizierte Hierarchie Rücksicht zu nehmen. Es ist immer noch besser der Inhalt ist drinnen, aber an der falschen Stelle, als gar nicht eingepflegt. Die Inhalte können immer noch später umsortiert werden.
  • Im Gegensatz zu anderen Alternative ist eine Suchfunktion bereits out-of-the-box eingebaut und muss nicht extra implementiert werden. Inhalte lassen sich so auch ohne absolute Ordnung leicht wiederfinden.
  • Die meisten Wikisysteme gestatten die Anbindung externer Authentifizierungsmechanismen, so dass keine zusätzlichen Useraccounts oder Passwörter verwendet werden müssen. Im internen Netz kann die Anmeldung durch Kerberos vielleicht sogar komplett entfallen.
  • Die Versionierung der Wikiartikel erlaubt es später Änderungen an der Dokumentation nachzuvollziehen oder einfach auf einen alten Stand zuzugreifen. Fehler und versehentliche Löschungen können so jederzeit einfach wieder rückgängig gemacht werden. Ebenso können Diffs erstellt werden, die genau alle Änderungen zwischen zwei Versionsständen wiedergeben.
  • Da das System HTML basiert ist, lassen sich die Inhalte einfach über normale Hyperlinks in anderen Anwendungen verlinken. Beispielsweise kann man in Nagios Links direkt zur Dokumentation der jeweiligen Ressource einbauen.
  • Die meisten Wikis sind Open Source und können deswegen einfach angepasst werden, wenn es später individuelle Zusatzanforderungen an das Wiki geben sollte. Ganz zu schweigen von den wegfallenden Lizenzkosten.

Natürlich sollte man nicht verschweigen, dass ein Wiki auch ein paar Nachteile mit sich bringt: In der Regel kann jeder alle Texte einsehen oder verändern und es ist schwierig in einem Wiki genaue und vor allem verbindliche Strukturen vorzugeben. Wobei das in einer offenen, wissensbasierten Firma nicht wirklich ein Nachteil sein muss.
In Summe überwiegen also definitiv die Vorteile eines Wikis und ich werde in ein paar Tagen die wichtigsten und bekanntesten Wiki Systeme vorstellen und ihre jeweiligen Vor- und Nachteile als Dokumentationssysteme erläutern.

Julian Hein
Julian Hein
Executive Chairman

Julian ist Gründer und Eigentümer der NETWAYS Gruppe und kümmert sich um die strategische Ausrichtung des Unternehmens. Neben seinem technischen und betriebswirtschaftlichen Background ist Julian häufig auch kreativer Kopf und Namensgeber, beispielsweise auch für Icinga. Darüber hinaus ist er als CPO (Chief Plugin Officer) auch für die konzernweite Pluginstrategie verantwortlich und stösst regelmässig auf technische Herausforderungen, die sonst noch kein Mensch zuvor gesehen hat.