Seite wählen

NETWAYS Blog

Perl statt PHP und Python

Wir hatten schon das Thema ja mit Python und auch mit PHP, zum Abschluss möchte ich noch die Möglichkeit mit Perl aufzeigen.
Darf ich wieder vorstellen: Mojolicious

A next generation web framework for the Perl programming language.

Die Installation erfolgt ganz einfach:

$ curl -L https://cpanmin.us | perl - -M https://cpan.metacpan.org -n Mojolicious

Mit dem Programmcode:

use Mojolicious::Lite;
get '/' => {text => 'Hello, World!'};
app->start;

Die Ausführung erfolgt dann mit:

$ morbo hello.pl

Wie auch bei den anderen Microframeworks, läuft alles recht schnell und einfach von der Hand.
Wer mehr Informationen zu Mojolicious braucht, der wird bei Perl-Magazin fündig 😉
An der Stelle, viel Spaß damit!

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_smartvalues Release … YEAH!!!

Endlich bin ich dazu gekommen, den schon im Post vom letzten Sommer angekündigten Check für S.M.A.R.T. -Werte zu veröffentlichen.
Ich hatte es ja schon angedroht, nun mache ich es wahr. 😉
Wir haben diesen Check nun schon ein gutes Jahr im Betrieb und er liefert seine Daten von daher kann ich ihn nur wärmstens empfehlen.
Bilder gibt es dieses Mal auch zu sehen, lasst sie am besten einfach mal auf euch wirken.
Wenn der Eine oder Andere von euch noch weitere tolle Ideen/Vorschläge hat, dann lasst es uns wissen. Wir lieben Monitoring, von daher stehen die Chancen recht gut, dass wir noch mehr umsetzen wollen.
Ich schrieb ja auch schon, dass die freundlichen Kollegen der Thomas Krenn AG auch ein Plugin für das Ermitteln der S.M.A.R.T. -Werte gebaut haben, dieses erfüllt im Wesentlichen auch die gleichen Aufgaben. Ich wollte das Ganze aber doch noch ein wenig toppen.
Hier ein paar Beispiele wie es aufzurufen ist:

# cd /path/to/check/smartvalues
# ./check_smartvalues -db check_smartvalues.db.json -c check_smartvalues.db.json -s -d 'megaraid,22 /dev/sda'
OK: [ 22 OK ] - [ 0 WARNING ] - [ 0 CRITICAL ] - [ 0 UNKNOWN ] in 0.163578987121582ms ( for details pls take a look in longoutput )
OK: on LSI MegaRAID - [ DeviceID 22 ] - #5 - Reallocated_Sector_Ct is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #9 - Power_On_Hours is [ 100 ] - [ w: 200, c: 300 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #12 - Power_Cycle_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #170 - Available_Reserved_Space is [ 100 / 010 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #171 - Program_Fail_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #172 - Erase_Fail_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #174 - Unexpected_Power_Loss is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #183 - Runtime_Bad_Block is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #184 - End-to-End_Error is [ 100 / 090 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #187 - Reported_Uncorrect is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #190 - Airflow_Temperature_Cel is [ 31 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #192 - Power-Off_Retract_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #199 - UDMA_CRC_Error_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #225 - Host_Writes is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #226 - Timed_Workload_Media_Wear is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #227 - Timed_Workload_Host_Read/Write _Ratio is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #228 - Power-off_Retract_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #232 - Available_Reservd_Space is [ 100 / 010 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #233 - Media_Wearout_Indicator is [ 043 ] - [ w: 35, c: 25 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #241 - Total_LBAs_Written is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #242 - Total_LBAs_Read is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #249 - Total_NAND_Writes is [ 100 ]

oder mit mehr als nur einer Platte …

# ./check_smartvalues -db check_smartvalues.db.json -c check_smartvalues.db.json -s -d 'megaraid,22 /dev/sda' -d 'megaraid,21 /dev/sda'
OK: [ 44 OK ] - [ 0 WARNING ] - [ 0 CRITICAL ] - [ 0 UNKNOWN ] in 0.18438987121582ms ( for details pls take a look in longoutput )
OK: on LSI MegaRAID - [ DeviceID 22 ] - #5 - Reallocated_Sector_Ct is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #9 - Power_On_Hours is [ 100 ] - [ w: 200, c: 300 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #12 - Power_Cycle_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #170 - Available_Reserved_Space is [ 100 / 010 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #171 - Program_Fail_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #172 - Erase_Fail_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #174 - Unexpected_Power_Loss is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #183 - Runtime_Bad_Block is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #184 - End-to-End_Error is [ 100 / 090 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #187 - Reported_Uncorrect is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #190 - Airflow_Temperature_Cel is [ 31 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #192 - Power-Off_Retract_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #199 - UDMA_CRC_Error_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #225 - Host_Writes is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #226 - Timed_Workload_Media_Wear is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #227 - Timed_Workload_Host_Read/Write _Ratio is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #228 - Power-off_Retract_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #232 - Available_Reservd_Space is [ 100 / 010 ]
OK: on LSI MegaRAID - [ DeviceID 22 ] - #233 - Media_Wearout_Indicator is [ 043 ] - [ w: 35, c: 25 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #241 - Total_LBAs_Written is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #242 - Total_LBAs_Read is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #249 - Total_NAND_Writes is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #5 - Reallocated_Sector_Ct is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #9 - Power_On_Hours is [ 100 ] - [ w: 200, c: 300 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #12 - Power_Cycle_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #170 - Available_Reserved_Space is [ 100 / 010 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #171 - Program_Fail_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #172 - Erase_Fail_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #174 - Unexpected_Power_Loss is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #183 - Runtime_Bad_Block is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #184 - End-to-End_Error is [ 100 / 090 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #187 - Reported_Uncorrect is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #190 - Airflow_Temperature_Cel is [ 32 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #192 - Power-Off_Retract_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #199 - UDMA_CRC_Error_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #225 - Host_Writes is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #226 - Timed_Workload_Media_Wear is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #227 - Timed_Workload_Host_Read/Write _Ratio is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #228 - Power-off_Retract_Count is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #232 - Available_Reservd_Space is [ 100 / 010 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #233 - Media_Wearout_Indicator is [ 041 ] - [ w: 35, c: 25 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #241 - Total_LBAs_Written is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #242 - Total_LBAs_Read is [ 100 ]
OK: on LSI MegaRAID - [ DeviceID 21 ] - #249 - Total_NAND_Writes is [ 100 ]

und hier das Ergebnis im neuen Icinga Web 2 …
sdd22-smart-values
 
Nützliche Links:

Nicht noch ein S.M.A.R.T. Check …

… es gibt doch schon so viele davon! JA das dachte sich mein Kollege der Achim Ledermüller auch und bat mich doch vor ca. Zwei Wochen, ich solle Ihm einen Check für SSD Platten (für sein Ceph-Projekt) in Unser Monitoring einbauen. Was grundsätzlich mit Checks von der monitoringexchange.org Platform abgedeckt wird hat meinen Kollegen nicht zufriedenstellen können, seine Anforderungen lauteten wie folgt:

S.M.A.R.T. Werte der SSDs zuverlässig überprüfen.
– Mindestens MWI.
– Recherchieren welche Werte sonst aussagekräftig sind!

Die Freunde von Thomas-Krenn haben sich wohl das Gleiche gedacht und auch so ein Plugin gebaut. Da wir aber nur hier bei Uns ziemlich pingelig sind was den Umfang so wie Portabilität an Software (seien es auch nur Plugins) angeht, habe ich mich kurzerhand dazu entschieden ein neues Plugin auf Basis des schon Vorhanden zu schreiben.
Lange rede kurzer Sinn, “check_smartvalues” wurde geboren und deckt eigentlich alles ab, was man sich bei anderen S.M.A.R.T. -Checks so Wünscht und noch viel mehr ( mehr möchte Ich allerdings noch nicht verraten 🙂 ).
Da ich derzeit einen großen namhaften Kunden in Bezug auf das am Ende des Jahres kommende Icinga2 & Icingaweb2 betreue, wollte ich auch Euch die Ansicht der neuen Web-UI nicht vorenthalten. Hier mal ein Bild …

lx-ssd-smart-icingaweb2-longoutput

Der Longoutput der Plugins im neuen Icingaweb2, mit hübschen Kuchen Diagrammen.

Im derzeit noch vielerorts Installiertem “inGraph” für Icingaweb1, sieht die ganze Sache natürlich auch sehr schön aus

mwi

Der “Media Wearout Indicator” hier im “inGraph-Icingaweb1” über eine Zeitschiene von einem Monat mit einem Scalefactor bei 90% ( sonst würde man halt nix Sehen ).


und weil ich Persönlich ein großer Fan des neuen Icingaweb2 bin, und diese HTML5 Kuchendiagramme einfach liebe, hier nochmal eine Nah-Ansicht des “Media Wearout Indicator” …
mwi-icinga2

hier der “Media Wearout Indicator” in Groß, man sieht auch sehr schön, das die Platte (eine Intel 530 SSD hinter dem MegaRaid LSI mit DeviceID 22 ), nach eben nur 4 Wochen Lifetime doch schon sehr geschruppt wurde.


Das Plugin ist derzeit noch im Testing, bei Uns hier im Monitoring allerdings schon mal Live da mein Kollege eben auch sehr für Graphen zu begeistern ist. Es bezieht seine Daten sowie auch die Konfiguration für Schwellewerte aus einer JSON-Datenbank, das ganze sieht dann in etwa so aus …
lx-ssd-database
Sobald den die Letzten Tests abgeschlossen sind werden ich den Check auf der neuen Icinga Exchange Plattform zum Download anbieten.
Im übrigen, das Plugin ist in seiner Grundfunktion schon als Multicheck ausgelegt, so viel möchte ich an dieser Stelle nun doch schon mal verraten. 😉
Macht euch auf was gefasst …
 

Brackets – Open Source Editor

Brackets(Quelle: brackets.io)

Brackets ist ein Open Source Editor von Adobe und ist – haltet euch jetzt gaaaanz fest: Open Source!!
Der Editor wurde speziell für Web Designer und Front-End Developer entworfen, kann aber durch Zusatzmodule auch beispielsweise Perl handeln. Ich finde das Brackets zwar im Vergleich zu anderen Editoren beim Tippen eher etwas “langsam” bzw. “träge” reagiert, dafür ist die GUI aber schön aufgeräumt, wodurch für den Code viel Platz zur Verfügung steht.
Eines meiner persönlichen Highlights ist das “Live HTML Development”. Ja, richtig gelesen! Änderungen am HTML werden direkt an den Browser übermittelt ohne zwischendurch speichern zu müssen. Die Entwickler von Brackets haben hierzu ein sehr schönes Video-Beispiel veröffentlicht, in dem auch das modifizieren von Stylesheets gezeigt wird.
Die Stylesheet Funktion ist eine weitere, wirklich sehr coole Geschichte. Die Stylesheets werden (egal in welcher extern eingebundenen Datei sie stecken) direkt an Ort und Stelle angezeigt. Das hin und her springen zwischen mehren Dateien entfällt.
Wenn ihr mehr über Brackets wissen oder es einfach mal ausprobieren wollt: http://brackets.io  🙂

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.

Veranstaltungen

Mi 21

Icinga 2 Advanced Training | Online

April 20 @ 09:00 - April 22 @ 17:00
Mi 21

InfluxDB & Grafana | Online

April 20 @ 09:00 - April 21 @ 17:00
Di 27

Elastic Stack Training | Online

April 27 @ 09:00 - April 29 @ 17:00
Di 27

Graylog Training | Online

April 27 @ 09:00 - April 28 @ 17:00
Mai 04

GitLab Fundamentals Training | Online

Mai 4 @ 09:00 - Mai 5 @ 17:00