Für einen größeren Kunden entstand ein Nagios Plugin um eine größere Anzahl von Druckern und Kopierer im Blick zu haben. Besonderen Augenmerk wurde bei der Entwicklung auf die Kompatibilität mit verschiedenen Druckern gelegt ohne dabei Features einzusparen. Als wichtigsten Punkt bietet das Plugin den System Status des Druckers. Es zeigt alle Systemmeldungen aus dem SNMP. Dabei filtert es unwichtige Meldungen wie „Standby“ aus und bewertet die Meldungen nach Wichtigkeit, damit der Nagios nicht unnötig Alarm schlägt. Dabei werden sowohl die „Servity“ im Codes als auch die Ricoh Codes mancher Geräte ausgewertet. Sollte das nicht ausreichen ist können zusätzlich Listen für unwichtige oder kritische Meldungen gepflegt werden.
Weiterhin ist es möglich die Füllstände aller Toner/Tinenpatronen zu überwachen. Meistens kann man an dieser Stelle auch Teile wie den Tonerrestbehälter einsehen. Natürlich liefert das Plugin auch perfdata damit man auch später auswerten kann, wie lange der Toner gehalten hat oder wie viele Seiten in diesem Zeitraum gedruckt wurden. Die Anzahl der bearbeiteten Seiten kann über die internen Counter ausgelesen werden. Natürlich wird auch hier perfdata geliefert. Viele Drucker und Kopierer enthalten eine ganze Menge verschiedener Zähler für verschiedene Fächer und Drucktypen.
Zusätzlich kann das Plugin auch alle Papierfächer und Einzüge überwachen und die Daten als perfdata ausgeben. Oft lassen sich allein damit präzise formulierte Beschwerde begegnen wie „Der Drucker druckt nicht“. Auch herausgezogene oder falsch bestückte Papierfächer kann man so aus der ferne erkennen.
Als kleines Goodie am Schluss kann das Plugin auch Kyocera Kostenstellen / Accounting auslesen. Die Entwicklung dieses Programmteils war etwas aufwändiger, weil die Authentifizierung etwas kryptisch funktioniert und ich keine brauchbare Dokumentation gefunden habe. Es scheint auch generell keine Programme zu geben die Kostenstellen unter Linux auslesen können. Aber für unsere Kunden scheuen wir natürlich keine Mühen ;-).
Wer Interesse an dem Plugin hat kann es gerne auf unserer Website im Downloadbereich herunterladen. Für Verbesserungsvorschläge und Anregungen bin ich dankbar.
Mittwoch, 16. Juli 2008
check_printer – Überprüft Papierfächer, Toner, Tinte und Kostenstellen bei Druckern
Labels:
accounting,
alerts,
check,
check_printer,
counter,
kostenstellen,
kyocera,
nagios,
paper,
paper jam,
perfdata,
printer,
toner
Abonnieren
Kommentare zum Post (Atom)
28 Kommentare:
Supertolles Plugin! Danke dafuer!! :-)
aehm, zeile 258, "magios" ich vermute da einen tippfehler :-)
lg /me
Vielen dank für den Hinweis! Den Fehler hab ich behoben,
Ich hab eine neue Version hochgeladen, welche noch ein paar geänderte SNMP Warn/Critical Codes enthält (Zeile 213/233). Im Laufe der Zeit haben verschiedene Codes beim Kunden zu Fehlalarmen geführt, so dass wir einige entfernen mussten. Über Feedback zu SNMP Codes sind wir jederzeit dankbar!
Gruß,
Jan
Das Tool ist vom Prinzip her extrem praktisch, da man es auch scriptgesteuert zur Auswertung von Druckerzuständen nutzen kann.
Ein wichtiges Kriterium fehlt jedoch meines Erachtens: Bspw. die Seriennummer des Toners oder auch anderer Austauschteile.
Ein Aufruf von bspw. ./check_printer.sh 22.1.133.30 public toner 1 0.2 ergibt
OK - Black Print Cartridge HP C8550A 71% (17750 of 25000 left) | toner=17750toner/ink;5000;0;0;25000
Hier wäre es sehr praktisch, wenn man die Seriennummer des Toners -für dieses Beispiel- angezeigt würde.
Ebenso wäre es schön, wenn sich mehrere Parameter zeitgleich aufrufen ließen (bspw. hardware toner)
Mit freundlichen Grüßen
Wolfram
Hi, ich habe mal eine Frage, wie funktioniert das Plugin hinter einem Print Server? ich kriege da nur unknown zurück
Mit freundlichem Gruß,
jj
Ein sehr cooles Teil! :-)
Hallo,
vielen Dank für ein vielseitiges Tool. Leider hat es kleine Schwächen
(die hier dargestellten Meldungen entstammen einem leicht modifizierten Plugin;
die Zeilen 57 bis 78 wurden auskommentiert):
1. nicht abgefangene PHP-Fehler
===============================
"HP Color LaserJet 2600N", Abfrage "counter 1"
-->
PHP Warning: snmpget(): Error in packet: (noSuchName) There is no such variable name in this MIB. in /usr/local/lib/nagios/plugins/check_printer.php on line 99
PHP Warning: snmpget(): This name does not exist: SNMPv2-SMI::mib-2.43.10.2.1.4.1.1 in /usr/local/lib/nagios/plugins/check_printer.php on line 99
UNKNOWN - Counter 1 does not exist!
"oce CS173" im Ruhezustand, Abfrage "alerts"
-->
PHP Notice: Undefined offset: 1 in /usr/local/lib/nagios/plugins/check_printer.php on line 279
OK - Low Power( 4 3 5 -1 122748928 504)
"Lexmark E342n" mit leerem Papierfach, Abfrage "alerts"
-->
PHP Notice: Undefined offset: 1 in /usr/local/lib/nagios/plugins/check_printer.php on line 279
OK - Fach 2 auffüllen A4( 3 3 8 2 -2 808)
2. nicht erkannte Druckerfunktionen
===================================
"oce 3165", Abfrage "toner 1"
-->
UNKNOWN - Toner/Ink 1 does not exist!
"HP Color LaserJet 2600N" und "oce CS173", Abfrage "paper 1"
-->
UNKNOWN - Tray 1 does not exist!
3. Unerklärliches/Unverständliches
==================================
"HP Color LaserJet 2600N", Abfrage "toner 1"
-->
zwei unterschiedliche Reaktion bei verschiedenen Exemplaren:
OK - Black Toner Cartridge HP Q6000A 68% (34 of 50 left)
UNKNOWN - Toner/Ink 1 does not exist!
"Lexmark E342n", Abfrage "paper 3"
-->
zwei unterschiedliche Reaktion bei verschiedenen Exemplaren
(nicht überprüft, aber mit hoher Wahrscheinlichkeit
auch beim zweiten Drucker kein Papier in manueller Zufuhr):
Critical - Manual Paper 0% (0 of 1 left)
OK - Manual Paper
Viele Grüße
Lutz Walther
@lutz walther:
danke fuer das feedback! ich mach da ein ticket fuer unsere entwicklung raus, damit das in der naechsten version besser laeuft.
wuerden sie zum testen zur verfuegung stehen?
@sh
Gerne.
Lutz Walther
uhm ... genau das Plugin, dass ich gesucht habe!
Wir verwenden im Netzwerk verschiedene Drucker von verschiedene Hersteller. Bei bedarf könnte ich für Sie diverse Anpassungen Testen!
Canon Drucker werden noch nicht komplett Ausgelesen.
^_^
Ich finde das Tool klasse. Konntet Ihr mittlerweile die Fehler beheben und gibt es eine neuere Version?
Gruß
Andi
Funktioniert hier wunderbar mit diversen HP und Brother Modellen.
Danke fuer die Arbeit und bitte in der Zukunft weiterpflegen :)
Hallo, ich hab auch das PlugIn installiert, jedoch hab ich eine Frage. Und zwar geht es um den Hardware-Check. Bei einigen Druckern zeigt er mir dort einen WARNING an mit Status 3. Was bedeutet dieser Status 3??
Vielen Dank!
Hi Marvin,
das kommt auf den Drucker an. Bei manchen Modellen sind die Ausgaben relativ sinnfrei. Oft handelt es sich um Erweiterungen (RAM, Duplexer) oder auch Klappen am Gerät.
Gruß,
Jan
Hallo, danke für die Antwort!
Wir haben es jetzt super am laufen, würden jetzt jedoch z.B. den Wert für einen Warning beim Toner ändern. Der steht zur Zeit auf 3000. Ich möchte aber, dass bei 3000 ein Critical entsteht... Wie und wo muss ich das ändern?
Vielen Dank!
Hallo, danke für die Antwort!
Wir haben es jetzt super am laufen, würden jetzt jedoch z.B. den Wert für einen Warning beim Toner ändern. Der steht zur Zeit auf 3000. Ich möchte aber, dass bei 3000 ein Critical entsteht... Wie und wo muss ich das ändern?
Vielen Dank!
Hallo, brauche hilfe!
icinga:/usr/local/nagios/locallibexec$ sudo ./check_printer.sh
PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/mcrypt.ini on line 1 in Unknown on line 0
PHP Fatal error: Call to undefined function snmp_set_quick_print() in /usr/local/nagios/locallibexec/check_printer.sh on line 82
was mache ich falsch????
Hallo,
ich würde diese Tool auch gerne nutzen. Nur wie implementiere ich das. Habe gerade ein Brett vorm kopf :-( ..
Hallo,
der status wird bei mir immer mit unkown angezeigt und folgender Meldung:
/usr/lib/nagios/plugins/check_printer ip community command
ip community und command habe ich jedoch eingegeben.
Habe das Plugin auch gerade mal getestet.
Wenn ich die Alerts abrufe, erhalte ich folgende Meldungen:
/usr/lib/nagios/plugins/check_printer 192.168.37.222 public alerts
PHP Notice: Undefined offset: 1 in /usr/lib/nagios/plugins/check_printer on line 279
PHP Notice: Undefined offset: 1 in /usr/lib/nagios/plugins/check_printer on line 279
Warning - 31 Remplacer la cartouche défectueuse( 3 4 11 11 -2 1) Fach 1 fast leer( 4 3 8 8 -2 807)
Hallo,
das Plugin funktioniert einwandfrei. Zumindestens habe ich bisher noch nichts Fehlhaftes finden können :-)
Allerdings habe ich eine Frage, bzw. ich würde gerne folgendes ändern wollen (für mich):
Bei der Ausgabe von "alerts" werden nahezu alle Ereignisse ausgegeben. Einige hast du schon rausgenommen, wie bspw. Energiesparmodus.
Besteht die Möglichkeit diese "Liste" zu bearbeiten. In der .php habe ich folgendes gefunden:
--------------
$critical_codes = array ( 8, 1101, 1102, 1112, 1114, 1115 );
$ok_codes = array ( 4, 6, 7, 19, 20, 23, 24, 25, 27, 35, 36, 37, 38, 502, 503, 504, 505, 506, 507, 802, 803, 804, 805, 806, 807, 808, 809, 810, 1001, 1002, 1005, 1106, 1107, 1108, 1111, 1113, 1302, 1304, 1501, 1502, 1503, 1504, 1505, 1506, 1509 );
$location_ignore_codes = array ( 10003, 10033, 10034 );
$location_ok_codes = array ( 13100, 13200, 13300, 13400, 13500 );
$ignore_codes = array ();
--------------
Reicht es hier aus, die Nummern (codes) einfach in den arrays zu tauschen?
Wenn ja, welche Nummer steht für welches Ereignis. Wie kann ich das rausfinden.
Besten Dank im voraus,
Mario
Vielen Dank erstmal für das Zuer verfügung stellen dieses wirklich praktischen Plugins.
Nun ist mir nur eine Kleinigkeit aufgefallen. Wir haben hier einige HP / Kyocera etc. Drucker die mit 4 Trays geladen werden. (Tray 1 die Ausklappbaren, Tray 2-4 Papierfächer).
Leider scheint das Tray 4 nicht, bzw. nicht korrekt, ausgelesen zu werden. Jedenfalls bekommen wir dort dann immer ein UNKNOWN - Tray 4 does not exist! zurück. Was der physikalischen Realität nicht entspricht :)
Evtl. hat jemand eine Idee oder das gleiche Problem?
Sehr tolles Tool! Darauf habe ich ewig gewartet! Vielen Dank!
I have problem with check_printer after debian 5->6 upgrade
./check_printer lp-chodba2 public alerts
UNKNOWN - Internal error
But counter num and toner levels works fine
./check_printer lp-chodba2 public counter 1
OK - Total: 69006
Printer is Ricoh Aficio MP C2800
Hallo zusammen,
gleicher Fall wie bei "hellgast" Bei den Kyocera's gleiche Meldung.
Bei den Samsung alles i.O. Jemand eine Idee an was dies liegen könnte ?
Das Plugin klingt sehr vielversprechend. Gibt es einen Weg, es unter Windows laufen zu lassen ? Wir benutzen den NSClient++.
Wenn ich mir die PHP Binaries für Windows lade, kommt bei Ausführung von check_printer.php:
Fatal error: Call to undefined function snmp_set_quick_print()
Die PHP Doku sagt:
Die snmp_set_quick_print() Funktion ist nur bei Verwendung der SNMP Bibliothek verfügbar, jedoch nicht bei Verwendung der Windows SNMP Bibliothek.
Da gibts wohl keine Lösung oder ?
Hallo,
erst einmal vielen Dank für die Entwicklung des tollen Plugins!
Ich setze es hier unter Icinga 1.4.2 ein und es funktioniert eigentlich einwandfrei. Lediglich bei einem unserer Drucker habe ich das problem, dass sowohl Toner als auch die Papierfächer lediglich "UNKNOWN" zurückmelden. Der Drucker ist ein RICOH Aficio MP-2550. Bei allen anderen (HP-) Druckern geht es problemlos. Noch merkwürdiger ist es allerdings, wenn ich den Drucker mal von der Kommandozeile via "./check_printer public toner 1" anspreche. Dann bekomme ich ein "OK - Toner" zurück?! Gleiches gilt für die Papierfächer ...
Sehr gutes PHP Script. Es lief einwandfrei, nachdem ich das "php5-snmp" Paket für Debian Lenny nachinstalliert habe.
Bis auf ein Problem mit unseren Sharps MX2600N und Sharp MX2310U, bei dem der Wastetoner als Critical angezeigt wird, wenn der Status eigentlich OK sein sollte und als OK angezeigt wird, wenn der Status CRITICAL sein sollte. Unser Drucker meckerte einen vollen Resttonerbehälter an. Während dessen war der Status OK, nach dem Wechsel mit einem komplett leeren WasteToner änderte sich der Status in CRITICAL. Gibt es hier eine Möglichkeit dies abzuändern im Script. Ich habe schon selbst im Quellcode geschaut, aber noch keine Lösung gefunden. Kann es sein das es mit dem String "Waste" usw. zusammenhängt?
Kommentar veröffentlichen