Seite wählen

NETWAYS Blog

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:

powerline-shell

powerline-shell
Hi folks,
ich habe letztens bei meinem Kollegen Mr. Frog ein neues Bling-Bling entdeckt The Mighty Powerline-Shell die mir besonders gut gefallen hat, ich war so angefixt das Ich mir einbildete das auch haben zu müssen, gesagt getan.
Die Powerline-Shell ist richtig Gut, da Sie als Segmentiertes ’self contained‘ Python-Script folgende Features abdeckt.

  • Ihr seht egal ob Git, SVN, Mercurial o. Fossil immer was gerade Sache ist
  • wenn eure Pfade auf einer Zeile zu lang werden, dann werden Sie gekürzt ohne relevante Information zu verlieren
  • viel Buntes für den Kreativen Ops/Dev ( Colored Themes )
  • auch werden euch Rückgabe werte des letzten Befehls aus eurer Shell ungleich 0 zurückgegeben
  • wenn Ihr euch per SSH auf entfernte Systeme verbindet, dann wird auch dies durch ein Schloss Symbol kenntlich gemacht
  • wenn das aktuelle Verzeichnis nicht mit euren Rechten beschrieben werden darf, wird dies auch durch ein Schloss Symbol wiedergegeben
  • Sie kann auch den Title eures TerminalEmulator mit user@host:/path Einträgen umschreiben
  • zeigt auch Änderungen an der Umgebung an ( Virtual Environment )
  • die aktuelle Zeit ist nun auch mit am Start ( Segment wurde von mir eingeführt, da ich dieses Feature für mein Daily benötige )
  • zeigt auch laufende Hintergrund Jobs an ( Shell forks )
  • die Features sind leicht zu erweitern ( Segmente werden in Python geschrieben )

Die Powerline-Shell ist auch sehr benutzerfreundlich in etwa 3 Schritten eingerichtet.

cd ~ && mkdir git && cd git
git clone https://github.com/powerline/fonts.git powerline-shell-fonts
git clone 
./powerline-shell-fonts/install.sh
./powerline-shell/install.py
vi ~/.bashrc

Noch fix den Prompt auf die Powerline-Shell umbiegen. 😉

function _update_ps1() {
	export PS1="$(~/powerline-shell.py $? 2>> /dev/null)"
}
export PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"

Und einen der neu installierten Fonts mit dem ‚Powerline‘ Suffix wählen, fertig.
Hier noch Bilder „weil Bilder mehr als tausend Worte …“ naja ihr wisst schon.
github-lenrico-powerline-shell
Links:

https://github.com/Lokaltog/powerline-fonts
 

Cubietruck ( Entertainment in 1080p )

Was macht der Netways-Mitarbeiter, wenn er abends nach Hause kommt?
Er schaltet sein Entertainment-System ein und legt klassische Musik auf …
… Klassik? Nein nicht wirklich, das mit dem Entertainment System ist allerdings wahr.
Ich möchte euch hier etwas über mein Entertainment-System berichten, dem Cubietruck, einem leistungsfähigen Ersatz für den RaspberryPi.
cubietruck-hand
Zudem haben Netways-Mitarbeiter unter anderem noch andere Anforderungen an solch ein Spielzeug. 🙂 Hier mal einige mögliche Anwendungsthemen:

  • als MPI Cluster ( ja so Verrückte gibt es auch hier bei Netways 😉 )
  • als WLAN AP ( oder Bluetooth FileShare )
  • als Network Monitoring TAP ( für die Traffic Analyse im heimischen Netzwerk – aber auch in Firmennetzen ganz hilfreich )
  • als NAS ( mit Samba und NFS als Shared-Storage für Backup von Fotos, Dokumenten etc. … )
  • als Mobile Computer ( zum Surfen, Schreiben, Programmieren sogar mit dem heimischen Fernseher )
  • als Computer zum Lernen ( für die Kleinen aber auch ganz Großen )
  • als Home Entertainment-System ( mit KODI ehemals XBMC, wahrscheinlich das, was sich viele als Ersatz oder gar Ergänzung zu einer Set-Top Box wünschen )

Mit der Installation von Ajenti oder einer der anderen WebGUI’s ( OpenPanel, Webmin ) ist es möglich das Gerät vollständig über ein Webinterface zu steuern, in Kombination mit OwnCloud und MySQL/MariaDB ist das System eine vollwertige CloudSharing Lösung.
Auch LXDE oder gar XFCE stressen die Allwinner A20 CPU nicht sonderlich. Somit ist das System auch als Lerncomputer für die Kids ganz gut geeignet (es muss nicht immer teure Hardware sein) .
Die Bastler unter euch haben bestimmt auch ganz exotische Vorstellungen bzgl. Networking. So ist es möglich, den Cubietruck auch als WLAN AP einzusetzten. Entweder händisch mit OpenWRT oder auch ganz bequem über die WebGUI mit DD-WRT. Die ganz Pfiffigen unter euch basteln sich das Ganze auf Basis der verfügbaren Distributionen in wenigen Minuten selber zusammen.
cubietruck-case
Viele von euch haben dieses System vermutlich bereits für sich erkannt, und Fragen sich bestimmt „Warum berichtet er uns hier den über ein Gerät das bereits ca. ein halbes Jahr alt ist?“, und die Antwort ist „Kinderkrankheiten“, jedes System bzw. OS ist in der Phase seiner Entwicklung noch recht verbugged, das betraf auch das Cubieboard3. Der Cubietruck ist momentan der beste Ersatz für den RaspberryPi, wenn es um Leistung und Ausstattung geht.
Hier mal die Hardware Ausstattung des Cubieboard3 ( aka Cubietruck ):

  • AllWinnerTech SOC A20 ARM® Cortex™-A7 Dual-Core ARM®
  • 2GB RAM DDR3
  • VGA & DVI 1080P
  • 10/100/1000Mbit Ethernet
  • Wifi+BT ( in einem Chip )
  • SATA 2.0 Port für 1.8/2.5′ HDDs ( auch 3.5′ HDDs sind möglich brauchen allerdings einen externen Strom Anschluss )
  • MicroSDHC Slot sowie NAND 4GB ( mit vorinstalliertem Android )
  • 2 x USB 2.0
  • 1 x Infrarot
  • 1 x 3.5 klinke
  • 1 x LED ( diese könnt Ihr auch selber ansteuern )
  • 1 x SPDIF
  • 1 x Power DC5V@2.5A ( ein altes Smartphone USB-Ladegrät reicht hier aus )
  • 1 x 54 Pin
  • 1 x JTAG & UART over USB
  • Board Abmessung 11 x 8 cm
  • mitgeliefert werden Plexiglass und Schrauben ( als Provisorisches Gehäuse ganz nett anzusehen )

cubietruck-overview
Die folgenden Links könnten für den Einstieg ganz Hilfreich sein.

Sonstiges:

 

Galera Clustering

Viele von Euch kennen es bestimmt schon, das Project Galera. Dieses vereint die wsrep API mit MySQL bzw. dessen Fork MariaDB. Zum aktuellen Zeitpunkt werden schon InnoDB und die XtraDB – Storage Engine unterstützt. Letzteres ist eine InnoDB-Erweiterung und wird von Percona entwickelt .

Galera-Cluster-logo-1024x195

Der Galera Cluster bringt folgende Features/Benefits mit:

  • Multi-Master schon von Haus aus
  • Synchrone Replication kein Datenverlust mehr auch keine Slave-Lags mehr (Boa wie mich das immer wieder nervt)
  • Eng gekoppelt Alle Knoten haben grundsätzlich denselben Status, keine Daten mehr die auseinander laufen
  • Multi-threaded Slave für bessere Performance der Nutzlast
  • Keine Master-Slave Failover Operationen nötig oder die Notwendigkeit eine virtuelle IP binden zu müssen
  • Hot Standby keine Downtimes während des Failover (denn es gibt keinen Failover mehr)
  • Automatic Node Provisioning kein manuelles Eingreifen mehr um Knoten in den Cluster zu bringen, die Daten werden automatisch auf den neuen Knoten repliziert
  • Supports InnoDB bald auch MyISAM (ist noch experimentell)
  • Transparent zur Application benötigt in Kombination mit GLB (oder HAproxy) keine Änderungen an der Applikation
  • Kein Aufspalten von Read und Write Operationen nötig (einfach Feuer auf das Ding 😉 ).

Galera ist somit die Lösung für Unternehmungen die ein hohes Aufkommen an Schreib- und Lese -Operationen in ihren Datenbanken erwarten. Die Main „Use Cases“ für den Betrieb des Galera Cluster sind eben kurz und gut, Skalierung der Schreib-Operationen, entkoppeln von Latenz Killern (wie zB. lange laufende Queries).
Die Entwickler des Forks MariaDB haben diese vielfältigen Möglichkeiten erkannt und bieten auf ihren Seiten Anleitungen zum Betrieb so eines Basic Setups an. Ebenfalls werden dort fertige Pakete für die Installation auf alle Major Linux Distributionen angeboten, somit fällt auch schon mal das Kompilieren weg.
Für das Setup können zwei Loadbalancing-Produkte zum Einsatz kommen: Zum einen der schon etwas in die Jahre gekommene (aber immer noch sehr beliebte) HAproxy und zum anderen GLB (Galera LoadBalancer), der eigens für Galera, aber außerhalb des Projekts entstanden ist. Wir bevorzugen für unsere Setups meist den GLB da dieser auch während der Laufzeit (wenn nötig auch automatisiert durch Skripte) konfiguriert bzw. gesteuert werden kann. Änderungen können somit im laufenden Betrieb und auch unter Last problemlos vorgenommen werden. Wenn es dann doch mal knapp wird, kann man im Betrieb ganz einfach einen weiteren Knoten hinzufügen 🙂

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 …