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

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

Diese Aufgabe zeigt, wie Sie die Ausgabe eines Junos OS-Betriebsmodusbefehls streamen.

Beste Praxis:

Es wird empfohlen, keine YANG-Dateien zu verwenden, die einem Junos OS-Betriebsbefehl mit umfangreicher oder ausführlicher Ausgabe oder einer langsamen Ausgabe zugeordnet sind. Befehle mit einer spürbaren Verzögerung sollten in YANG-Dateien vermieden werden. Das Einschließen solcher Befehle kann sich auf andere xmlproxyd-Sensoren sowie auf die Leistung von xmlproxyd auswirken.

Die Ausgabe einiger Betriebsmodusbefehle 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 route, show arp, show bfdshow bgp, und show ddos-protection.

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

Sie können den Befehl command-name| display xml ausgeben, bevor Sie eine YANG-Datei verwenden, die einem Junos OS- oder Junos OS Evolved-Befehl zugeordnet ist, um sicherzustellen, dass 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 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 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 Berichtsintervallzyklen. Die Intervalle überlappen sich aufgrund der ausführlichen Ausgabe eines Befehls, was dazu führt, dass der Sensor des xmlproxyd Daten langsam oder verzögert streamt.

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

Für diese Aufgabe ist Folgendes erforderlich:

  • Ein Router der MX-Serie, vMX-Serie oder PTX-Serie mit Junos OS Version 17.3R2 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 Befehls show system usersJunos OS .

show system users (vMX-Serie)

Neben der erwarteten Liste der aktuell angemeldeten Benutzer gibt die show system users Ausgabe auch die durchschnittliche Systemauslastung mit 1, 5 und 15 Minuten an. Sie können die Lastdurchschnitte ermitteln, indem Sie den show system users | display xml Befehl verwenden, um die XML-Tagging für die Ausgabefelder anzuzeigen. Weitere Informationen finden Sie unter <load-average-1>, <load-average-5>und <load-average-15> in der XML-Tagging-Ausgabe unten.

Trinkgeld:

Das uptime-information in der vorhergehenden Ausgabe gezeigte Tag ist ein Container, der Blätter enthält, z. B date-time. , up-time, active-user-count. und load-average-1. Im Folgenden finden Sie eine YANG-Beispieldatei für diesen Container:

Trinkgeld:

Das uptime-information Tag verfügt außerdem über einen weiteren Container mit dem Namen user-table , der eine Liste von Benutzereinträgen enthält.

Im Folgenden 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üssel-Wert-Paare aus den übereinstimmenden 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, der Datenmodellierungssprache von YANG 1.1, definiert ist. Bestimmte Direktiven müssen in der Datei vorhanden sein, mit denen der XML-Proxy konfiguriert wird.

Um den xmlproxyd Prozess zum Übersetzen von Telemetriedaten zu verwenden, erstellen Sie eine render.yang Datei. In dieser Datei ist der Wert dr:command-app auf xmlproxydfestgelegt.

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

  • Fügen Sie für den XML-Proxy-YANG-Dateinamen 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 die Erstellung 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.

    Löschen Sie z. B. für eine XML-Proxy-YANG-Datei mit dem Namen sysusers.yangdie .yang Erweiterung und nennen Sie das Modul xmlproxyd_sysusers:

    module xmlproxyd_sysusers {

  2. Geben Sie für die Junos Telemetry Interface den Prozessnamen xmlproxydein:

    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 RPC-Ausgabe 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 zum Ausführen des RPC hinzu:

    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 Prozess 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 die Berechtigungen, melden Sie sich als "root" an, stellen Sie über Telnet eine Verbindung zum internen Management-Socket her, und geben Sie die 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 Verwaltungssocket angezeigt:

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

  8. Geben Sie die Hierarchie an, und verwenden Sie den dr:source Befehl, um sie einem Container, einer Liste oder einem bestimmten Blatt zuzuordnen. Der absolute Pfad, unter dem die Sensoren gemeldet werden, wird aus der Ausgabegruppe junos plus erstellt system-users-information, verkettet durch /’. Der Pfad /junos/system-users-information/ ist der Pfad, in dem 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 Knoten für Ressourcenpfade definiert, z. B /junos/system/linecard/firewall. oder /interfaces.

    Eine Eins-zu-Eins-Zuordnung zwischen Container, Leafs und dem XML-Tag oder -Wert aus der CLI-Befehlsausgabe wird in der Gruppierung definiert, auf die im Ausgabecontainer verwiesen wird uses . Auf eine Gruppierung kann in verschiedenen 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 diese Befehle eingebunden werden, damit der xmlproxyd Prozess den vollständigen Betriebszustand abrufen und den Leafs im Datenmodell von Juniper zuordnen kann:

Laden der Yang-Datei in Junos

Nachdem die YANG-Datei fertig ist, laden Sie 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 folgenden Befehl.
    Anmerkung:

    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 lautet:
  4. Aktivieren Sie gRPC in der Junos OS-Konfiguration:

Sensordaten erfassen

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

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

  • Vermeiden Sie es, dasselbe Berichtsintervall für mehrere XML-Proxysensoren anzugeben.

  • Da xmlproxyd XML- und Textverarbeitung ausführt, sollte ein Gerät nur XML-Proxysensoren enthalten, die innerhalb des CPU-Auslastungsbereichs ausgeführt werden.

Plattformspezifisches Sensordatenerfassungsverhalten

Verwenden Sie Funktionen entdecken, um die Plattform- und Releaseunterstützung für bestimmte Funktionen zu bestätigen.

Verwenden Sie die folgende Tabelle, um plattformspezifische Verhaltensweisen für Ihre Plattformen zu überprüfen:

Tabelle 1: Erfassen des Sensordatenverhaltens

Bahnsteig

Unterschied

PTX10008

Schließen Sie bei PTX10008 Routern, die Junos OS Evolved ausgeführt werden, nicht mehr als 10 Kollektoren pro Router für Telemetrie-RPCs an.

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

Anmerkung:

Wenn bereits ein Abonnement für einen Sensor vorhanden ist 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, hier 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 aus Docker Hub verwenden. Die folgende Beispielabfrageausgabe 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 z. B. 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 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. Vergewissern Sie sich, dass das Modul (Sensor) mit dem show system yang package sysusers Befehl geladen ist, wobei sysusers der Name des Pakets ist:
  4. Aktivieren Sie gRPC in der Junos OS-Konfiguration:

Installieren einer benutzerdefinierten YANG-Datei

Um eine benutzerdefinierte YANG-Datei für den XML-Proxy für die Junos Telemetry Interface hinzuzufügen, zu validieren, zu ändern oder zu löschen, verwenden Sie die folgenden request system yang Befehle aus dem Betriebsmodus:

  1. Geben Sie den Namen der XML-Proxy-YANG-Datei und den Dateipfad für die Installation an. Mit diesem /opt/lib/render Befehl wird eine .json Datei im Verzeichnis erstellt.
    Anmerkung:

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

    Um mehrere YANG-Module mit dem Befehl hinzuzufügen, schließen Sie die file-path-name in Klammern request system yang add package package-name proxy-xml module 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 gibt an, dass die Modulvalidierung erfolgreich war.

    Gelegentlich treten Fehler aufgrund von Nichtü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. Überprüfen Sie, ob die YANG-Datei installiert wurde, indem Sie den show system yang package Befehl eingeben.

Fehlerbehebung bei Telemetriesensoren

Problem

Beschreibung

Verwenden Sie die folgenden Methoden, um Probleme mit benutzerdefinierten Telemetriesensoren zu beheben:

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

  • Aktivieren Sie die 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.