Seite wählen

NETWAYS Blog

Wie aus "Was ist Rotaract?" eine Shelterbox wird!

In einem Gespräch mit einem Kollegen kommt mein Engagement zur Sprache. Es fallen die Begriffe Rotaract und Rotary International. Unser lieber Bernd  hört auf einem Ohr mit und fragt mich  „Und was machst du? Was ist das?“.
Kurz erkläre ich, dass die rotarische Familie also Rotary international neben Rotary aus mehreren Organisationen besteht und ich selbst einem Rotaract Club (Club Churfranken) angehöre. Rotaract, das steht für „Rotary in Action“ und ist eine Organisation für Schüler, Studenten, Auszubildende und junge Menschen im Berufsleben von 18 bis zum 30 Lebensjahr mit dem Motto „Lernen, Helfen, Feiern“. Der rotarische Gedanke ‚Service above Self‘ ist das, was verbindet.  Dieser Gedanke geht auf in regionalen Projekten bis hin zu globalen Projekten in denen oft unterschiedliche Clubs aus verschiedensten Ländern zusammen wirken. In einem Satz kann man sagen: Es geht darum Freundschaft zu fördern, zur Verständigung beizutragen und mit seinem Fertigkeiten und Mitteln gemeinsam gutes zu wirken.
Abschließend erwähne ich zum Punkt internationale große Projekte, unter anderem Shelterbox, und werde prompt gebeten dieses ausführlicher zu erklären.
ShelterBox ist eine von Rotarier Tom Handerson 1999 gegründetes Projekt  gewesen und heute eine eigenständige Hilfsorganisation innerhalb von Rotary International.  Aber was ist eine Shelterbox?

ShelterBox versorgt Menschen, die durch Naturkatastrophen oder Konflikte ihre Existenzgrundlage verloren haben, mit Notunterkünften und einem Grundstock an lebensnotwendigen Hilfsgütern. Da jede Katastrophe anders ist, entscheiden wir für jeden Einsatz individuell, welche Materialien wir vor Ort verteilen. Durch die kompakten Maße unserer Hilfsgüter gelangen wir auch in abgelegene Regionen, die oft nur zu Fuß oder mit Lasttieren erreichbar sind.
Unsere Überlebenskiste wiegt bis zu 55 Kilogramm und beinhaltet das, was eine Familie nach einer Katastrophe am aller nötigsten braucht, wie zum Beispiel ein Zelt, Decken, Wasserfilter, Moskitonetze, Solarlampen, Geschirr und vieles mehr. Familien, deren Häuser beschädigt, aber nicht vollständig zerstört wurden, bekommen ein ShelterKit mit Werkzeug und Zeltplanen an die Hand, um eigenständig mit dem Wiederaufbau beginnen zu können. Zudem sorgen unsere Klassenzimmer in der Box dafür, dass der Schulbetrieb trotz aller Widrigkeiten weitergehen kann.


Shelterbox basiert auf der Arbeit Ehrenamtlicher sogar bei der Ersthilfe und ist ausschließlich spenden finanziert. So kommt es, das auch unser Club und ich selbst, das ein oder andere mal für Shelterbox eine Spendenaktionen veranstalten.
Aber warum schreibe ich darüber in unserem Blog? Unser lieber Bernd fand die ganze Sache gut und somit hat die NETWAYS GmbH gerne eine Shelterbox gespendet.  Dies zeigte mir, dass es bei NETWAYS um mehr geht und ich mit meinen Prinzipien und Wertevorstellungen die Wahl meines Arbeitgebers im Einklang sehen kann.
Sobald wir wissen, in welchem der unzähligen Katastrophen und Krisengebieten die von uns gespendete ShelterBox im Einsatz ist, bekommt ihr ein Update. Wer selbst mit einer Shelterbox unterstützen möchte, kann dies mit Spenden an:
IBAN: DE85 1002 0500 0001 3284 00
BIC: BFSWDE33BER
Verwendungszweck: ShelterBox, Ihr Name + E-Mail-Adresse oder Anschrift
verwirklichen.
Neben dem sozialen Engagement ist es auch Bestandteil, in allen Lebenslagen nach den leitenden Prinzipien und Werten zu handeln. So stelle ich mich jeden Tag aufs neue der Vier-Fragen-Probe, an welcher ich mich für mein Wirken und Sein orientiere. Diese möchte ich euch mit auf den Weg geben:

Bei allem, was wir denken, sagen oder tun, sollten wir uns fragen:
1. Ist es wahr?
2. Ist es fair für alle Beteiligten?
3. Wird es Freundschaft und guten Willen fördern?
4. Wird es dem Wohl aller Beteiligten dienen?“

 

Daniel Neuberger
Daniel Neuberger
Senior Consultant

Nach seiner Ausbildung zum Fachinformatiker für Systemintegration und Tätigkeit als Systemadministrator kam er 2012 zum Consulting. Nach nun mehr als 4 Jahren Linux und Open Source Backup Consulting zieht es ihn in die Welt des Monitorings und System Management. Seit April 2017 verstärkt er das NETWAYS Professional Services Team im Consulting rund um die Themen Elastic, Icinga und Bareos. Wenn er gerade mal nicht um anderen zu Helfen durch die Welt tingelt geht er seiner Leidenschaft für die Natur beim Biken und der Imkerei nach und kassiert dabei schon mal einen Stich.

Graphite Reporting mit der Render-API

Vor kurzem durfte ich mich damit beschäftigen, wie man schnell und halbwegs vernünftig eine Art Reporting für Performance-Daten für Icinga 2 umsetzen kann. Um solche Daten entsprechend aufzubereiten bedarf es weiterer Open-Source-Software. Meiner Meinung nach eignet sich Graphite hierzu am besten. Ich möchte heute einen kurzen Einblick in die Möglichkeiten geben.
Graphite ist ein Werkzeug, welches aus drei Komponenten besteht: Carbon-Cache als Datensammler, Whisper als Storage-Backend und Graphite-Web um die Graphen visuell und als API bereitzustellen. Icinga 2 schreibt die Performance-Daten mit dem „graphite“-Feature direkt an den Carbon-Cache-TCP-Socket. Welche Möglichkeiten habe ich als Anwender nun, diese historischen Daten für meine Zwecke in Reporting zu verwenden?
Eigentlich ganz einfach: Graphite liefert eine eigene Render-API. Diese bietet die Möglichkeit, die Daten als Graph, csv , json, pdf und einige weitere Formate zu generieren. Der Anwender kann diese Daten als REST-API Aufruf im Browser oder beispielsweise curl in der Shell abholen. Dabei können verschieden Metriken und Aggregationen auf Graphen angewandt und unterschiedliche Werte gebündelt abgerufen werden.
 

Wie fange ich an?

Generell wird die URL wie folgt aufgebaut:
target=icinga2..services.*.*.perfdata.*.value
Im gezeigten Beispiel kann man für die „target“-Metriken auch Wildcards verwenden, um etwa mehrere Services gleichzeitig abzufragen. Dies entspricht dem Dateipfad im Whisper-Backend. Man kann allerdings auch Listen oder Arrays angeben, um gezielt bestimmte Werte abzufragen.
Es gibt unterschiedliche Möglichkeiten, die Daten für die entsprechenden Ausgaben weiterzuverarbeiten. Die wohl wichtigsten sind &from für die Zeit und &format für die Formatierung der Daten.
 

Metrik „Baum“

Um die Werte für die CPU-Load abzufragen, muss der entsprechende Service in Icinga 2 definiert sein und Performance-Daten nach Graphite schreiben. Im Screenshot sieht man im Baum „services“ – „load“, letzterer stellt den Service-Namen dar. Der Sub-Knoten „load“ liefert die Information, dass hier das „load“ CheckCommand verwendet wurde. Tip an dieser Stelle: Lässt sich etwa für Dashboard-Templates als eindeutiger Schlüssel verwenden in Grafana.

Performance-Daten liefern zum einen „perfdata“, worin einzelne Metriken mit ihrem Namen abgelegt werden, etwa „load1“ und darunter „value“ als Wert und Thresholds, etwa „crit“ und „warn“, sofern definiert. Zusätzlich können auch Metadaten von Icinga 2 geschrieben werden, die man aber explizit in der Konfiguration einschalten muss („metadata“).
 

Einzelne Metrik abfragen

Im folgenden interessiert uns aber lediglich der Wert der Metrik „load1“ als einzelner Wert. Um eine ordentliche Ausgangsbasis zu erhalten, wählen wir den Zeitraum der letzten 3 Stunden. Tip: Es sind relative und absolute Zeitangaben möglich.
http://192.168.100.101/render?target=icinga2.icinga3op_foreman_local.services.load.load.perfdata.load1.value&height=800&width=600&from=-3hours

 

Mehrere Metriken zusammenfassen

Man kann diese Abfrage auch erweitern, indem man mehrere Werte gleichzeitig abfrägt:
http://192.168.100.101/render?target=icinga2.icinga3op_foreman_local.services.load.load.perfdata.{load1,load15,load5}.value&height=800&width=600&from=-3hours

 

Mehrere Hosts mit der gleichen Metrik abfragen

Eine Abfrage mit verschiedenen Servern für „load15“ als Metrik könnte so aussehen:
http://192.168.100.101/render?target=icinga2.icinga*op_foreman_local.services.load.load.perfdata.load15.value&height=800&width=600&from=-3hours

Formatierung

Die Darstellung der Daten setzt immer eine &height und eine &width als Parameter voraus. Es ist auch möglich hier Tortendiagramme mit verschiedenen Funktionen für Mittelwerte und Summen aufzurufen.
Man kann die erhaltenen Daten auch als CSV-Werte formatieren und dann beispielsweise mit curl abspeichern. Alternativ kann man sich diese Werte auch direkt im Browser anzeigen lassen.

[root@icinga1op ~]# curl 'http://192.168.100.101/render/?target=icinga2.icinga3op_foreman_local.services.load.load.perfdata.load5.value&from=-3hours&format=csv'
icinga2.icinga3op_foreman_local.services.load.load.perfdata.load5.value,2017-06-16 06:30:00,0.24
icinga2.icinga3op_foreman_local.services.load.load.perfdata.load5.value,2017-06-16 06:31:00,0.21
icinga2.icinga3op_foreman_local.services.load.load.perfdata.load5.value,2017-06-16 06:32:00,0.17
icinga2.icinga3op_foreman_local.services.load.load.perfdata.load5.value,2017-06-16 06:33:00,0.15
icinga2.icinga3op_foreman_local.services.load.load.perfdata.load5.value,2017-06-16 06:34:00,0.16
icinga2.icinga3op_foreman_local.services.load.load.perfdata.load5.value,2017-06-16 06:35:00,0.13
icinga2.icinga3op_foreman_local.services.load.load.perfdata.load5.value,2017-06-16 06:36:00,0.12
....

Wie bereits erwähnt lassen sich die Daten auch im JSON-Format anzeigen. Dies kann wieder über den Browser oder mittels curl erfolgen.
Das folgende Beispiel rendert alle erhaltenen Datenpunkte als JSON-Format:

[root@icinga1op ~]# curl 'http://192.168.100.101/render/?target=icinga2.icinga3op_foreman_local.services.load.load.perfdata.load5.value&from=-3hours&format=json'
[{"target": "icinga2.icinga3op_foreman_local.services.load.load.perfdata.load5.value", "datapoints": [[0.13, 1497595140], [0.11, 1497595200], [0.15, 1497595260], [0.13, 1497595320], [0.1, 1497595380], [0.08, 1497595440], [0.07, 1497595500], [0.06, 1497595560], [0.06, 1497595620], [0.05, 1497595680], [0.04, 1497595740], [0.07, 1497595800], [0.05, 1497595860], [0.04, 1497595920], [0.05, 1497595980], [0.04, 1497596040], [0.08, 1497596100], [0.06, 1497596160], [0.07, 1497596220], [0.06, 1497596280], [0.06, 1497596340], [0.05, 1497596400], [0.04, 1497596460], [0.04, 1497596520], [0.03, 1497596580], [0.05, 1497596640], [0.04, 1497596700], [0.05, 1497596760], [0.04, 1497596820], [0.09, 1497596880], [0.07, 1497596940], [0.06, 1497597000], [0.06, 1497597060], [0.05, 1497597120], [0.04, 1497597180], [0.04, 1497597240], [0.03, 1497597300], [0.02, 1497597360], [0.02, 1497597420], [0.01, 1497597480], [0.01, 1497597540], [0.01, 1497597600], [0.01, 1497597660], [0.01, 1497597720], [0.01, 1497597780], [0.07, 1497597840], [0.06, 1497597900], [0.07, 1497597960], [0.08, 1497598020], [0.07, 1497598080], [0.06, 1497598140], [0.04, 1497598200], [0.04, 1497598260], [0.03, 1497598320], [0.14, 1497598380], [0.14, 1497598440], [0.13, 1497598500], [0.12, 1497598560], [0.1, 1497598620], [0.09, 1497598680], [0.09, 1497598740], [0.07, 1497598800], [0.06, 1497598860], [0.07, 1497598920], [0.1, 1497598980], [0.1, 1497599040], [0.08, 1497599100], [0.06, 1497599160], [0.05, 1497599220], [0.04, 1497599280], [0.04, 1497599340], [0.03, 1497599400], [0.02, 1497599460], [0.05, 1497599520], [0.04, 1497599580], [0.03, 1497599640], [0.03, 1497599700], [0.04, 1497599760], [0.05, 1497599820], [0.04, 1497599880], [0.04, 1497599940], [0.04, 1497600000], [0.04, 1497600060], [0.03, 1497600120], [0.03, 1497600180], [0.02, 1497600240], [0.01, 1497600300], [0.01, 1497600360], [0.01, 1497600420], [0.04, 1497600480], [0.04, 1497600540], [0.03, 1497600600], [0.03, 1497600660], [0.02, 1497600720], [0.04, 1497600780], [0.04, 1497600840], [0.03, 1497600900], [0.03, 1497600960], [0.02, 1497601020], [0.01, 1497601080], [0.01, 1497601140], [0.01, 1497601200], [0.01, 1497601260], [0.01, 1497601320], [0.01, 1497601380], [0.01, 1497601440], [0.01, 1497601500], [0.01, 1497601560], [0.01, 1497601620], [0.63, 1497601680], [1.29, 1497601740], [1.87, 1497601800], [2.4, 1497601860], [2.74, 1497601920], [2.36, 1497601980], [1.93, 1497602040], [1.58, 1497602100], [1.29, 1497602160], [1.7, 1497602220], [2.26, 1497602280], [2.77, 1497602340], [3.1, 1497602400], [3.37, 1497602460], [3.09, 1497602520], [2.56, 1497602580], [2.09, 1497602640], [1.71, 1497602700], [1.4, 1497602760], [1.16, 1497602820], [0.95, 1497602880], [0.78, 1497602940], [0.63, 1497603000], [0.52, 1497603060], [0.42, 1497603120], [0.35, 1497603180], [0.28, 1497603240], [0.23, 1497603300], [0.19, 1497603360], [0.16, 1497603420], [0.13, 1497603480], [0.12, 1497603540], [0.1, 1497603600], [0.08, 1497603660], [0.07, 1497603720], [0.05, 1497603780], [0.07, 1497603840], [0.06, 1497603900], [0.05, 1497603960], [0.04, 1497604020], [0.03, 1497604080], [0.03, 1497604140], [0.02, 1497604200], [0.02, 1497604260], [0.01, 1497604320], [0.01, 1497604380], [0.01, 1497604440], [0.01, 1497604500], [0.01, 1497604560], [0.01, 1497604620], [0.01, 1497604680], [0.01, 1497604740], [0.01, 1497604800], [0.01, 1497604860], [0.04, 1497604920], [0.05, 1497604980], [0.06, 1497605040], [0.08, 1497605100], [0.06, 1497605160], [0.07, 1497605220], [0.06, 1497605280], [0.04, 1497605340], [0.05, 1497605400], [0.04, 1497605460], [0.03, 1497605520], [0.03, 1497605580], [0.02, 1497605640], [0.02, 1497605700], [0.01, 1497605760], [0.01, 149760

Um die Daten leserlich in der Konsole aufzubereiten, empfiehlt es sich „python -m json.tool“ als Formatierungshilfe zu verwenden.

curl 'http://192.168.100.101/render/?target=icinga2.icinga3op_foreman_local.services.load.load.perfdata.load5.value&from=-3hours&format=json' | python -m json.tool

Um die JSON-Daten in der Console zu visualisieren kann man Zach Holman’s Spark verwenden:

[root@graphite ~]# curl 'http://192.168.100.101/render/?target=icinga2.icinga3op_foreman_local.services.load.load.perfdata.load5.value&from=-3hours&format=json' | python -mjson.tool | grep ',' | grep -v '\]' | spark
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3695 0 3695 0 0 230k 0 --:--:-- --:--:-- --:--:-- 240k
▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▃▃▅▅▅▃▃▃▃▅▅███▅▅▃▃▃▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁


 

Conclusio

Das war nur ein kleiner und rudimentärer Überblick was über die Render-API möglich ist. Jedoch bietet sie genügend Anregung um mehr mit Graphite, Icinga 2 und Metriken zu machen. Die Render-APi bietet zudem die Möglichkeit, programmatisch in Scripts darauf zuzugreifen. Mir hat es zumindest Lust auf mehr gemacht und ich denke, dass ich noch weitere Blogposts zu diesem Thema schreiben werde 🙂
Falls ihr nicht warten könnt, hier nochmal der Link zur Doku. Oder ihr schaut einfach mal bei uns in der Graphite-Schulung vorbei und lernt die Render-API am praktischen Beispiel kennen.

Daniel Neuberger
Daniel Neuberger
Senior Consultant

Nach seiner Ausbildung zum Fachinformatiker für Systemintegration und Tätigkeit als Systemadministrator kam er 2012 zum Consulting. Nach nun mehr als 4 Jahren Linux und Open Source Backup Consulting zieht es ihn in die Welt des Monitorings und System Management. Seit April 2017 verstärkt er das NETWAYS Professional Services Team im Consulting rund um die Themen Elastic, Icinga und Bareos. Wenn er gerade mal nicht um anderen zu Helfen durch die Welt tingelt geht er seiner Leidenschaft für die Natur beim Biken und der Imkerei nach und kassiert dabei schon mal einen Stich.

NETWAYS stellt sich vor – Daniel Neuberger

This entry is part 18 of 63 in the series NETWAYS stellt sich vor

                                   Name: Daniel Neuberger
Alter: 31
Position bei NETWAYS: Senior Consultant

Ausbildung: Fachinformatiker für Systemintegration
Bei NETWAYS seit: April 2017

Was genau gehört zu Deinem Aufgabenbereich bei NETWAYS?
Bei NETWAYS bin ich als Senior Linux Consultant für die Beratung und die Umsetzung beim Kunden vor Ort verantwortlich. Meine Themenschwerpunkte sind Icinga2, Elastic, Ansible und Bareos. Ein weiterer Aufgabenbereich ist das Halten von Trainings für Bareos und Icinga2.
Was macht Dir an Deiner Arbeit am meisten Spaß?
Wenn ich in immer unterschiedlichen Umgebungen und mit wechselnden Anforderungen mit dem Kunden gemeinsam eine entsprechende Lösung finden und umsetzen kann, dann bringt mir meine Arbeit Spaß. Das Arbeiten mit Menschen ist das was die Arbeit in der IT für mich nicht eintönig werden lässt. Auch ein gutes kollegiales Umfeld ist mir wichtig und steigert den Spaß bei der Arbeit entscheidend.
Wie bist Du zur IT und speziell Linux und anderer Open Source Software gekommen?
Zur IT als Beruf kam ich erst spät. Bis zu meiner ersten Lehre mit 21 beschränkte sich der Umgang mit Computern seit meinem 13 Lebensjahr auf das Spielen und dieses für solches entsprechend zu warten und zu rüsten. Dann kam die erste Lehre als käufmännischer Assistent für Informationsdatenverarbeitung und danach die zweite Lehre zum Fachinformatiker wo meine Leidenschaft für Linux entfacht wurde. Das erste größere Open Source Projekt, mit dem ich dann in Berührung kam, war Bacula, was auch der Grundstein für meine nach der Lehre folgenden Consulting-Jahre im Open Source Backup Bereich für Bacula und Bareos war.
Welche größeren oder besonders interessanten Projekte stehen zukünftig an?
42
Was machst Du, wenn Du mal nicht bei NETWAYS bist?

Wenn ich nicht bei NETWAYS bin, dann erhole ich mich gerne in der Natur beim Mountain Biken oder beim Arbeiten und Entspannen in unserem Garten hinter dem Haus. Dort stehen auch unsere Bienen, deren Pflege und Zucht ich mich gemeinsam mit meiner Frau widme. Wenn ich dann nicht mal vom Rad gestürzt bin oder die Bienen mich zerstochen haben, gehe ich auch noch auf die Matte und mache etwas Judo.
Wie geht es in Zukunft bei Dir weiter?
Das ist immer schwer zu sagen. Man kann die Zukunft nicht voraus sagen. Aber man kann sich diese vorstellen und versuchen, diese entsprechend der Vorstellung zu gestalten. In dieser Vorstellung freue ich mich langfristig darauf, bei NETWAYS meinem Beruf im Einklang mit meinem privaten Leben nachgehen zu können.

Daniel Neuberger
Daniel Neuberger
Senior Consultant

Nach seiner Ausbildung zum Fachinformatiker für Systemintegration und Tätigkeit als Systemadministrator kam er 2012 zum Consulting. Nach nun mehr als 4 Jahren Linux und Open Source Backup Consulting zieht es ihn in die Welt des Monitorings und System Management. Seit April 2017 verstärkt er das NETWAYS Professional Services Team im Consulting rund um die Themen Elastic, Icinga und Bareos. Wenn er gerade mal nicht um anderen zu Helfen durch die Welt tingelt geht er seiner Leidenschaft für die Natur beim Biken und der Imkerei nach und kassiert dabei schon mal einen Stich.