Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Konfigurieren eines NETCONF-Proxy-Telemetriesensors in Junos

Mithilfe des Junos-Telemetrie-Streamings können Sie mithilfe der XML-Proxy-Funktion alle verfügbaren Zustandsinformationen in einen Telemetriesensor umwandeln. Das NETCONF-XML-Verwaltungsprotokoll und die Junos XML-API dokumentieren alle Optionen für jede unterstützte Betriebsanforderung von Junos OS vollständig. Nachdem Sie XML-Proxysensoren konfiguriert haben, können Sie über NETCONF "get" Remote Procedure Calls (RPCs) auf Daten zugreifen.

In dieser Aufgabe erfahren Sie, wie Sie die Ausgabe eines Junos OS-Befehls für den Betriebsmodus streamen.

Bewährte Methode:

Es wird empfohlen, keine YANG-Dateien zu verwenden, die einem Junos OS-Betriebsbefehl mit umfangreicher oder ausführlicher Ausgabe oder einem Befehl zugeordnet sind, der nur langsam eine Ausgabe erzeugt. Befehle mit einer merklichen Verzögerung sollten in YANG-Dateien vermieden werden. Das Einfügen solcher Befehle kann sich auf andere xmlproxyd-Sensoren sowie auf die Leistung von xmlproxyd auswirken.

Die Ausgabe einiger Befehle im Betriebsmodus ist dynamisch, und der Grad ihrer Ausführlichkeit hängt von Faktoren wie der Konfiguration und der Hardware ab. Beispiele für solche Befehle sind jede Variation von show interfaces, , , show routeshow arpshow bfd, show bgpund show ddos-protection.

Um den Ausführlichkeitsgrad eines Befehls zu überprüfen, geben Sie den command-nameBefehl | | display xml ein count . Wenn die Zeilenanzahl einen Wert von 4000 Zeilen überschreitet, wird der Befehl nicht für XML-Proxystreaming empfohlen. Bei diesem Wert handelt es sich eher um eine Annäherung, die auf dem internen Base-Lining basiert. Sie kann weniger sein, abhängig von verschiedenen Faktoren wie Gerätetyp, Rechenleistung des Geräts und vorhandener CPU-Last. Folglich muss diese Funktion je nach Leistung des Geräts mit Bedacht verwendet werden.

Sie können den Befehl | display xml absetzen, bevor Sie eine YANG-Datei verwenden, die einem Junos OS- oder Junos OS Evolved-Betriebsmodusbefehl zugeordnet ist, um zu überprüfen, ob der Befehl command-nameeine gültige XML-Ausgabe erzeugt und keine ungültigen Tags, Daten oder Formatierungen enthält.

Die Verwendung einer YANG-Datei, die einem ausführlichen Befehl zugeordnet ist, führt zu einem oder mehreren der folgenden Ergebnisse:

  • Die CPU-Auslastung des xmlproxyd-Prozesses bleibt hoch. Wenn xmlproxyd die Ablaufverfolgung aktiviert hat, ist die CPU-Auslastung sogar noch höher.

  • Eine Erhöhung der Speicherauslastung des xmlproxyd-Prozesses.

  • Der xmlproxyd-Prozessstatus kann angezeigt sbwaitwerden, was darauf hinweist, dass die Befehlsausgabe ausführlich ist und dass xmlproxyd viel Zeit damit verbringt, die Ausgabe des Remote Procedure Calls (RPC) des Befehls zu lesen.

  • Die xmlproxyd-Sensordaten schließen den Wrap nicht ab.

  • Der xmlproxyd streamt teilweise oder keine Daten für die Sensoren.

  • Der xmlproxyd verpasst Berichterstellungsintervallzyklen. Die Intervalle beginnen sich aufgrund der ausführlichen Ausgabe eines Befehls zu überlappen, was dazu führt, dass der Sensor des xmlproxyd-Sensors langsam oder verzögert Daten streamt.

  • Der Prozess oder die Anwendung, die den RPC des ausführlichen Befehls bedient, weist möglicherweise eine hohe CPU-Anzahl oder Verzögerungen bei der Ausführung von Hauptaufgaben auf. Dieses Verhalten wird verursacht, wenn der Prozess oder die Anwendung damit beschäftigt ist, den RPC mit ausführlicher Ausgabe zu bedienen.

Für diese Aufgabe ist Folgendes erforderlich:

  • Router der MX-, vMX- oder PTX-Serie mit Junos OS Version 17.3R2 oder höher.

  • Installation des erforderlichen Administrationsagentenpakets ( network-agent-x86–32–17.4R1.16-C1.tgz oder höher).

  • Einen Telemetriedatenempfänger, z. B. OpenNTI, um den ordnungsgemäßen Betrieb des Telemetriesensors zu überprüfen.

In dieser Aufgabe streamen Sie den Inhalt des Junos OS-Befehls show system users.

Systembenutzer anzeigen (vMX-Serie)

Zusätzlich zur erwarteten Liste der aktuell angemeldeten Benutzer liefert die Ausgabe auch die show system users durchschnittliche Systemauslastung als 1, 5 und 15 Minuten. Sie können die Lastdurchschnitte ermitteln, indem Sie den show system users | display xml Befehl verwenden, um das XML-Tagging für die Ausgabefelder anzuzeigen. Siehe <load-average-1>, <load-average-5>und <load-average-15> in der XML-Tagging-Ausgabe unten.

Tipp:

Das uptime-information in der vorherigen Ausgabe gezeigte Tag ist ein Container, der Blätter enthält, z. Bdate-time. , , up-timeactive-user-count. und load-average-1. Nachfolgend finden Sie ein Beispiel für eine YANG-Datei für diesen Container:

Tipp:

Das uptime-information Tag hat auch einen anderen Container namens genannt user-table , der eine Liste von Benutzereinträgen enthält.

Nachfolgend finden Sie ein Beispiel für eine YANG-Datei für diesen Container:

Erstellen einer benutzerdefinierten YANG-Datei

Die YANG-Datei definiert den auszuführenden Junos CLI-Befehl, den Ressourcenpfad, unter dem die Sensoren platziert werden, und die Schlüssel-Wert-Paare aus den entsprechenden XML-Tags.

Benutzerdefinierte YANG-Dateien für Junos OS entsprechen der YANG-Sprachsyntax, die in RFC 6020 YANG 1.0 YANG – A Data Modeling Language for the Network Configuration Protocol (NETCONF) und RFC 7950 The YANG 1.1 Data Modeling Language definiert ist. Bestimmte Direktiven müssen in der Datei vorhanden sein, die den XML-Proxy konfigurieren.

Um den xmlproxyd (Daemon-)Prozess zum Übersetzen von Telemetriedaten zu verwenden, erstellen Sie eine render.yang Datei. In dieser Datei ist die auf xmlproxydgesetztdr:command-app.

Der XML-Proxy-YANG-Dateiname und der Modulname müssen mit xmlproxyd_folgendem beginnen:

  • Fügen Sie für den YANG-Dateinamen des XML-Proxys die Erweiterung .yanghinzu, z. B. xmlproxyd_sysusers.yang

  • Verwenden Sie für den Modulnamen den Dateinamen ohne die Erweiterung .yang, z. B. xmlproxyd_sysusers

Um das Erstellen einer YANG-Datei zu vereinfachen, ist es am einfachsten, mit der Änderung eines funktionierenden Beispiels zu beginnen.

  1. Geben Sie einen Namen für das Modul an. Der Modulname muss mit xmlproxyd_ dem Namen der XML-Proxy-YANG-Datei beginnen und mit diesem identisch sein.

    Zum Beispiel für eine XML-Proxy-YANG-Datei namens sysusers.yang, löschen Sie die .yang Erweiterung und nennen Sie das Modul xmlproxyd_sysusers:

    module xmlproxyd_sysusers {

  2. Geben Sie für die Junos-Telemetrieschnittstelle den Prozessnamen xmlproxyd(Daemon) an:

    dr:command-app "xmlproxyd";

  3. Fügen Sie den folgenden RPC für die NETCONF get-Anforderung ein:

    rpc juniper-netconf-get {

  4. Geben Sie den Speicherort der Ausgabe des RPC an, wobei company-name der Name ist, den Sie dem Speicherort geben:

    dr:command-top-of-output "/company-name";

  5. Fügen Sie den folgenden Befehl ein, um den RPC auszuführen:

    dr:command-full-name "drend juniper-netconf-get";

  6. Geben Sie den CLI-Befehl an, aus dem Daten abgerufen werden sollen. Der Junos OS CLI-Befehl, der mit der angeforderten Abtastfrequenz ausgeführt wird, wird unter dr:cli-command definiert und vom xmlproxyd Daemon ausgeführt.

    So rufen Sie die Befehlsausgabe für den Junos OS-Befehl show system usersab:

    dr:cli-command "show system users";

  7. Eskalieren Sie Berechtigungen, melden Sie sich als "root" an, stellen Sie über Telnet eine Verbindung zum internen Management-Socket her und geben Sie Hilfe für einen RPC an:

    dr: command-help “default <get> rpc”;

    Wenn dies in der YANG-Datei enthalten ist, wird eine Ausgabe, die für das Debuggen hilfreich ist, in der help drend Ausgabe auf dem internen Management-Socket angezeigt:

    200-juniper-netconf-get-0 system users <get> RPC

  8. Geben Sie die Hierarchie an, und verwenden Sie den dr:source Befehl zum Zuordnen zu einem Container, einer Liste oder einem bestimmten Blatt. Der absolute Pfad, unter dem die Sensoren gemeldet werden, wird aus der Ausgabegruppe junos plus system-users-informationgebildet, verkettet durch /’. Der Pfad /junos/system-users-information/ ist der Pfad, über den Informationen zu diesem benutzerdefinierten Sensor abgefragt werden sollen.
    Warnung:

    Sie sollten kein benutzerdefiniertes YANG-Modell erstellen, das mit vordefinierten nativen Pfaden (von Juniper definierte Pfade) und OpenConfig-Pfaden (Ressourcen) in Konflikt steht oder sich überschneidet. Dies kann zu undefiniertem Verhalten führen.

    Erstellen Sie z. B. kein Modell, das neue Leafs an oder erweitert Knoten für Ressourcenpfade, wie z. B /junos/system/linecard/firewall. oder /interfaces.

    Eine Eins-zu-eins-Zuordnung zwischen Container, Leafs und dem XML-Tag oder -Wert aus der Ausgabe des CLI-Befehls wird in der Gruppierung definiert, auf die im Ausgabecontainer verwiesen wird uses . Auf eine Gruppierung kann in unterschiedlichen Containerausgaben mehrfach verwiesen werden. Der folgende Container system-users-information verwendet die Gruppierung system-users-information. Es wird jedoch ohne die oben erwähnte Eins-zu-Eins-Zuordnung für jeden Container, jede Liste und jedes Leaf zu einem Ausgabe-XML-Tag aus der XML-Ausgabe des CLI-Befehls definiert.

  9. Die folgende YANG-Datei zeigt, wie Sie diese Befehle einfügen, damit der xmlproxyd Prozess den vollständigen Betriebszustand abrufen und den Blättern im Juniper-eigenen Datenmodell zuordnen kann:

Laden der Yang-Datei in Junos

Laden Sie nach Abschluss der YANG-Datei die YANG-Datei hoch, und überprüfen Sie, ob das Modul erstellt wurde.

  1. Laden Sie die YANG-Datei auf den Router hoch.
  2. Registrieren Sie die YANG-Datei mit dem request system yang add package Befehl.
    Hinweis:

    Ab Junos OS Version 18.3R1 wird das Hinzufügen, Löschen oder Aktualisieren von YANG-Paketen im Konfigurationsmodus mit dem run Befehl nicht mehr unterstützt.

  3. Vergewissern Sie sich, dass das Modul (Sensor) mit dem show system yang package sysusers Befehl registriert ist, wobei sysusers der Name des Pakets steht:
  4. Aktivieren Sie gRPC in der Junos OS-Konfiguration:

Sensordaten erfassen

Verwenden Sie Ihren bevorzugten Collector, um die neu erstellten Telemetriesensordaten aus dem Gerät abzurufen.

Berücksichtigen Sie Ressourcenbeschränkungen, bevor Sie Sensoren initiieren:

  • Vermeiden Sie es, dasselbe Berichtsintervall für mehrere XML-Proxysensoren anzugeben.
  • Verbinden Sie bei PTX10008-Routern mit Junos OS Evolved nicht mehr als 10 Collectors pro Router für Telemetrie-RPCs.
  • Da xmlproxyd XML- und Textverarbeitung durchführt, sollte ein Gerät nur XML-Proxysensoren enthalten, die innerhalb des CPU-Auslastungsbereichs ausgeführt werden.

In den folgenden Anweisungen wird der Kollektor jtimon verwendet. Weitere Informationen zum Einrichten von jtimon finden Sie unter Junos Telemetry Interface Client.

Hinweis:

Wenn bereits ein Abonnement für einen Sensor existiert und ein doppeltes Abonnement konfiguriert ist, wird die Verbindung zwischen dem Kollektor und dem Gerät mit der Fehlermeldung AlreadyExistsgeschlossen.

  1. Erstellen Sie eine einfache Konfigurationsdatei mit dem Namen vmx1.json. Passen Sie die Host-IP-Adresse und den Port nach Bedarf an. Der Pfad /junos/system-users-information wird angegeben. Das freq Feld ist in MicroSoft definiert und streamt alle 5 Sekunden einen neuen Satz von Schlüssel-Wert-Paaren. Optional können Sie mehrere Pfade hinzufügen.
  2. Starten Sie den Collector, indem Sie entweder Ihre eigene kompilierte Datei oder ein automatisch erstelltes Image von Docker Hub verwenden. Die folgende Beispielabfrage zeigt den Sensorbericht nach Pfad. Jeder Schlüssel wird in menschenlesbarer Form als absoluter Pfad gesendet. Im Falle von Listen enthält der absolute Pfad einen Index in Form von XPATH, der ideal ist, um Werte aus einer (Zeitreihen-)Datenbank wie InfluxDB zu gruppieren. Die folgende Ausgabe zeigt z. B. den Pfad /junos/system-users-information/uptime-information/user-table/user-entry[user='ab']/.

    Sie können den Datenstrom der Sensordaten mit Strg-C beenden.

    Die unten gezeigte Beispielabfrage zeigt zwei Sensorberichte pro Pfad, dann habe ich sie mit Strg-C beendet. Jeder Schlüssel wird in menschenlesbarer Form als absoluter Pfad gesendet und enthält im Falle von Listen einen Index in Form von XPATH, ideal, um Werte aus einer (Zeitreihen-)Datenbank wie InfluxDB zu gruppieren, z. B. /junos/system-users-information/uptime-information/user-table/user-entry[user='ab']/

  3. Stellen Sie sicher, dass das Modul (Sensor) mit dem show system yang package sysusers Befehl geladen ist, wobei sysusers der Name des Pakets steht:
  4. Aktivieren Sie gRPC in der Junos OS-Konfiguration:

Installieren einer benutzerdefinierten YANG-Datei

Verwenden Sie zum Hinzufügen, Validieren, Ändern oder Löschen einer benutzerdefinierten YANG-Datei für den XML-Proxy für die Junos-Telemetrieschnittstelle die request system yang folgenden Befehle aus dem Betriebsmodus:

  1. Geben Sie den Namen der XML-Proxy-YANG-Datei und den Dateipfad an, unter dem sie installiert werden soll. Mit diesem /opt/lib/render Befehl wird eine .json Datei im Verzeichnis erstellt.
    Hinweis:

    Dieser Befehl kann nur auf der aktuellen Routing-Engine ausgeführt werden.

    Um mehrere YANG-Module mit dem request system yang add package package-name proxy-xml module Befehl hinzuzufügen, schließen Sie das in eckige file-path-name Klammern ein: [ file-path-name 1 file-path-name 2 ]

  2. (Optional) Validieren Sie ein Modul, bevor Sie es dem Router hinzufügen, indem request system yang validate proxy-xml module module-name Sie den Befehl .

    Die Ausgabe XML proxy YANG module validation for xmlproxyd_<module-name> : SUCCESS zeigt eine erfolgreiche Modulvalidierung an.

    Manchmal treten Fehler bei der Nichtübereinstimmung auf. Wenn der Befehl den folgenden Fehler zurückgibt, können Sie den Fehler mit Junos OS Version 17.3R2 oder höher beheben:

  3. (Optional) Aktualisieren Sie eine vorhandene XML-Proxy-YANG-Datei, die zuvor hinzugefügt wurde.
  4. Löschen Sie eine vorhandene XML-Proxy-YANG-Datei.
  5. Vergewissern Sie sich, dass die YANG-Datei installiert wurde, indem Sie den show system yang package Befehl eingeben.

Fehlerbehebung bei Telemetriesensoren

Problem

Beschreibung

Verwenden Sie die folgenden Methoden zur Fehlerbehebung bei benutzerdefinierten Telemetriesensoren:

  • Führen Sie einen tcpdump für die Schnittstelle aus, von der Ihre gRPC-Anforderungen stammen (für diese Aufgabe wurde die Schnittstelle fxp0 verwendet).

  • Aktivieren Sie Trace-Optionen mit dem set services analytics traceoptions flag xmlproxy Befehl. Überprüfen Sie die xmlproxyd Protokolldatei, um zu bestätigen, ob der RPC des CLI-Befehls gesendet wurde und ob eine Antwort empfangen wurde:

  1. Geben Sie den show log xmlproxyd Befehl ein, um das xmlproxyd-Protokoll anzuzeigen. Der Wert für das Feld xmlproxy_execute_cli_command: gibt an, ob der RPC gesendet wurde oder nicht. Der Wert für das Feld xmlproxy_build_context gibt den Befehl an.