Nagios zur Druckerueberwachung
Drucker sind mit eines der Leidwesen eines jeden Administrators. Steckengebliebene Druckauftraege kann man oft noch leicht remote aus der Queue loeschen. Aber dann wird es auch schon haerter. Sie fressen Papier das umstaendlich wieder irgendwo herausgesucht werden muss, leere Papierfaecher fuehren zu endlosen Supportanfragen, genau wie leerer Toner oder nicht ganz geschlossene Abdeckklappen. Viele User schaffen es auch nicht aus den Lampen und Symbolen auf den Druckern schlau zu werden, so dass oft nur ein Abstecher vor Ort uebrig bleibt. Wie gut ist es dann, wenn der Admin schnell und uebersichtlich einen Status des Druckers geliefert bekommt, bzw. noch viel besser bei auftretenden Problemen schon gleich frueher gewarnt wird.
Fuer alle Administratoren die Nagios als Monitoringsystem verwenden, gibt es ein wundervolles Plugin von der Firma Ciphron zur Verfuegung gestellt: check_printer, dass es erlaubt Drucker sehr gut mit Nagios zu monitoren. Das Plugin ist auf dem CIPHRONs CORPORATE BLOG genauer vorgestellt.
In Nagios ist es sehr schnell installiert und eingerichtet. Ich gehe im folgenden von einem Debian System aus.
Das Plugin herunterladen und in /usr/lib/nagios/plugins/ abspeichern. Da es in PHP geschrieben ist und SNMP braucht muessen entsprechende Pakete installiert sein, aptitude install php5-cli php5-snmp hilft bei Bedarf weiter. Dann muss ein ein checkcommand definiert werden:
define command{
command_name check_printer
command_line /usr/bin/php $USER1$/check_printer $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$
}
und schon kann es losgehen. Wenn ein Drucker bereits als Host definiert ist, kann es losgehen mit dem definieren von entsprechenden Services. Um Tonerinformationen herauszubekommen reicht schon ein einfaches:
define service{
use generic-service
host_name MeinDrucker
service_description TONER
contact_groups drucker-admins
check_command check_printer!123.123.123.123!public!toner!1!0.1
}
Die Syntax ist !IP!SNMP-Community!Welche Info!Wert!Warnlevel!. Das Beispiel gibt fuer einen Drucker MeinDrucker eine Warnung, wenn der Fuellstand des ersten Toners (meistens Schwarz) unter 10% faellt.
Das Plugin erklaert seine Funktionen selber sehr gut, schmeisst ueber fast alles Informationen aus und kann Warnungen beim Unterschreiten verschiedener Level etc. ausgeben. Echt superklasse und superpraktisch!!


September 16th, 2008 at 23:53
Hi,
cooler Post mit guter Anleitung. Eine Frage hab ich noch wenn ich den Screenshot angucke: Warum benutzt du die Alert Funktion des Plugins nicht? Das zeigt alle Probleme des Druckers (Papierstau, Überhitzt, Speicher kaputt uvm). Klappt das mit den Druckern nicht?
Gruß,
Jan
September 22nd, 2008 at 21:58
Hi,
sorry der erst so spaeten Antwort! Ich werde die Alert-Funktion nutzen, nur hatte ich das Plugin da gerade erstmal schnell fuer 7 Drucker eingerichtet und wollte mir das alles mal angucken… Anfang Oktober werde ich mich dann intensiver damit beschaeftigen, das fehlerbereinigte von Euch nehmen, und dann die Alert-Funktion pruefen und sehr warscheinlich auch nutzen
Ich gebe dann nen Statusbericht ob alles mit allen Druckermodellen passt. Klasse Plugin BTW, und das check_time_sync is ja mal auch superpraktisch!
Juni 22nd, 2009 at 11:33
Hi,
sehr gutes Printer tool.
Leider funktioniert die Page Abfrage bei Konica Minolta Druckern nicht. Bei allen anderen schon.
Irgend eine Idee, welches Tray ich abfragen muss?
August 7th, 2009 at 13:36
this contribution rocks!! it works with our printer, so easy to implement to nagios… keep a good work dude..
Oktober 27th, 2009 at 13:07
hi,
mein nagios mag das plugin wohl nicht!! wenn ich das plugin über die commands.cfg einbinde und nagios reload ausführe, kommt ne Fehlermeldung: Config Error! ich könnte mir vorstellen das es an php liegt, bin mir aber nicht sicher. kann jemand helfen??
Oktober 27th, 2009 at 13:09
moin! poste mal den config error was da genau wo steht.
Oktober 27th, 2009 at 13:17
yep, es ist die Standard antwort: “Running configuration check… CONFIG ERROR! Reload aborted. Check your Nagios config”.
Ich habe folgendes in meine “commands.cfg” eingefügt und nagios reloaded:
define command{
command_name check_printer
command_line /usr/bin/php $USER1$/check_printer $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$
}
dann kommt der Fehler!! nehme ich es raus und reloade, funktioniert es wieder.
Oktober 27th, 2009 at 13:24
gucke mal bitte in die resource.cfg was da als $USER1$ steht, sollte /usr/lib/nagios/plugins/ sein. dann ueberpruefe ob die check_printer auch in genau dem verzeichnis liegt. weiter musst du das paket php5-cli (oder auch php4-cli entsprechend deiner phpversion) installiert haben damit die binary existiert. guck mal nach und sag obs geholfen hat…
Oktober 27th, 2009 at 13:29
da steht “$USER1$=/usr/local/nagios/libexec” da liegt auch die “check_printer”. Es scheint dann wohl am php Paket zu hängen. ich habe php5 auf meinem openSuse installiert. ob ich php5-cli habe kann ich selbst nicht feststellen??!! könnte ich es per yast nachinstallieren?
Oktober 27th, 2009 at 13:32
muesste eigentlich. ich kenn mich mit opensuse nich aus da ich alles unter debian mache, aber guck mal nach nem paket wie php5 und installiere es… _muesste_ eigentlich gehen, ansonsten im netz suchen, du brauchst wiegesagt die /usr/bin/php binary falls diese nicht existiert.
November 7th, 2009 at 16:26
hi, bin jetzt auf Ubuntu umgestiegen… leider der gleiche Fehler beim einbinden des “define Command{..” in meine command.cfg. Nagios reload endet mit dem selben Error. Rufe ich in der Shell das Commando “./check_printer 192.168.2.100 public toner 3″ auf, bekomme ich den korrekten Status meines Drucker und den Tonerstand. was mache ich falsch??
November 7th, 2009 at 17:44
hi stefan, schicke mir doch bitte per mail deine commands.cfg und die komplette fehlermeldung per mail an prego@pregos.info. dann kann ich dir sicherlich weiterhelfen
vg jan
November 7th, 2009 at 17:47
hallo, yep.. werd ich machen.. danke
November 12th, 2009 at 8:22
hallo Jan, ich hab es gelöst!! Nun habe ich aber noch eine Frage zur Syntax (!IP!Comunity!…).. Ich würde gerne statt der IP-Adresse den Host-Namen eingeben oder am besten nur “check_printer!public nutzen wie bei vielen anderen Plugins. Gibt es da eine Möglichkeite?
November 23rd, 2009 at 11:27
hi stefan,
sorry der spaeten antwort. Es sollte dafuer ausreichen bei dem define command{} das $ARG1$ gegen ein $HOSTADDRESS$ auszutauschen und die nachfolgenden $ARG*$ jeweils -1 anzupassen.
vg jan