dantegabriel
Goto Top

Zabbix Monitoring - Übersetzung SNMP Traps

Hallo zusammen,

ich hoffe ihr könnt mir bei einem Problem weiterhelfen, welches ich aktuell einfach nicht gelöst bekomme.

Hintergrund:
Betriebssystem: Ubuntu 14.04.01
Ich beschäftige mich aktuell mit dem Monitoringsstem Zabbix und baue dies als Monitoringlösung für unser Netzwerk auf. Neben dem Servermonitoring sollen auch Netzwerkdrucker usw. mit in das Monitoring integriert werden, was über SNMP sehr gut funktioniert. Nachdem die grundlegende Installation und Konfiguration der SNMP Umgebung (snmp, snmpd, snmptt...) abgeschlosssen wurde konnte ich die Vorlagen für das Monitoring der einzelnen Druckertypen realisieren. (Via SNMP v1 & 2). Dies läuft soweit problemlos.

Im Zuge meiner Beschäftigung mit diesem Thema, stieß ich auf folgende Anleitung (http://lab4.org/wiki/Zabbix_Monitoring_SNMP_Traps_empfangen) die es ermöglich innerhalb von Zabbix Statusnachrichten zu verarbeiten, die direkt von den Druckern geschickt werden. (Sobald ein entsprechender Fehler vorliegt)
Ich habe mich durch die Anleitung durchgearbeitet und das ganze funktionstüchtig umgesetzt.


Problemstellung:
Wie in der Anleitung beschrieben schickt der Drucker bei einem Fehler einen SNMP Trap an den Zabbix Server, dieser verarbeitet den Trap und schreibt den Inhalt der Nachricht in eine Textdatei im tmp Verzeichnis des Systems.

Mein Problem ist nun, wie kann man die eigentliche Fehlermeldung aus der Nachricht des Traps herausfiltern?

Auszug aus dem SNMP Trap:
Im folgenden ein Auszug aus dem SNMP Trap (einmal mit, einmal ohne Varriablen)

sysUpTimeInstance.1.3 ():16:20:57:36.07 prtAlertSeverityLevel.1.43 (INTEGER):critical prtAlertTrainingLevel.1.43 (INTEGER):management prtAlertGroup.1.43 (INTEGER):input prtAlertGroupIndex.1.43 (INTEGER32):2 prtAlertLocation.1.43 (INTEGER32):0 prtAlertCode.1.43 (INTEGER):inputMediaChangeRequest prtAlertDescription.1.43 (OCTETSTR): prtAlertTime.1.43 (TICKS):16:20:56:47.40

sysUpTimeInstance.1.3:16:20:57:36.07 prtAlertSeverityLevel.1.43:critical prtAlertTrainingLevel.1.43:management prtAlertGroup.1.43:input prtAlertGroupIndex.1.43:2 prtAlertLocation.1.43:0 prtAlertCode.1.43:inputMediaChangeRequest prtAlertDescription.1.43: prtAlertTime.1.43:16:20:56:47.40

Ansatz:
Wenn ich das im SNMp Trap richtg verstanden habe, ist der eigentliche Fehler "inputMediaChangeRequest" d.h. es muss neues Papier eingelegt werden. Es gelingt mir jedoch nicht diesen Ausdruck isoliert wiederzugeben.

Wie der ausgegebene SNMP Trap formatiert wird, ist ja in der snmptt.conf angegeben (bei mir unter /etc/snmp/snmptt.conf). Gemäß der Dokumentation von snmptt (http://snmptt.sourceforge.net/docs/snmptt.shtml#Variable-substitutions) ist es möglich die einzlenen Varriablen auszugeben, jedoch ist mir das bislang nicht gelungen.

Die aktuelle Konfiguration:
EVENT general .* "General event" Normal
FORMAT ZBXTRAP $aA $ar severity:$s $Fn$+*$Fn$-*

Hoffe ihr könnt mir bei der Lösung helfen.

Gruß Dante

PS: $n oder $+n/$-n habe ich bereits erfolglos ausprobiert. (entsprechen $7)

Content-Key: 253155

Url: https://administrator.de/contentid/253155

Printed on: April 19, 2024 at 23:04 o'clock

Member: kurbach
kurbach Oct 27, 2014 at 16:21:00 (UTC)
Goto Top
Hi Dante,

da du den Drucker nicht angegeben hast hab ich dir hier mal die Templates für Zabbix angehangen.
https://www.zabbix.com/wiki/templates/start

Hoffe das hilft schon mal.
Gruß,
kurbach
Member: DanteGabriel
DanteGabriel Oct 27, 2014 updated at 17:12:11 (UTC)
Goto Top
Mit einem fertigen Template konnte ich nichts anfangen, deswegen habe ich mir aus der Liste der OID's ein eigenes gebaut. (War zwar etwas mehr Arbeit funktioniert aber gut)

Der Drucker ist ein Kyocersa FS-2100DN, aber der Trap dürfte sich nicht groß Unterscheiden (im Vergleich zu den Geräten dir wir sonst noch einsetzten, sprich FS-2020D, FS 1370DN, FS_C8600DN, FS-3900DN, FS-C5015N, FS-1030D) später portiere ich das Ganze dann noch für einige andere Druckertypen (HP, Canon usw.) sobald ich eine Lösung für das Problem habe.

Gruß
Dante
Member: stefaan
stefaan Oct 27, 2014 at 17:47:22 (UTC)
Goto Top
Servus,

wieso unbedingt mit Traps? Reicht es nicht, wenn du jede Minute von Zabbix aus per SNMP abfragst?
Dafür kannst du dir ein universelles Template hernehmen (zumindest Standard-Meldungen wie Status, Toner, gedruckte Seiten) und jeder Netzwerkdrucker läuft ohne großen Aufwand...

Grüße, Stefan
Member: DanteGabriel
DanteGabriel Oct 28, 2014 at 08:51:02 (UTC)
Goto Top
Moin,

soweit ich weiß kann ich mir nur "fast" alles über SNMP ausgeben lassen. Was genau dem Drucker fehlt erfahre ich soweit ich weiß nicht über SNMP. Natürlich kann ich die verschiedenen Stati der Drucker auslesen, das Display usw. aber die Anforderung etwa das Papier zu wechseln (was hier nur ein Test war) erhalte ich nicht so deutlich als Feedback. (Okay, vielleicht noch wen ich den String des Displays als Abgleich verwende)

Würde sich das Monitoring auf einen Standort beschränken wäre dies eine Option, dies ist jedoch nicht der Fall. Ich arbeite an einer Monintoringlösung mit Zabbix die sämtliche Niederlassungen erfasst. (Das schließt "leider" auch Niederlassungen ein, die nur über eine sehr kleine Leitung angebunden sind)

Beispiel für den Status: FS-2100DN (SNMPv1)
Gerätestatus: 1.3.6.1.2.1.25.3.2.1.5.1
Druckerstatus: 1.3.6.1.2.1.25.3.5.1.1.1

Gruß
Dante
Member: kurbach
kurbach Oct 28, 2014 at 12:06:34 (UTC)
Goto Top
Generelle Empfehlung, wenn Branch Offices im Spiel sind:

"A Zabbix proxy is the ideal solution for centralized monitoring of remote locations, branches and networks with no local administrators."

Quelle:
https://www.zabbix.com/documentation/2.0/manual/concepts/proxy

/kurbach
Member: DanteGabriel
DanteGabriel Oct 28, 2014 updated at 13:25:41 (UTC)
Goto Top
Zabbix proxy is a process that may collect monitoring data from one or more monitored devices and send the information to the Zabbix server, essentially working on behalf of the server. All collected data is buffered locally and then transferred to the Zabbix server the proxy belongs to.


Ja die Zabbix Proxy Funktion ist mir bekannt, macht aber wenn ich das richtig verstanden habe auch nur dann Sinn wen in entsprechenden Niederlassungen auch "Server" stehen. (Bzw. Geräte die man als solche verwenden kann) Das ist aber nicht der Fall, viele der Niederlassungen sind direkt über VPN angeschlossen und arbeiten ausschließlich mit einem ThinClient.

Es gibt kein lokales Gerät welches als Proxy fungieren und die Daten lokal zwischenspeichern kann.

Wobei ich glaube das die Proxy Sache auch erst dann interessant wird, wenn es zu Routingproblemen kommt oder Firewalls die Datenübertragung beeinflussen.

In den Niederlassungen kann ich jedoch ein NATing verwenden, welches das Routingproblem umgeht. (Den Rest macht die FW da Sie nur von einem ins andere Subnetz routen muss, aber das ist anderes Thema face-smile )

Gruß
Dante
Member: kurbach
kurbach Oct 28, 2014 at 13:36:10 (UTC)
Goto Top
Hm, ok.

Verstehe die Config mit den Thin Clients.
Dein SNMP müllt halt dein VPN-Kanal zu, imho zuviel Traffic durchs VPN, das ließe sich mit nem Proxy reduzieren.
Wenn du ne Linux-Box als VPN-GW hättest, könnte die auch noch den Proxy machen... aber am Setup an sich will ich gar nicht so viel sagen, das passt ja eigentlich schon.

Schwer...

35€ für nen Raspberry Pi / Debian / Zabbix Proxy - Bäm.

Aber bei den Traps muss ich passen. Hört sich nach ner so kleinen Infrastruktur an, wenn keine HW vorhanden ist als Proxy, da könnte der RPi vielleicht passend sein - für den fall, dass viele Außenstellen angebunden werden, würd ichs sogar so vorschlagen.

Traps - wie gesagt, bin ich raus - vielleicht weiß ja noch jemand was.

/kurbach
Member: stefaan
stefaan Oct 28, 2014 at 18:03:49 (UTC)
Goto Top
Servus,

schau dir einmal die Kyocera-MIBs an, damit gehen auch herstellerspezifische Sachen:
http://www.oidview.com/mibs/1347/KYOCERA.html

Papier voll vs. leer geht:
beiden Fächer leer (Kassette 1 und Universal)
iso.3.6.1.2.1.43.8.2.1.10.1.1 = INTEGER: 0
iso.3.6.1.2.1.43.8.2.1.10.1.2 = INTEGER: 0

beide Fächer gefüllt:
iso.3.6.1.2.1.43.8.2.1.10.1.1 = INTEGER: -3
iso.3.6.1.2.1.43.8.2.1.10.1.2 = INTEGER: -3

Die OIDs in diesem Script helfen vielleicht:
http://exchange.nagios.org/directory/Plugins/Hardware/Printers/SNMP-Pri ...

Alternativ ein snmpwalk machen und speichern, Papier raus/Papierstau produzieren, weiteren snmpwalk machen und mit einem diff den Unterschied feststellen.

Im Prinzip findest du fast jede Anzeige, die auch im Webinterface aufscheint, irgendwo per SNMP.

Beispiel für Konica Minolta, da lässt sich jedes noch so kleine Detail überwachen:
http://is.muni.cz/th/359846/fi_b/specifikace.pdf

Grüße, Stefan
Member: DanteGabriel
DanteGabriel Oct 29, 2014 at 12:24:12 (UTC)
Goto Top
@kurbach:

Die Struktur ist schon etwas größer (International), aber wir verwenden eine zentrale FW (Sophos) und durch die RED von Sophos lässt sich die Konfiguration aus Firewall technischer Sicht zentral sehr gut regeln. Ich habe aber keine Möglichkeit an der RED etwas zu verändern. (Was wohl auch nicht ratsam wäre)

Nun sind einige Niederlassungen mit einer 2Mbit SDSL Leitung angeschlossen, darüber läuft dann die RDP Sitzungen (zum Beispiel 15 Mitarbeiter), die Druckaufträge usw.

Eine zusätzliche Lösung (Hardware) wäre zwar eine Option... aber da es keinen IT'ler vor Ort gibt und... naja schwierig wie du bereits sagtest.

@Stefan:
Das wäre letztlich auch eine Lösung über SNMP (get), einfacher könnte ich auch einen Triger auslösen, wenn im Display nicht mehr das oder das steht.

Die Frage ist nur, ob ich alle Fehler mitbekomme die mir via Trap geschildert werden. Ganz besonders interessiert mich bei dem Trap der Eintrag "Weitere Fehler".
Die andere Sache ist natürlich das wir als "Altlast" noch ein paar Drucker haben die ohne Display arbeiten.

und unabhängig davon interessiert mich natürlich allein schon wegen der IT'ler Neugierde wie das mit den Traps geht. Allerdings gehe ich davon aus das eine Lösung mit Traps immer noch die beste Lösung für diesen Anwendungsbereich ist.

Gruß
Dante
Member: kurbach
kurbach Oct 30, 2014 at 09:29:39 (UTC)
Goto Top
Das gute an den raspberry PI's ist ja, dass die schön klein und einfach zu konfigurieren sind.
Das setzt Linux-Kenntnisse allerdings voraus.
Da wir hier aber von Zabbix sprechen, sollte das auch kein Problem darstellen.
Ich hab halt zwei stück privat und würde eiskalt sowas vorschlagen.
Nen superkleinen (Abmessungen) USB-Stick rein, damit keine Datenkorruptionen auf der SD entstehen, Debian und den Proxy drauf, Netzwerk konfigurieren, SSH aktivieren - dann muss das Ding nur noch hingeschickt werden. Und Das Ding mit Strom zu versorgen und an den Switch/Router anzuklemmen, dafür brauchts auch kein IT-ler vor Ort ; )

Nun - "When all you have is a hammer, every problem looks like a nail." - und mit den PI's hab ich halt schon Erfahrung, vielleicht sind die Traps wirklich der bessere Weg, aber bekanntlich führen ja viele Wege nach Rom. Vielleicht könnte so nen Pi noch mehr vor Ort machen... vielleicht nen Squid (falls inet Traffic nicht durchs VPN geroutet wird) o.ä.

Gruß
kurbach
Member: DanteGabriel
DanteGabriel Oct 30, 2014 at 13:14:33 (UTC)
Goto Top
Ja die Arbeit mit dem Raspberry Pi ist mir durchaus vertraut, ich habe damit bereits einige male rumgespielt und auch schon das ein oder andere Projekt damit realisiert.

Klar könnte man dann noch weitere Anwendungsmöglichkeiten anbieten, aber das ist zur Zeit nicht erforderlich. Wie gesagt vermute ich das der Weg über Traps der bessere ist, wenn auch nicht gerade der einfachere.

Wie eine Umsetzung mit dem Raspberry funktioniert weiß ich denke ich face-smile

Aber villeicht hat ja noch jemand die zündende Idee, wie es mit Traps umgesetzt werden kann.

Gruß
Dante