Select Page

Überwachung von BTRFS Filesystemen

by | Feb 1, 2013 | Linux, Monitoring & Observability, Development

Grüss Gott beisammen, ich bin dann auch mal hier 🙂
In einem Kundenprojekt gehts dann auch gleich zur Sache: BTRFS gilt zwar als experimentiell, aber es gibt dennoch Setups, in denen BTRFS bereits als Filesystem verwendet wird. In OpenSUSE 12.2 gibt es BTRFS in einer verbesserten Fassung, und so ist es auch nicht verwunderlich, dass die Anforderung an ein entsprechendes Check Plugin gestellt wurde.
Das eigentliche Problem hierbei ist, dass der systemeigene df Befehl die BTRFS spezifischen Werte nicht kennt, und ebenso nicht ausgibt. Erst mit btrfs filesystem df / lässt sich beispielsweise ermitteln, dass nicht das eigentliche Filesystem vollgelaufen ist, sondern die Snapshots im Hintergrund zu 100% dicht sind, und sich deswegen nichts mehr auf die Platte schreiben lässt.
Da es im Monitoring Umfeld noch keine geeigneten Plugins gibt, habe ich ein Basisplugin in Perl programmiert, das den Output von btrfs filesystem df / parsen kann, sowie daraus die Werte extrahiert, die dann mit globalen Thresholds verglichen werden sollen. Das ist mitunter nicht ganz trivial, da die Ausgabe dieses Befehls einen kunterbunten Mix aus KB, MB und GB ausspuckt, den man in mathematisch logische Bytes zur weiteren Berechnung zerlegen muss. Alles andere ist aber Standardpluginkost und sollte jedem die Möglichkeit eröffnen, die eigenen BTRFS Filesystemfunktionalitäten neben den obligatorischen df Checks (zB check_disk) zu überwachen.
Um die BTRFS Werte auslesen zu können, werden Root Privilegien benötigt. Da der Icinga Core die Checks als Icinga Benutzer durchführt, muss diesem Benutzer das passwortlose sudo für den Befehl /usr/sbin/btrfs filesystem df /* eingeräumt werden. Achtung: /usr/sbin/btrfs ist zu wenig eingeschränkt – damit könn(t)en als Icinga Benutzer alle BTRFS Einstellungen manipuliert werden!

# visudo
icinga ALL=(ALL) NOPASSWD: /usr/sbin/btrfs filesystem df /*

Auch wenn der Icinga Benutzer keine Shell zur Verfügung hat, kann das Plugin mit diesem Befehl als root getestet werden:

# sudo -u icinga /usr/local/icinga/libexec/check_disk_btrfs -f / -w 50 -c 80
WARNING: btrfs "Data" 62.87% used (1.05GB/1.67GB) OK: "System, DUP" 0.05% used (4.00KB/8.00MB), "System" 0.00% used (0.00/4.00MB), "Metadata, DUP" 19.30% used (90.48MB/468.75MB), "Metadata" 0.00% used (0.00/8.00MB) | data_used=1127428915;50;80;; data_total=1793148846;50;80;; system_dup_used=4096;50;80;; system_dup_total=8388608;50;80;; system_used=0;50;80;; system_total=4194304;50;80;; metadata_dup_used=94875156;50;80;; metadata_dup_total=491520000;50;80;; metadata_used=0;50;80;; metadata_total=8388608;50;80;;

Das Plugin befindet sich in seiner ersten Version im GIT Repository auf git.netways.org – bitte um Tests, Feedback und Anregungen.
Für das Plugin selbst gilt dasselbe wie für das BTRFS Filesystem – experimentell in der ersten Version 🙂

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic Linux | Monitoring & Observability | Development