Dies ist der letzte Teil des Artikels,
hier ist der Anfang .
Das letzte Mal, als ich darüber schrieb, wie ich die Geräteüberwachung implementiert habe, konzentrieren wir uns jetzt auf das Management. In Gesprächen mit "Technikfreaks" seitens des Kunden stoße ich häufig auf eine eingeschränkte Wahrnehmung der Fähigkeiten derart kleiner Geräte (mit geringen Speicherressourcen und Leistung). Viele Leute denken, dass "das Maximum, das wir brauchen, ein Neustart ist, für etwas Ernsthafteres - wir werden ein Team schicken". .
Die Praxis zeigt jedoch, dass dies nicht ganz stimmt.
Hier ist eine kurze Liste allgemeiner allgemeiner Aufgaben:
- Netzwerkdiagnose und Fehlerbehebung. Hinter dem Ethernet-Port Ihres Routers verfügt normalerweise eine andere Hardware über eine eigene interne IP-Adresse. Manchmal kann (muss) es "pingen". Oder Tunnelverwaltung - wenn ein Router, der nicht plötzlich auf einem Router hochfährt, der über ein 3G-Modem ausgeführt wird, den Router selbst sieht.
- Systemdienst. Firmware-Upgrade, Service-Skript-Upgrade.
- Balanceakt. Dies könnte als "Perversionen" bezeichnet werden, aber das Konzept des "Balancers", wie ich zitiere, "die Fähigkeit eines Zirkuskünstlers, das Gleichgewicht in einer instabilen Position des Körpers aufrechtzuerhalten", ist geeigneter. Ähnliche Situationen ergeben sich aus dem begrenzten Budget des Kunden. Nachfolgend einige Beispiele, aber weil Sie haben keinen direkten Bezug zum Thema der Erzählung, schreiben Sie sie in Notizen
Wifi-ÜberwachungEin modisches Thema der letzten fünf Jahre sind vor allem die Einzelhandelsketten des Bundes. Sie gehen langsam durch die Handelsetagen, und Ihr Mobiltelefon mit eingeschaltetem Wi-Fi, das versucht, sich an einen Netzwerkthread zu halten, sendet regelmäßig Probe Request-Pakete, die analysiert werden können, um zu berechnen, wie oft Sie für was in dieses Geschäft kommen Gehen Sie die Flugbahnen und so weiter. Dann werden die Daten gesammelt, analysiert, Heatmaps erstellt und Manager für solche Bilder „schlagen“ Geld vom Management oder von Investoren aus. In der Zwischenzeit ... "es gibt kein Geld, aber du hältst an ...", und das Ergebnis (echt) muss bereits gezeigt werden, das gute alte Lied ist enthalten "Ja, ja, dann werden wir natürlich Tsiska setzen und was auch immer du willst, aber jetzt brauchen wir Zeigen Sie dem Kunden das Ergebnis! Übrigens haben sie vergessen zu sagen, dass der Kunde zugelassen hat, dass unsere Geräte über WLAN mit seinem Hotspot verbunden sind, aber im Allgemeinen ist es so, als wären wir Gastkunden. " Und jetzt müssen Sie Router-Balancer erstellen - mehrere WiFi-Subschnittstellen entstehen, von denen eine an einem Hotspot haftet, und die zweite überwacht die Umgebung, entlädt das Ergebnis von tcpdump verzweifelt in sich selbst, dann wird der Inhalt der Datei in das Archiv gepackt und es besteht die Gefahr, dass er durch "übermäßiges Essen" stirbt versuchen, den Inhalt auf dem FTP-Server auszuspucken. Es ist nicht verwunderlich, dass der Router-Balancer häufig „ausfällt“ und irgendwie aus der Ferne wiederbelebt werden muss.
RadiusHier ist es einfacher, die Situation mit so etwas wie der Aussage des Kunden zu beschreiben: „Wir wollen ein dezentrales Netzwerk von Hotspots, die an Geräten arbeiten, deren Modell nicht im Voraus über Kanäle bekannt ist, die wir aber noch nicht kennen. Ah, sie haben vergessen zu sagen, wir wollen nicht nur Anzeigen für Kunden schalten, sondern auch alles rund um den Installationsort des Hotspots analysieren. Nein, wir wissen noch nicht warum, aber wir werden ohne Zweifel auf diese Idee kommen. "
Und wir dürfen nicht vergessen, dass aufgrund der Vielzahl von Umständen, die im Voraus ungewiss sind, die Steuerung unter nicht standardmäßigen Bedingungen durchgeführt werden sollte, wenn wir keine direkte Verbindung zum Router über ip: the port herstellen können und nur auf die Aktivität von dort warten müssen. Wenn wir es ignorieren, kann der Dialog zwischen dem Server und dem Router folgendermaßen dargestellt werden:
- Router : Hallo. Ich bin so ein Router, gibt es irgendwelche Aufgaben für mich?
- Server : so und so ein Router Ich habe dich registriert, dass du am Leben bist. Hier ist die Aufgabe: Zeigen Sie mir das Ergebnis des Befehls ifconfig?
- Router : Hallo. Ich bin so ein Router. Als Sie mich das letzte Mal gebeten haben, das Ergebnis von ifconfig anzuzeigen, ist es hier. Gibt es irgendwelche Aufgaben für mich?
- Server : so und so ein Router Ich habe dich registriert, dass du am Leben bist. Es gibt keine Aufgaben für Sie.
Die interessanteste Frage: Wie kann ein Remote-Router eine bestimmte Menge an Informationen senden? Im letzten Teil habe ich beschrieben, dass es auf dem Router aufgrund begrenzter Ressourcen nur ein "abgespecktes" Wget gibt, das nur über GET funktioniert, und sonst nichts, es gibt keinen FTP-Client oder Curl. Genauer gesagt, wir brauchen einen universellen Weg, unabhängig von den Merkmalen der Bildanordnung. Ich entschied mich für wget. Genauer gesagt, wie ich "aufgehört" habe - ich hatte einfach keine Wahl :)
Sofortige ReservierungMeine Managementlösung funktioniert, ist aber sehr begrenzt und ich bin sicher, dass sie schief ist, auch wenn sie für die meisten meiner Kunden geeignet ist. Wie es möglich wäre, es mit Bedacht zu tun - ein kleines Dienstprogramm zu schreiben, das Binärdaten über den 80. Port sendet. Fügen Sie es (Dienstprogramm) in die Firmware des Routers ein und verwenden Sie bash, um darauf zuzugreifen. Aber die Realität ist: a) Sie müssen schnell b) Vielleicht müssen Sie alles auf dem vorhandenen "Router Zoo" tun c) "keinen Schaden anrichten!" - Wenn der Router funktioniert und andere Aufgaben ausführt, versuchen Sie, Änderungen vorzunehmen, die sich auf die vorhandene Funktionalität auswirken.
Fahren wir mit der Implementierung fort. Angenommen, Ihr Kunde möchte, dass zabbix den Router einfach und natürlich mit einem Mausklick neu startet. Heute beginnen wir die Beschreibung der Implementierung mit zabbiksa.
Fügen Sie im Menü "Administration" -> "Skripte" ein neues Skript hinzu. Wir nennen es "Reboot", als Befehl schreiben wir "php /usr/share/zabbix/reboot.php {HOST.HOST}"

Weiter: Menü "Überwachung" -> "Letzte Daten" -> "Rechtsklick auf den Netzwerkknoten". So sieht das Menü nach dem Hinzufügen eines Skripts aus.

Dementsprechend legen wir das Skript reboot.php im Verzeichnis / usr / share / zabbix ab (möglicherweise haben Sie ein anderes, ich verwende das Stammverzeichnis von zabbixa).
Haftungsausschluss für die SicherheitZur Verdeutlichung der Erklärung im Skript verwende ich nur die ID des Routers, aber nicht das Kennwort. In der Arbeitsversion wird dies nicht empfohlen! Warum habe ich das getan: Weil die große Frage ist, wo Passwörter für Router gespeichert werden sollen? In zabbixe selbst im "Inventar"? Widersprüchliche Praxis. Optional: Beschränken Sie den externen Zugriff auf die Datei reboot.php
Reboot.php Datei
<?php
Eigentlich alles. Die Frage „Wie erhält man das Ergebnis der Ausführung eines Befehls von der Geräteseite?“ Bleibt offen. Betrachten Sie das Problem am Beispiel des Befehls ifconfig. Dieser Befehl kann an das Gerät gesendet werden:
message=`ifconfig`; wget "http://xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php?u=user&p=password!&m=$message" -O /tmp/out.txt
wo:
message = `ifconfig` - Wir weisen das Ergebnis der Ausgabe des Befehls ifconfig der Variablen $ message zu
wget " xn - 80abgfbdwanb2akugdrd3a2e5gsbj.xn - p1ai / a.php - unser a.php-Skript, das Router registriert und Nachrichten von ihnen empfängt
u = Benutzer & p = Passwort! & m = $ message - Anmeldeinformationen und der Wert der Anforderungsvariablen m - weist den Inhalt der Variablen $ message zu
-O /tmp/out.txt - In diesem Fall benötigen wir keine Ausgabe in die Datei /tmp/out.txt. Wenn Sie diesen Parameter jedoch nicht angeben, funktioniert wget nicht
Warum funktioniert es schief?Weil es eine potenzielle Sicherheitslücke ist. Der harmloseste Fehler, der auftreten kann, ist beispielsweise, wenn die Ausgabe Ihres Befehls ein "&" -Symbol enthält. Daher ist es notwendig, alles zu filtern, was von Routern gesendet wird, und alles, was zum Server kommt. Ja, ich schäme mich wirklich. Zu meiner Verteidigung kann ich nur schreiben, dass der gesamte Artikel der Verwaltung von Routern mit undefinierter Firmware im Voraus und Kommunikationskanälen im Voraus gewidmet ist.
Nun, ich habe die Zukunft berührt: Ich habe nicht herausgefunden, wie ich die Ergebnisse (z. B. das Ergebnis des Befehls) widerspiegeln kann, die mit Standard-Zabbix-Tools auf den Server gelangen.
Ich erinnere Sie daran, dass
alle Quellen aus dem Git-Repository entnommen werden können