Damit Snapshots auf einem NetApp-Filer nicht in den Himmel wachsen, muss man deren Größe regelmässig überprüfen. Um dies zu automatisieren und im Falle des Überschreitens definierter Grenzwerte alarmiert zu werden, haben wir ein Nagios-Plugin entwickelt, das diese Werte regelmäßig abfrägt, mit  Schwellwerten vergleicht und auch die Grundlagen für eine kontinuierliche Aufzeichnung (Trending) liefert. Im praktischen Betrieb hat sich dann gezeigt, dass die Situation nicht immer ganz so einfach ist und verschiedene Szenarien zu unterscheiden sind: Zum einen kann das Volume keine Snapreserve definiert haben. In diesem Fall wäre der durch die Snapshots verbrauchte Platz wohl am besten relativ zur Größe des Volumes zu berechnen. Anders, wenn es eine definierte Snapreserve gibt; dann sollte die Auslastung dieser Reserve als Basis für die prozentualen Schwellwerte genommen werden. Ein Beispiel zur Verdeutlichung:

Volume A, 100 GB, keine Snapreserve: Wenn durch die Snapshots insgesamt 18 GB belegt werden, ergibt dies eine relative Auslastung von 18% berechnet auf Basis der Volumegröße.

Volume B, 100 GB, davon sind 20GB als Snapreserve reserviert: Wenn die SnapShots hier 18 GB belegen, ergibt dies eine relative Auslastung von 90% (genau 100/20*18) auf Basis der Snapreserve.

Man sieht also, dass die Definition der einzelnen Szenarien durchaus kompliziert werden kann. Wir wollen aber letztendlich zu einer möglichst einfachen Lösung gelangen, die es uns erlaubt mit einigen wenigen Service-Checks alle vorhandenen und auch zukünftig noch angelegten Volumes zu prüfen. Was uns nicht interessiert, ist bei jedem Anlegen eines neuen Volumes am NetApp-Filer die Nagios-Konfiguration anpassen zu müssen.

Im Allgemeinen wird man dafür mit zwei Servicechecks auskommen, um alle Volumes am Filer prüfen zu können. Man muss nur die beiden Szenarien unterscheiden: Volumes mit definierter Snapreserve und solche ohne. Und genau dafür gibt es den Schalter –check_only, dem entweder der Wert with_reserve oder no_reserve zugwiesen werden kann.

Die in die Nagioskonfiguration zu übertragenden Checks würde dann so aussehen:

Check A erfasst alle Volumes ohne definierter Snapreserve. In diesem Fall wird man die Standardvorgaben für die Schwellwerten von 80% bzw. 95% wohl geringer ansetzen, denn wenn die Snapshots einmal 80% des Volumes verbrauchen, ist es für eine Warnung meist schon zu spät.

$ ./check_netapp_snapshots.pl -H sim -f auth --base=vol
 --check_only=no_reserve -w 20% -c 30%

Check B erfasst alle Volumes mit defninierter Snapreserve. Hier können die Standardvorgaben für die Schwellwerte durchaus passen, da sie ja jetzt relativ zur Snapreserve berechnet werden. Daher entfallen hier -w und -c.

$ ./check_netapp_snapshots.pl -H sim -f auth --base=reserve
 --check_only=with_reserve

Und falls man dann noch die Volumegröße in den Performancedaten haben will, um diese in den RRD-Graphen hübsch darzustellen, setze man den Schalter –perf_volume dazu. Dieser wird ergänzt durch –perf_abs, welcher in den Performancedaten auch die Snapshot-Größe in Blöcken statt Prozent ausgibt.