Zabbix - Überwachung von OSPF-Nachbarn mithilfe von SNMPv3-TRAPs, Schmerz und Verzweiflung

Technische Aufgabe


Es gibt ein Netzwerk von geografisch verstreuten Rechenzentren mit einem VRF-Auto und einer ständig wechselnden Liste von OSPF-Nachbarn. Sie müssen sie verfolgen:

  1. Zustand, Alarm auslösen, wenn der Nachbarzustand nicht VOLL ist
  2. Die Nummer, dh wenn der Nachbarn weg ist, müssen Sie auch einen Alarm auslösen

Das Überwachungssystem ist bereits vorhanden - Zabbix 3.4, es ist wünschenswert, es zu verwenden, Linux OS Debian 9.x

Wir versuchen es mit einem Schlag


Das Protokoll ist weit verbreitet, das Überwachungssystem ist bekannt, sicher bin ich nicht der erste, der dieses Problem lösen möchte, und höchstwahrscheinlich wurde es bereits gelöst.

Wir hämmern auf der Suche nach "zabbix ospf" und der erste Link führt zu einer Vorlage . Glück ist was - jetzt importiere ich es, bürste es nach meinen Bedürfnissen und alles wird in Ordnung sein.
Wir prüfen, wie es funktioniert - alles scheint in Ordnung zu sein, die Zustände werden überwacht, aber wenn der Nachbar in den Zustand AB geht, erhalten wir eine sehr informative Nachricht von Zabbix

No Such Instance currently exists at this OID

und info

The item isnot discovered anymore and will be deleted in29d 23h 57m (on2018-08-19 at 08:52)

Was ist passiert - das Problem ist alt und bekannt in den Foren - Wenn der OSPF-Nachbarn verschwindet, werden alle damit verbundenen OIDs einfach auf der Netzwerkhardware gelöscht.

Ja, es gibt eine Lösung - Erstellen Sie einen Knotendatenauslöser, ok, erstellen Sie Folgendes:

{Template - SNMPv3 - OSPF Discovery:ospfNbrState[{#SNMPVALUE}].nodata(120)}=0

Wir sehen im Dashboard:

OSPFneighbor 192.168.192.168missingdata

Grundsätzlich ... verwendbar

Aber sofort erkennt LLD Nachbarn nur vom Standard-VRF. Dies kann natürlich mit dem SNMP-Kontext gelöst werden, aber irgendwie wollte ich überhaupt nicht diesen Weg gehen - es ist notwendig, alle Drüsen, jeden OSPF-Prozess oder VRF zu durchforsten, um in den Kontext zu hämmern. In der Vorlage sollten Sie Discovery-Kopien für jeden Kontext erstellen. In der Regel gibt es viel Aufregung und beim Hinzufügen neuer OSPF-Prozesse ein paar orte, um etwas zu ändern. Natürlich können Sie sich mit Skripts überlappen und alles über die Zabbix-API ändern, aber Sie wollten keinen speziellen benutzerdefinierten Wert, aber ich wollte nur die in Zabbix integrierte Funktionalität maximal nutzen. Es gibt eine Erwähnung einer bestimmten CISCO-CONTEXT-MAPPING-MIB, aus der Sie alle Korrespondenzen von Kontexten und OSPF / VRF entnehmen können, aber ich wusste nicht, wie ich dieses Design an die LLD und meinen Fall anhängen kann. Wenn jemand weiß, wie man Zabbix so cool kocht, dann willkommen zu den Kommentaren und besser zu einem vollwertigen separaten Artikel.

Wir versuchen es ab dem zweiten Schlag


Nach ein paar Stunden der Suche im Internet ist ein Thema über SNMP TRAP durch Hinweise in Foren und von Speicherplätzen aufgetaucht - in diesem Fall wird das Eisenstück nicht übersehen, aber das Eisenstück selbst sendet Informationen über eine Änderung in etwas. Ja, und Wanderungsunterstützung dieses Gut ist in unserem Überwachungssystem aus der Box , das Gerät weiß auch sofort und nur für meinen Fall.

In den ersten Zeilen verwechselt die Überwachungsdokumentation mit einer langen Liste:

The workflow of receiving a trap:
    1. snmptrapd receives a trap
    2. snmptrapd passes the trap to SNMPTT or calls Perl trap receiver
    3. SNMPTT or Perl trap receiver parses, formats and writes the trap to a file
    4. Zabbix SNMP trapper reads and parses the trap file
    5. For each trap Zabbix finds all “SNMP trapper” items with host interfaces matching the received trap address. Note that only the selected “IP” or “DNS” in host interfaceis used during the matching.
    6.Foreachfound item, the trap is compared to regexp in “snmptrap[regexp]”. The trap issetas the valueof all matched items. Ifno matching item isfoundand there is an “snmptrap.fallback” item, the trap issetas the valueof that.
    7.If the trap was notsetas the valueofany item, Zabbix bydefaultlogs the unmatched trap. (This is configured byLog unmatched SNMP traps” in Administration → General → Other.)

Das heißt, ein Daemon nimmt einen TRAP, sendet ihn an einen anderen Daemon, analysiert ihn, speichert ihn mit dem erforderlichen Format im Protokoll und zabiks liest das Protokoll und entscheidet, was als Nächstes zu tun ist. Irgendwie sieht es schon nie einfacher aus, als mit den Händen zu gehen und überall einen SNMP-Kontext zu zeichnen, aber na gut, versuchen wir's. Wir lesen aufmerksam zum Überwachungsdock und verstehen, dass nur mit seiner Hilfe nichts eingerichtet werden kann. Zabbix hat im Allgemeinen einen solchen Witz - die Dokumentation beschreibt die Merkmale und Nuancen des Systems so minimal, dass es eher verwirrend ist, als es gelehrt wird. Sie können zwar verstanden werden - die Software ist kostenlos, aber irgendwie muss man Geld verdienen, aber sie verdienen auch Geld mit der Unterstützung. Im Internet gibt es Artikel, die beschreiben, wie man es ein- oder zweimal einrichtet ., aber für einen Artikel, den ich nicht innen und außen aufsetzen konnte, musste ich nach und nach Informationen aus verschiedenen Quellen sammeln. Es sind alle Texte, die Hardcore machen.

Wir konfigurieren ein Netzwerkstück aus Eisen


Bevor Sie etwas auf dem Host mit Überwachung drehen, empfehle ich dringend, dass Sie zuerst ein Netzwerkgerät einrichten und sicherstellen, dass TRAP wirklich von dem Hardwareelement zum Server fliegt. Zuerst habe ich nicht überprüft, ob ich viel Nerven, Blut und Zeit getrunken habe. Ich habe ein Cisco Nexus-Auto zur Hand, deshalb werde ich Beispiele für diese Serie geben. Wer hat Catalyst, ASR, ASA und so weiter - Entschuldigung, ich bin kein Sonnenschein, ich wärme nicht alle auf, lese die Docks, wie sie es selbst einrichten, die Syntax wird ähnlich sein, aber mit ihren eigenen Nuancen.

snmp-server contact noc@example.com
snmp-serverlocation Room1
snmp-server source-interface traps loopback1

Es ist später bei der Konfiguration von TRAP in Zabbix wichtig, dass die Adresse, von der der TRAP gesendet wird, der SNMP-Schnittstellenadresse in den Hosteinstellungen in Zabbix entspricht.

snmp-server user Zabbix network-operator auth sha string priv aes-128string

Verwenden Sie nach Möglichkeit Protokollversion 3. Im AuthPriv-Modus (Verschlüsselung und Authentifizierung) ist die Konfiguration nicht so schwierig, wie es scheint. Vergessen Sie die Versionen 1 und 2 des Protokolls - wenn ein unerwarteter Unfall aufgrund fehlender Verschlüsselung und im Wesentlichen der Authentifizierung in diesen Protokollversionen eintritt - ist es nur eine Frage der Zeit (die Community-Zeile wird im Klartext übertragen, außerdem sehe ich regelmäßig, dass sie öffentlich / privat ist). Mit dem Parameter Netzbetreiber können Sie dem Benutzer Leserechte gewähren.

snmp-server host 192.168.192.168 traps version 3 priv Zabbix
snmp-server host 192.168.192.168 use-vrf default
snmp-server host 192.168.192.168source-interface loopback1
no snmp-serverenable traps ospf lsa
snmp-serverenable traps ospf
no snmp-serverenable traps entity entity_mib_change
no snmp-serverenable traps entity entity_module_status_change
no snmp-serverenable traps entity entity_power_status_change
no snmp-serverenable traps entity entity_module_inserted
no snmp-serverenable traps entity entity_module_removed
no snmp-serverenable traps entity entity_unrecognised_module
no snmp-serverenable traps entity entity_fan_status_change
no snmp-serverenable traps entity entity_power_out_change
no snmp-serverenable traps link linkDown
no snmp-serverenable traps link linkUp
no snmp-serverenable traps linkextended-linkDown
no snmp-serverenable traps linkextended-linkUp
no snmp-serverenable traps link cieLinkDown
no snmp-serverenable traps link cieLinkUp
no snmp-serverenable traps link connUnitPortStatusChange
no snmp-serverenable traps bfd session-up
no snmp-serverenable traps linkdelayed-link-state-changeno snmp-serverenable traps bfd session-down
no snmp-serverenable traps rf redundancy_framework
no snmp-serverenable traps license notify-license-expiry
no snmp-serverenable traps license notify-no-license-for-feature
no snmp-serverenable traps license notify-licensefile-missingno snmp-serverenable traps license notify-license-expiry-warningno snmp-serverenable traps upgrade UpgradeOpNotifyOnCompletion
no snmp-serverenable traps upgrade UpgradeJobStatusNotify
no snmp-serverenable traps rmon risingAlarm
no snmp-serverenable traps rmon fallingAlarm
no snmp-serverenable traps rmon hcRisingAlarm
no snmp-serverenable traps rmon hcFallingAlarm
no snmp-serverenable traps entity entity_sensor
no snmp-serverenable traps generic coldStart
no snmp-serverenable traps generic warmStart

Ich habe vor allem TRAP außer OSPF deaktiviert, damit ich bei der Diagnose, warum etwas nicht funktioniert, nicht viele unnötige Informationen aus dem Debug abziehen muss.

Wie prüft man, ob TRAP funktioniert - es ist sehr einfach - man muss etwas kaputt machen? Wir starten den Sniffer auf dem Host mit Überwachung:

root@dc-zbx:~# tcpdump -i bond0 udp port 162
tcpdump: verbose output suppressed, use -v or -vv forfull protocol decode
listening on bond0, link-type EN10MB (Ethernet), capture size262144bytes

Wir finden lebende Nachbarn auf einem Stück Eisen:

SW# show ip ospf neighbors vrf all 
 OSPF Process ID 10 VRF default
 Total number of neighbors: 4
 Neighbor ID     Pri State            Up Time  Address         Interface
 192.168.0.2421FULL/ -          01:47:17172.17.0.10      Vlan1427 
 192.168.0.2221FULL/ -          18w1d    172.17.0.6       Vlan1426
 192.168.1.1491FULL/ -          5w0d     172.17.0.30      Vlan1473 
 192.168.1.1461FULL/ -          3d00h    172.17.0.58      Vlan1404 
 OSPF Process ID 100 VRF OSPF100
 Total number of neighbors: 4
 Neighbor ID     Pri State            Up Time  Address         Interface
 192.168.1.1491FULL/ -          5w0d     172.17.0.34      Vlan1474 
 192.168.0.2201FULL/ -          13w3d    172.17.0.54      Vlan1479 
 192.168.0.2401FULL/ -          13w3d    172.17.0.46      Vlan1477 
 192.168.1.1461FULL/ -          3d00h    172.17.0.62      Vlan1405 
 OSPF Process ID 200 VRF Dia
 Total number of neighbors: 2
 Neighbor ID     Pri State            Up Time  Address         Interface
 10.65.0.2521FULL/ -          17w2d    172.17.0.18      Vlan1450 
 172.17.0.261FULL/ -          17w0d    172.17.0.26      Vlan1452 
 OSPF Process ID 216 VRF Dev
 Total number of neighbors: 2
 Neighbor ID     Pri State            Up Time  Address         Interface
 10.255.255.941FULL/ -          18:59:5910.216.0.73     Vlan1641 
 10.216.0.821FULL/ -          18:59:5410.216.0.82     Vlan1643 

Und jemanden fallen lassen

interfacevlan 1643
  shutdown

Wir sehen im Sniffer:

11:08:20.001942 IP 192.168.192.169.22095 > dc-zbx.example.com.snmp-trap:  F=ap U="Zabbix" [!scoped PDU]39_d1_7c_19_b3_d9_f8_31_32_8e_c9_39_c2_3a_db_d8_28_26_c6_0b_01_55_b6_fa_5e_f5_38_66_f9_6f_3f_c0_98_cb_57_93_5a_50_8e_50_90_79_f3_9b_ec_ec_d7_9f_e8_ac_f6_fd_79_ac_95_ff_71_73_32_70_52_66_a5_7d_b3_c4_39_d0_1c_7f_a6_38_ea_d7_61_c0_2f_12_ee_db_d9_07_40_8c_a8_48_57_e9_e5_56_12_3f_ec_f9_34_65_09_96_86_f6_d2_93_06_45_fa_95_ea_36_5a_82_2f_30_8f_02_03_59_07_5f_d8_a6_1c_f2_5a_be_7d_09_15_ef_05_00_83_fd_ea_ac_2a_3b_86_0f_86_e5_3b_93_3a_68_6d_33_99_e2_46_2b_9d_6a_1e_5d_9e_d9_93_56_51_5e_ff_9e_77_4c_cb

Wenn Sie im Sniffer nichts gesehen haben, diagnostizieren Sie es, da es sonst keinen Sinn macht, weiterzumachen. Sie werden einfach nicht verstehen, auf welcher der Stufen etwas für Sie nicht funktioniert.
Wenn kein Stück Eisen zur Hand ist oder Sie die Produktion nicht berühren können, kann TRAP aus einem anderen Fahrzeug generiert werden, beispielsweise wie folgt:

snmptrap -v 1 -c neveruseme 127.0.0.1'.1.3.6.1.6.3.1.1.5.3''0.0.0.0'633'55' .1.3.6.1.6.3.1.1.5.3 s "teststring000"
snmptrap -v3 -l authPriv -u Zabbix -a SHA -A abyrvalg -x AES -X pechka -e 0x8000000001020305 192.168.192.1680 linkUp.0

Konfigurieren Sie SNMPd, SNMPTRAPd, SNMPTT


Wir benötigen Pakete im System:

apt install snmp snmp-mibs-downloader snmpd snmptrapd snmptt

Ich habe mich nicht auf den Perl-Fallenempfänger konzentriert, sondern SNMPTT aus persönlichen und subjektiven Gründen gewählt. Im Dock steht also geschrieben:

1. snmptrapd receives a trap

Es ist notwendig, mit den Einstellungen zu beginnen und nicht sofort zu klettern, um ein Element im Zabbix-Gesicht zu erstellen. Warum ist es so - Sie müssen die gleichen Stufen erklimmen wie TRAP. Im vorherigen Abschnitt haben wir dafür gesorgt, dass TRAP grundsätzlich von einem Stück Eisen kommt. Jetzt stellen wir sicher, dass es zumindest vom ersten Dämon, snmptrapd, akzeptiert wird. Ich erinnere mich, dass ich Postfix + Dovecot + etwas anderes dort für eine lange Zeit eingerichtet habe. Und ich verbrachte etwa zwei Wochen - auch dort akzeptiert ein Dämon eine Verbindung, ein anderer Parsit-Brief, der dritte stellt ihn in die Warteschlange, der vierte im Ordner für den Benutzer usw. und ich konnte nichts tun. Und das alles, weil ich es von der Mitte her eingerichtet habe, dann vom Ende, dann von Anfang an, aber ich musste an Port 25 von Telnet aus starten und das Debiggen des Licheners beobachten. </ Lyric>

Wir klettern in /etc/snmp/snmptrapd.conf und löschen und kommentieren dort besser alles, was wir nicht verstehen und sich nicht darum kümmern, eine Zeile hinterlassen

disableAuthorizationyes

Stoppen Sie den Dienst

systemctl stop snmptrapd.service

Im manuellen Modus ausführen

root@dc-zbx:~# snmptrapd -f -Lo
NET-SNMP version5.7.3 AgentX subagent connected
NET-SNMP version5.7.3

Wieder versuchen wir, OSPF wie im obigen Beispiel zu brechen und sehen:

2018-07-2011:38:38 UNKNOWN [UDP: [192.168.192.169]:22095->[192.168.192.168]:162]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1355817272) 156 days, 22:09:32.72	SNMPv2-MIB::snmpTrapOID.0 = OID: OSPF-TRAP-MIB::ospfNbrStateChange	OSPF-MIB::ospfRouterId = IpAddress: 10.216.0.74	OSPF-MIB::ospfNbrIpAddr = IpAddress: 10.216.0.82	OSPF-MIB::ospfNbrAddressLessIndex = INTEGER: 0	OSPF-MIB::ospfNbrRtrId = IpAddress: 10.216.0.82	OSPF-MIB::ospfNbrState = INTEGER: down(1)

Wenn wir nicht sehen, suchen wir nach dem Grund dafür. Wenn Sie die gleichen schönen Einträge und keine festgelegte OID der Form 1.3.6.1.2.1.14.10.1.6 haben möchten, fügen Sie Folgendes zu /etc/snmp/snmp.conf hinzu:

mibs +OSPF-MIB
mibs +OSPF-TRAP-MIB
mibs +OSPFV3-MIB
mibdirs +/usr/share/snmp/mibs/ietf/

Und verzerren Sie SNMPd

systemctl restart snmpd.service 

Weitere Informationen zum Herunterladen der MIB-Dateien mit den geringsten Schmerzen und zum Zuführen zu Ihrer SNMPd finden Sie hier [https://wiki.debian.org/SNMP].

Jetzt werden wir die Authentifizierung beschleunigen, wir klettern erneut in /etc/snmp/snmptrapd.conf

traphandle default snmptthandler
#disableAuthorization yes# 192.168.192.169
createUser -e 0x80000009038d604a6a82a3 Zabbix SHA string AES
authuser log,execute,net Zabbix

-e 0x80000009038d604a6a82a3 ist die engineID. Sie können sie auf der Netzwerkhardware anzeigen:

SW# shsnmpengineIDLocalSNMPengineID: [Hex] 80000009038F604D6A82A1[Dec] 128:040:000:109:003:140:096:079:106:131:160

Wir wiederholen das Experiment noch einmal, aber jetzt fangen wir immer noch das Debm über USM an:

root@dc-zbx:~# snmptrapd -f -Lo -Dusm
registered debug token usm, 1
usmUser: created a new user Zabbix at 80000009038F 604F 6B 82 A5 
NET-SNMP version 5.7.3 AgentX subagent connected
NET-SNMP version 5.7.3
usm: USM processing begun...
usm: match on user Zabbix
usm: no match on engineID (80000009038F 604F 6B 82 A5 )
usm: match on user Zabbix
usm: Verification succeeded.
usm: USM processing completed.
2018-07-2011:50:07 UNKNOWN [UDP: [192.168.192.169]:22095->[192.168.192.168]:162]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1355886163) 156 days, 22:21:01.63	SNMPv2-MIB::snmpTrapOID.0 = OID: OSPF-TRAP-MIB::ospfNbrStateChange	OSPF-MIB::ospfRouterId = IpAddress: 10.216.0.74	OSPF-MIB::ospfNbrIpAddr = IpAddress: 10.216.0.82	OSPF-MIB::ospfNbrAddressLessIndex = INTEGER: 0	OSPF-MIB::ospfNbrRtrId = IpAddress: 10.216.0.82	OSPF-MIB::ospfNbrState = INTEGER: down(1)

Wenn zu diesem Zeitpunkt Autorisierungsfehler im Debug angezeigt werden, überprüfen Sie sorgfältig die engineID und die auf der Hardware erstellten Benutzer stimmen mit denen überein, die wir in der Konfigurationsdatei /etc/snmp/snmptrapd.conf gezeichnet haben. Übrigens, ja, für jedes Hardwareteil müssen Sie Ihren Benutzer mit Ihrer engineID erstellen oder Ihre Hände auf allen Hardwareteilen gleich machen, wenn die Eisenteile dies zulassen.

Ich kann die Zeile in debag sehen:

usm: no match on engineID (80000009038F 604F 6B 82 A5 )

Warum ich das nicht verstanden habe, obwohl TRAP bei all dem akzeptiert und zur weiteren Bearbeitung geschickt wird. Wenn Sie wissen, was ich falsch gemacht habe, bitte in den Kommentaren.

Jetzt übernehmen wir SNMPTT - es hat zwei Konfigurationsdateien ini und conf. Im ersten bestimmen wir die Betriebsparameter des Daemons selbst, im zweiten bestimmen wir die Parameter für das Empfangen und Verarbeiten jedes einzelnen Ladder.

Wir klettern in die Datei /etc/snmp/snmptt.ini und zeichnen die folgenden Dinge:

mode = daemon
net_snmp_perl_enable = 1
date_time_format = %Y %m %d %H:%M:%S

Das Datums- und Zeitformat ist ein Geschäft, die Hauptsache ist es, überall dasselbe zu verwenden.

log_file = /var/log/snmptt/snmptt.log
log_system_file = /var/log/snmptt/snmpttsystem.log
unknown_trap_log_enable = 1
unknown_trap_log_file = /var/log/snmptt/snmpttunknown.log

Warum ist das Protokoll nicht das gleiche wie in vielen Artikeln im Internet? Da im Dock gesagt wurde: "Wenn der systemd-Parameter PrivateTmp verwendet wird, ist es unwahrscheinlich, dass diese Datei in / tmp funktioniert." Ich möchte nicht noch einmal mit dem Rake aufstehen, wenn ich vorher darüber gewarnt wurde. Daher wechsle ich sofort zum normalen Pfad zur Datei.

Gehen Sie als Nächstes zu /etc/snmp/snmptt.conf, entfernen Sie alles, was wir nicht brauchen und / oder nicht verstehen, und lassen Sie nur folgendes:

EVENT ospfNbrStateChange .1.3.6.1.2.1.14.16.2.2"OSPF" Normal
FORMAT ZBXTRAP $aA OSPF neighbor with IP addr $2 changed state to $5

In diesem Formular, da Zabbix genau dieses Format im Protokoll erwartet. Woher kommen $ 2 und $ 5, können Sie herausfinden, ob Sie das Format einer TRAP-Nachricht betrachten . Wir werden sehen :

ObjectospfNbrStateChangeOID	1.3.6.1.2.1.14.16.2.2MIBOSPF-TRAP-MIB ;
TrapComponentsospfRouterIdospfNbrIpAddrospfNbrAddressLessIndexospfNbrRtrIdospfNbrState

Diese Trap-Komponenten sind die Parameter, die in der Reihenfolge $ 1, $ 2 in das Protokollformat

verschoben werden können. Während der Kämpfe mit all diesen Dingen fiel mir auf, dass nach dem Ändern der SNMPTT-Einstellungen die Änderungen nicht zutreffend waren. Es stellte sich heraus, dass snmpt.serivce nach einem Wechsel nicht neu gestartet werden sollte, sondern snmpd.service - diese Nuance hat anständig mein Blut getrunken und die Nerven während des Debugging getrunken.

Überprüfen Sie, ob alle Dämonen laufen:

systemctl status snmpd snmptrapd snmptt

Wenn alles in Ordnung ist, versuchen Sie erneut, OSPF zu unterbrechen und gehen Sie in das Protokoll /var/log/snmptt/snmptt.log. Es wird so aussehen:

2018 07 19 15:10:52.1.3.6.1.2.1.14.16.2.2Normal "OSPF" 192.168.192.169-ZBXTRAP 192.168.192.169 192.168.192.169OSPFneighborwithIPaddr 10.216.0.82changedstatetodown
2018 07 19 15:12:28.1.3.6.1.2.1.14.16.2.2Normal "OSPF" 192.168.192.169-ZBXTRAP 192.168.192.169 192.168.192.169OSPFneighborwithIPaddr 10.216.0.82changedstatetoexchangeStart
2018 07 19 15:12:34.1.3.6.1.2.1.14.16.2.2Normal "OSPF" 192.168.192.169-ZBXTRAP 192.168.192.169 192.168.192.169OSPFneighborwithIPaddr 10.216.0.82changedstatetofull
2018 07 19 15:22:41.1.3.6.1.2.1.14.16.2.2Normal "OSPF" 192.168.192.169-ZBXTRAP 192.168.192.169OSPFneighborwithIPaddr 10.216.0.82changedstatetodown
2018 07 19 15:25:38.1.3.6.1.2.1.14.16.2.2Normal "OSPF" 192.168.192.169-ZBXTRAP 192.168.192.169OSPFneighborwithIPaddr 10.216.0.82changedstatetoexchangeStart

Jene TRAPs, die wir nicht in der Datei /etc/snmp/snmptt.conf konfiguriert haben, werden in das Protokoll /var/log/snmptt/snmpttunknown.log aufgenommen, jedoch nur von der Hardware, für die der richtige Benutzer und die Engine-ID in derselben Konfiguration konfiguriert sind. Das heißt, von den linken Drüsen von TRAP wird still gedrosselt, wenn Sie Matan und Nachbesprechung wünschen, dann haben Sie hier ein ungewöhnlich kalkuliertes Netz-Snmp-Dock. Es gibt immer noch eine gute Beschreibung des Unterschieds zwischen TRAP und INFORM. Vorausschauend ist es besser, INFORM zu verwenden. Dort gibt es eine Art Zustellungssteuerung, und es funktioniert auch über SNMP über UDP.

Und erst jetzt klettern wir, um unsere Überwachung anzupassen.

Zabbix-Konfiguration



Stellen Sie zunächst sicher, dass in der Konfigurationsdatei /etc/zabbix/zabbix_server.conf der Monitor auf das korrekte SNMPTT-Protokoll eingestellt ist und Zabbix mindestens einen SNMP-Trapper startet: Zuerst habe ich das Element direkt auf dem Host erstellt, um Spezialeffekte schnell und einfach zu erfassen. Ich schreibe hier So erstellen Sie sofort eine Vorlage, da diese möglichst verwendet werden soll. Ich zeige Ihnen die Bilder, die Freebie zum Kopieren und Einfügen ist vorbei, aber ich male die Stellen, die Aufmerksamkeit erfordern. Erstellen Sie eine Vorlage: Hier geben wir nur einen vernünftigen Namen ein Erstellen Sie einen Artikel Wichtig: Der Schlüssel muss so sein, dass Zabbix im Protokoll nach Klammern sucht. Wir richten das Protokollformat in /etc/snmp/snmptt.conf ein und haben dort geschrieben :

SNMPTrapperFile=/var/log/snmptt/snmptt.log
StartSNMPTrapper=1






Bild





Bild



EVENT ospfNbrStateChange .1.3.6.1.2.1.14.16.2.2"OSPF" Normal
FORMAT ZBXTRAP $aA OSPF neighbor with IP addr $2 changed state to $5

Eigentlich steht im Protokoll das Zauberwort "OSPF" und erscheint:

2018 07 19 15:25:38.1.3.6.1.2.1.14.16.2.2Normal "OSPF" 192.168.192.169-ZBXTRAP 192.168.192.169OSPFneighborwithIPaddr 10.216.0.82changedstatetoexchangeStart

Das Datumsformat haben wir in der /etc/snmp/snmptt.ini config definiert:

date_time_format = %Y %m %d %H:%M:%S

Was ich oben geschrieben habe - verwenden Sie jedes Format, das für Sie geeignet ist. Hauptsache, es stimmt an den richtigen Stellen überein.

Erstellen Sie Trigger -

Bild

Estates am Nächsten sein kann , ein paar:

1 : down
2 : attempt
3 : init4 : twoWay
5 : exchangeStart
6 : exchange
7 : loading
8 : full

Im Allgemeinen ist es nicht grundlegend, in welchem ​​Zustand sich der Nachbar befindet, wenn dieser Zustand nicht VOLL ist, da Sie zur Diagnose immer noch zum Eisenstück gehen müssen, die Protokolle lesen und einige Befehle eingeben müssen. Der Auslöser wird also eins sein und wird nur dann erregt, wenn der Zustand des Nachbarn in der TRAP nicht voll ist.

Stellen Sie vor dem Aufhängen der Vorlage auf einem bestimmten Host sicher, dass die korrekte SNMP-Schnittstelle des Hosts mit der korrekten IP-Adresse konfiguriert ist. Andernfalls befinden sich die Traps im Protokoll /var/log/snmptt/snmptt.log. Zabbix bindet sie jedoch nicht an den Host. In diesem Fall erscheint im Zabbix-Serverprotokoll /var/log/zabbix/zabbix_server.log eine Meldung wie:

19972:20180720:091722.896unmatchedtrapreceivedfrom "192.168.192.169": 2018 07 20 09:17:21.1.3.6.1.2.1.14.16.2.2Normal "OSPF" 192.168.192.169-OSPFneighborwithIPaddr 10.64.0.10changedstatetoexchangeStart


Wir gehen zu den neuesten Daten, wir sehen, dass der

Bild

Auslöser auch funktioniert hat.

Bild

Jetzt werden wir zwei Nachbarn

Bild

einfügen : Im Dashboard sehen wir, was passiert ist, zwei Probleme, das ist gut, und sogar zwei Buchstaben werden mit einer benutzerdefinierten Warnung zu diesem Thema eintreffen.

Alles ist großartig, alles funktioniert und hier ist die Kirsche am Ende.

Verzweiflung
Jetzt nehmen wir einen Nachbarn auf und erheben ihn. In diesem Fall werden beide Probleme sofort im Dashboard ausgeblendet. Dies ist kein Fehler, dies ist eine Funktion. Ich habe eine solche Nuance beim Testen einer Vorlage zufällig bemerkt. Als Ergebnis stellt sich heraus, dass wenn mehrere Nachbarn herunterfallen und einer von ihnen aufsteigt oder sogar ein Nachbar aufsteigt, der zuvor überhaupt nicht existierte, die Überwachung grün wird.
Конечно, можно Item руками настроить чтобы отслеживать конкретного соседа, можно еще чего-нибудь скриптануть, можно вернуться к SNMP контекстам из самого начала статьи. Еще есть мысль нарисовать скрипт, который будет ходить по SSH/API на сетевые железки, собирать инфу обо всех соседях, делать «рабочий» слепок, анализировать diff между проверками и писать в лог что не так, далее лог можно скормить мониторилке… сложно. Хотелось то минимум костылей и кастома. Если вы знаете вменяемый способ решения этой задачи или считаете что я всё сделал неправильно, опять же прошу в комментарии, а лучше в ответную статью.


UPD: Kollegen rieten, ihre Pläne immer noch anhand von SNMP-Kontexten zu verstehen und umzusetzen . Es gibt Nachfrage, es wird Angebot geben. Wenn ich nach vorne schaue, kann ich sagen - der Teufel ist nicht so schrecklich, lass uns gehen.
Auf der Netzwerkhardware zeichnen wir einen magischen Befehl:

snmp-server context {snmp context name} instance {protocol instance} vrf {vrf name}

Die Namen der Parameter erfordern Erklärungen
{snmp context name} - der Name des SNMP-Kontexts, den wir in den Anforderungen verwenden werden.
{Protokollinstanz} und {Vrf-Name} werden aus der Konfiguration des konfigurierten OSPF-Prozesses übernommen:

router ospf {protocol instance}
..
vrf {vrf name}
..


Es bestand die Befürchtung, dass das konfigurierte Element nach solchen Einstellungen bereits mit einem leeren Kontext über SNMP gebrochen wurde. Es wurde jedoch geprüft, dass die Einstellung nur die OSPF-MIB-Datenausgabe betrifft. Beispielsweise wird alles aus dem IF-MIB-Abschnitt wie zuvor mit einem leeren Kontext angegeben. Wenn Sie keinen Nexus haben, empfehle ich, diesen Punkt noch einmal zu überprüfen. Wahrscheinlich ist das Verhalten anders.

Jetzt werden wir die Vorlage in Zabbix verdrehen.
Es ist notwendig, eine neue Discovery-Regel mit einem Hinweis auf den Kontext zu erstellen:

Bild

Neuer Elementprototyp, auch mit einem Hinweis auf den Kontext,

Bild

und zwei Auslöser - der erste für alarma, wenn sich der Nachbar in einem beliebigen Zustand außer FULL befindet,

Bild

und der zweite - wenn der Nachbar verschwunden ist:

Bild

Jetzt auch beliebt: