Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Konfigurieren eines NETCONF-Proxytelemetriesensors in Junos

Mit Junos Telemetry Streaming können Sie alle verfügbaren Statusinformationen mithilfe der XML-Proxy-Funktionalität in einen Telemetriesensor verwandeln. Das NETCONF XML Management Protocol und junos XML API dokumentieren alle Optionen für jede unterstützte Junos OS Betriebsanforderung vollständig. Nachdem Sie XML-Proxysensoren konfiguriert haben, können Sie über NETCONF Remote Procedure Calls (RPCs) auf Daten zugreifen.

Diese Aufgabe zeigt Ihnen, wie Sie die Ausgabe eines Junos OS-Betriebsmodus-Befehls streamen.

Best Practices:

Wir empfehlen, keine YANG-Dateien zu verwenden, die einem Junos OS-Betriebsbefehl mit umfangreichen oder ausführlichen Ausgaben oder einer, die bei der Erstellung der Ausgabe langsam ist, zugeordnet werden. Befehle mit spürbarer Verzögerung sollten in YANG-Dateien vermieden werden. Die Einbeziehung solcher Befehle kann andere xml-proxyd-Sensoren sowie die Leistung von xmlproxyd beeinträchtigen.

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

Um die Ausführlichkeitsebene eines Befehls zu überprüfen, geben Sie den command-nameBefehl | display xml | count aus. Wenn die Zeilenanzahl einen Wert von 4000 Zeilen überschreitet, wird der Befehl für XML-Proxy-Streaming nicht empfohlen. Bei diesem Wert handelt es sich eher um eine Näherung, die auf einer internen Basisauskleidung basiert. Es kann weniger sein, abhängig von verschiedenen Faktoren wie Gerätetyp, Verarbeitungsleistung des Geräts und der vorhandenen CPU-Last. Folglich muss diese Funktion entsprechend der Leistung des Geräts verwendet werden.

Sie können den Befehl command-name| display xml ausstellen, bevor Sie eine YANG-Datei verwenden, die einem Junos OS- oder Junos OS Evolved-Betriebsmodus-Befehl zuordnet wird, um zu überprüfen, ob der Befehl eine 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 zuordnet, führt zu einem oder mehreren der folgenden Ergebnisse:

  • Die xmlproxyd Prozess-CPU-Auslastung bleibt hoch. Wenn xmlproxyd die Tracing aktiviert hat, ist die CPU-Auslastung noch höher.

  • Eine Steigerung der XML-Proxy-Verarbeitungsspeicherauslastung.

  • Der Xmlproxyd-Prozessstatus kann angezeigt sbwaitwerden, was angibt, dass die Befehlsausgabe ausführlich ist und dass xmlproxyd erheblich mit dem Lesen der REMOTE-Prozeduraufrufe (RPC's) des Befehls verbringt.

  • Die xml-Proxy-Sensordaten schließen den Umbruch nicht ab.

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

  • Der xmlproxyd versäumt Berichts-Intervall-Zyklen. Die Intervalle beginnen sich aufgrund der ausführlichen Ausgabe eines Befehls zu überschneiden, was dazu führt, dass die Sensor-Streaming-Daten des xmlproxyd langsam oder verzögert sind.

  • Der Prozess oder die Anwendung, die dem RPC des ausführlichen Befehls dient, kann hohe CPU-Zahlen oder Verzögerungen bei der Ausführung der Hauptaufgaben anzeigen. Dieses Verhalten wird verursacht, wenn der Prozess oder die Anwendung ausgelastet ist, um den RPC mit ausführlicher Ausgabe zu bedienen.

Für diese Aufgabe ist Folgendes erforderlich:

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

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

  • Ein Telemetriedatenempfänger wie OpenNTI, um den korrekten Betrieb Ihres Telemetriesensors zu überprüfen.

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

Systembenutzer anzeigen (vMX-Serie)

Neben der erwarteten Liste der aktuell angemeldeten Benutzer liefert die show system users Ausgabe auch die durchschnittliche Systemlast in 1, 5 und 15 Minuten. Sie können die Lastmittelwerte ermitteln, indem Sie den show system users | display xml Befehl verwenden, um die 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 vorhergehenden Ausgabe angezeigte Tag ist ein Container, der Leafs wie date-time, up-time. active-user-countund load-average-1. Nachfolgend finden Sie eine YANG-Beispieldatei für diesen Container:

Tipp:

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

Nachfolgend finden Sie eine YANG-Beispieldatei 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üsselwertpaare, die den übereinstimmenden XML-Tags entnommen werden.

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 wurde. Bestimmte Richtlinien müssen in der Datei enthalten sein, die den XML-Proxy konfiguriert.

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

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

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

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

Um die Erstellung einer YANG-Datei zu vereinfachen, ist es am einfachsten, ein Arbeitsbeispiel zu ändern.

  1. Geben Sie einen Namen für das Modul ein. Der Modulname muss mit xmlproxyd_ dem Yang-Dateinamen des XML-Proxys beginnen und identisch sein.

    Für eine XML-Proxy-YANG-Datei sysusers.yangnamens "Löschen Sie die .yang Erweiterung" und nennen Sie das Modul xmlproxyd_sysusers:

    module xmlproxyd_sysusers {

  2. Geben Sie für die Junos Telemetry Interface den Namen des Prozesses (Daemons) ein xmlproxyd:

    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, wo company-name der Name ist, den Sie dem Speicherort geben:

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

  5. Fügen Sie den folgenden Befehl zur Ausführung des RPC ein:

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

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

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

    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 die für die Fehlerbehebung hilfreiche Ausgabe 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, um einem Container, einer Liste oder einem bestimmten Leaf zuzuordnen. Der absolute Pfad, unter dem die Sensoren gemeldet werden, wird aus der Ausgabegruppe junos plus system-users-informationerstellt, die durch /’. Der Pfad /junos/system-users-information/ ist der Pfad, um Informationen zu diesem benutzerdefinierten Sensor abzufragen.
    Warnung:

    Sie sollten kein benutzerdefiniertes YANG-Modell erstellen, das Konflikte oder Überschneidungen mit vordefinierten nativen Pfaden (von Juniper definierten Pfaden) und OpenConfig-Pfaden (Ressourcen) erzeugt. Dies kann zu undefiniertem Verhalten führen.

    Erstellen Sie beispielsweise kein Modell, das neue Leafs an Ressourcenpfaden definiert oder Knoten für Ressourcenpfade wie /junos/system/linecard/firewalloder /interfaces.

    Eine One-to-One-Zuordnung zwischen Containern, Leafs und dem XML-Tag oder -Wert aus der CLI-Befehlsausgabe wird in der Gruppierung definiert, auf die innerhalb des Ausgabecontainers uses verwiesen wird. Eine Gruppierung kann in verschiedenen Container-Ausgaben mehrfach verwiesen werden. Der folgende Container system-users-information verwendet die System-Benutzer-Informationen zur Gruppierung. Es wird jedoch ohne die oben genannte Eins-zu-Eins-Zuordnung für jeden Container, jede Liste und jedes Leaf zu einem XML-Tag aus der XML-Ausgabe des CLI-Befehls definiert.

  9. Die folgende YANG-Datei zeigt, wie Sie diese Befehle einbinden, um den xmlproxyd Prozess zum Abrufen des vollständigen Betriebszustands und der Zuordnung zu den Leafs im juniper eigenen Datenmodell zu ermöglichen:

Laden Sie die 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 unterstützt.

  3. Überprüfen Sie, ob das Modul (Sensor) mit dem show system yang package sysusers Befehl registriert ist, wobei sysusers sich der Name des Pakets befindet:
  4. Aktivieren Sie gRPC in der Junos OS-Konfiguration:

Erfassung von Sensordaten

Verwenden Sie Ihren Lieblingssammler, um die neu erstellten Telemetriesensordaten vom Gerät zu ziehen.

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

  • Vermeiden Sie die Angabe desselben Berichtsintervalls für mehrere XML-Proxy-Sensoren.
  • Für PTX10008-Router mit Junos OS Evolved nicht mehr als 10 Kollektoren pro Router für Telemetrie-RPCs verbinden.
  • Da xmlproxyd XML- und Textverarbeitung ausführt, sollte ein Gerät nur XML-Proxysensoren enthalten, die innerhalb des CPU-Auslastungsbereichs ausgeführt werden.

Die folgenden Anweisungen verwenden den Collector jtimon. Informationen zur jtimon-Einrichtung finden Sie unter Junos Telemetry Interface-Client.

Hinweis:

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

  1. Erstellen Sie hier 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 wird in MicroSoft definiert und streamt alle 5 Sekunden einen neuen Satz von Schlüsselwertpaaren. 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 aus Docker Hub verwenden. Die nachstehende Beispielabfrage zeigt den Sensorbericht nach Pfad. Jeder Schlüssel wird in menschenlesbarer Form als absoluter Pfad gesendet. Bei 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 Strom der Sensordaten mit Strg-C beenden.

    Die unten dargestellte Beispielabfrage zeigt zwei Sensorberichte pro Pfad, dann habe ich ihn mit Strg-C beendet. Jeder Schlüssel wird in für Menschen lesbarer Form als absoluter Pfad gesendet und enthält bei 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. Überprüfen Sie, ob das Modul (Sensor) geladen ist, indem Sie den show system yang package sysusers Befehl verwenden, wobei sysusers der Name des Pakets lautet:
  4. Aktivieren Sie gRPC in der Junos OS-Konfiguration:

Installieren einer benutzerdefinierten YANG-Datei

Verwenden Sie den request system yang Satz von Befehlen aus dem Betriebsmodus, um eine benutzerdefinierte YANG-Datei für XML-Proxy für die Junos-Telemetrieschnittstelle hinzuzufügen, zu validieren, zu ändern oder zu löschen:

  1. Geben Sie den Namen der XML-Proxy-YANG-Datei und den Dateipfad für die Installation an. Mit diesem Befehl wird eine .json Datei im /opt/lib/render 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 die file-path-name folgenden Klammern ein: [ file-path-name 1 file-path-name 2 ]

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

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

    Manchmal treten Fehler bei der Übereinstimmung auf. Wenn der Befehl den folgenden Fehler zurückgibt, können Sie den Fehler mithilfe von 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 telemetrie-Sensoren, die benutzerdefinieren:

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

  • Aktivieren Sie Traceoptionen 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 aus, 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.