nativer cifs Client (mount_smbfs) Meldung - Erklärung

Errorsmith

Kompiliertier
Hi

Ich habe die etwas undankbare Aufgabe bekommen unser Monitoring auf Vordermann zu bringen. Will heißen: Wir haben bisher nur ein Tool das irgendwelche Sachen pingt und einen Haufe .cmd Skripte mit diversen Aufgaben.
Neben dem üblichen (Connectivity, Systemparameter etc), ist es ein wichtiger Bestandteil des Monitorings Verzeichnisse zu überwachen (Alter & Anzahl der Dateien darin etc).

Ich habe mich nach einer ganzen Reihe von Tests für Zabbix aus den Ports entschieden, da es einerseits flexibel genug ist um alles umzusetzen was wir brauchen (erweiterbar via Skripts etc), andererseits aber auch einfach zu bedienen ist (die meisten in der Abteilung kommen aus der Windowswelt und wollen/können sich nicht mit FreeBSD auseinandersetzen. Die Möglichkeit "Proxies" an anderen Standorten aufzustellen ist ebenfalls ein Vorteil.
Im Rennen ist noch PRTG, das wird dann aber weiter oben entschieden und zur Zeit habe ich aufgrund der Erweiterbarkeit mit Zabbix die Nase vorn, aber das nur am Rande.

Ok, das zum Hintergergrund, nun zu meinem Problem:

Diese zu überwachenden Verzeichnisse liegen auf Windows-Shares. Ich habe mit dem nativen mount_smbfs ein share gemountet:
Code:
//USER@SERVER/share             /livedrive/pfad          smbfs   rw      0       0

Weiter habe ich ein Skript laufen, das alle 120 Sekunden vom Zabbix-Agent aufgerufen wird und die Anzahl der Dateien zurück gibt:
Code:
#!/bin/sh

# no argument given
if [ -z "$1" ]
then
    echo "-1"
    exit 1
fi

if [ -d "$1" ]; then
    # $1 is a directory
    count=`find $1 -maxdepth 1 -type f | wc -l`
    echo $count

    exit 0
fi

# no directory found - exit
echo "-2"
exit 2

Die Anzahl der Files liegt in der Regel zwischen 0 und 200 Dateien, in Extremfällen auch mal bei 500.

Ich bekomme nun diese Meldungen:
Code:
Jul 20 14:12:35 ds-1 kernel: smb_iod_recvall: drop resp with mid 49930
in /var/log/messages. Gleichzeitig bekomme ich timeouts bei der Ausführung des Skripts.

Meine Fragen:
1. Was will mir die Meldung sagen?
2. Gibt es einen Zusammenhang zw. den Meldungen und den timeouts sowie
3. Wie kann ich die Ausführung des Skripts beschleunigen um die timeouts wegzubekommen?

Falls jemand eine elegantere Möglichkeit kennt um die Windowsshares zu überwachen, bin ich natürlich auch offen dafür.
Einziger Knackpunkt: für die Agents / Proxies habe ich kleine Thinclients zur Verfügung: Futro S700 mit 2GB HDD, viel Platz (um z.B. Samba zu installieren) habe ich da nicht (2GB).

Grüße,
errorsmith
 
Wenn ich das richtig verstehe, mountest du eine Freigabe auf "Uralt"-Büchsen mit (100 Mbit/s) und machst da in einem / mehreren Verzeichnis mit deinem Script eine einfache Zählung - richtig?

Du könntest es auch mit einem einfachen ls-Befehl versuchen: ls -pA | grep -v '/' -c
Ob das allerdings schneller ist? Bei einem Verzeichnis mit 200 Dateien (lokal) war es jetzt nicht gerade schneller.

Gruß
Markus
 
Hi

So dolle uralt sind die auch nicht. GBit Ethernet haben sie schon, CPU ist ein Atom mit 1.6GHz. Ein Problem sind eher die Anbindungen der Shares, die liegen auf einem Server der via VPN angebunden ist und das ist nicht immer das schnellste. Da habe ich allerdings keinen Einfluß drauf.

Den find Befehl nutze ich, da es bei verschiedenen Verzeichnissen auch relevant ist nach Namensbestandteilen, Alter/ letzter Änderung etc zu filtern. Das kann find relativ einfach und "modular". Ich habe den Schwellwert für das Timeout von 3 auf 30 Sekunden erhöht und seitdem dieses Problem nicht mehr.

Ansonsten hast du aber recht: Grundsätzlich macht mein Skript nichts anderes als zu zählen wie viele Dateien (nach bestimmten Kriterien) im jeweiligen Verzeichnis liegen.

Hast du eine Idee was mir die kryptische Fehlermeldung sagen will? Unabhängig davon funktioniert das System, ich würde aber gern wissen ob es das auch langfristig tut oder ob sich da irgendein Fehler anbahnt der mir das System irgendwann zusammenbrechen lässt.

Grüße,
errorsmith
 
Leider hab ich keine Idee.

Wäre es evtl. "besser", wenn du lokal auf dem Fileserver ein (Powershell)-Skript schreibst, welches die Aufgabe erfüllt und das Ergebnis in eine Datei packt mit einem Zeitstempel?
Dann bräuchtest du diesen nur interpretieren und das wäre über VPN ebenfalls schneller.

gruß
Markus
 
Zurück
Oben