Dial-Out-Telemetrieverbindung herstellen
Verwenden Sie dieses Verfahren, um eine Telemetrie-Verbindung herzustellen. Konfigurieren Sie den gRPC-Dienst, das Streamingserverprofil, das Sensorprofil, das Exportprofil und die Datenerfassung basierend auf den Sensorinformationen, die Sie vom Junos-Gerät erfassen möchten.
Im Dial-Out-Modus stellt das Juniper Gerät eine Verbindung zu einem externen Telemetrie-Collector her und streamt Telemetriedaten. Diese Methode wird bevorzugt, wenn eine zentrale Verwaltung von Telemetriedaten erforderlich ist, da das Gerät Daten an den Kollektor überträgt, ohne dass der Kollektor Verbindungen initiieren muss.
-
Stellen Sie sicher, dass auf dem Juniper Gerät eine kompatible Junos OS-Version ausgeführt wird, die Junos Telemetry unterstützt.
-
Richten Sie einen Telemetrie-Collector ein (z. B. Juniper Telemetry Collector, Prometheus oder InfluxDB), der mit dem gewählten Transportprotokoll (UDP oder TCP) kompatibel ist.
-
Stellen Sie sicher, dass die Netzwerkkonnektivität zwischen dem Juniper Gerät und dem Collector gewährleistet ist (z. B. TCP-Port 50051 für gRPC oder ein benutzerdefinierter Port für UDP).
-
Wenn Sie TLS mit gRPC verwenden, bereiten Sie Zertifikate für das Gerät und den Collector vor.
Hinweis: Vor der Version von Junos OS 25.4R1 wurden TLS-Optionen unter deredit system services extension-service request-response grpc sslHierarchie konfiguriert. Verwenden Sie ab Junos OS Version 25.4R1 die PKI-Befehle (Public Key Infrastructure), um lokale Zertifikate und CA-Profile (Certificate Authority) zu laden, siehe Konfigurieren eines Streaming-Serverprofils. -
Unterstützte Sensoren finden Sie im Junos YANG Data Model Explorer (eingeführt in Junos OS Version 23.2R2-S2) oder im Junos Telemetry Sensor Explorer (für die Versionen 20.2R1 bis 23.1R1).
-
Konfigurieren Sie für die Auswahl über TCP-Verbindungen die IP-Adresse und die Routinginstanz unter Konfigurieren des gRPC-Diensts für die Auswahl über TCP-Verbindungen.
-
Arten der Dial-Out-Telemetrie:
Junos Telemetry unterstützt drei Arten von Dial-Out-Verbindungen. Jeder Verbindungstyp verwendet ein anderes Nachrichtenformat und hat spezifische Decodierungsanforderungen. Informationen zum Konfigurieren des
dialout-type, siehe Konfigurieren eines Exportprofils.Tabelle 1: Arten der Dial-Out-Telemetrie Dial-Out-Typ Konfiguration mit der CLI-Option Format der Nachricht Datenmodelle Anforderungen an die Dekodierung Transportprotokoll Art des Abonnements Dial-out über UDP (Protobuf Compact Format, proprietär von Juniper) native-udp-compactSensordaten im protobuf (.gpb) Format. Protobuf-Nachrichten haben eine kompakte Form. Junos native und OpenConfig-Modelle. Verwendet für die Dekodierung Junos-spezifische Dienstprogramme, Telemetrie_top.proto und Sensor-Proto-Dateien. UDP STREAMEN Dial-out über UDP (Protobuf Structured Format) native-udp-gpbProtobuf-Nachrichten liegen in strukturierten, selbstbeschreibenden Schlüssel-Wert-Paaren vor. Alle Datenmodelle Die Nachricht enthält vollständige Informationen zum Schlüsselnamen und zum Wertpaar, sodass der Collector keine Datenmodelle für die Verarbeitung oder Nutzung der Telemetriedaten benötigt. Die Nachrichtenstruktur wird in der Datei jnx_gnmi_over_udp.proto definiert. UDP STREAM mit SAMPLE-Modus Dial-out über TCP (Protobuf Structured Format) native-grpc-gpbProtobuf-Nachrichten haben ein strukturiertes universelles Schlüssel/Wert-Format. Alle Datenmodelle Verwendet gnmi.proto und GnmiJuniperTelemetryHeader.proto für die Decodierung. TCP STREAMEN Hinweis: Ab Version 25.4 sind dieformatOptionen undtransportunter der[edit services analytics export-profile name]Hierarchie veraltet.-
Protobuf kompaktes Format:
Dieses Format gilt als "kompakt", da es keine ausführlichen Schlüssel-Wert-Darstellungen enthält. Sie müssen jedoch die neueste Version der protobuf-Dateien herunterladen, um die Telemetriedaten zu decodieren.
-
Strukturiertes Protobuf-Format:
Dieses Format verwendet selbstbeschreibende Schlüssel-Wert-Paare in Protobuf-Nachrichten. Jede Nachricht enthält vollständige Sensordatennamen und -werte, die Dosensammler verarbeiten Sensordaten auch ohne die Datenmodelldateien.
-
Konfigurieren Sie einen Sensor zur Überwachung einer bestimmten Systemressource. Jede Sensorkonfiguration erfordert drei Hauptkomponenten:
-
Streaming-Serverprofil: Gibt den Server zum Sammeln von Daten und zugehörigen Parametern an, einschließlich der Ziel-IP-Adresse und der Portnummer. Bevor Sie beginnen, konfigurieren Sie eine Verbindung von Ihrem Juniper Networks-Gerät zu einem Server, der In-Band-Verwaltungsschnittstellen verwendet.
-
Sensorprofil: Ermöglicht die Überwachung der Systemressource und das Festlegen zugehöriger Parameter, z. B. des Zielservers, der zum Empfangen von Daten verwendet wird.
-
Exportprofil: Gibt Attribute für den Export der gesammelten Daten an.
Es wird empfohlen, mindestens ein Exportprofil und mindestens einen Streamingserver zu konfigurieren, bevor Sie ein Sensorprofil konfigurieren. Anschließend können Sie der Sensorprofilkonfiguration ein Exportprofil und einen Streamingserver zuordnen.
Um den Export von Statistiken zu aktivieren, schließen Sie die export-profile sensor und-Anweisungen auf der Hierarchieebene [edit services analytics] ein. Die Sensorkonfiguration muss den Namen des Collectors, den Namen des Exportprofils und den Ressourcenpfad enthalten.
Beispiel für Ressourcenpfad : /interfaces/interface[name='fxp0'].
Wenn Sie ein Exportprofil für die Auswahl über UDP konfigurieren, sind die Exportprofilparameter wie {'dscp', 'forwarding-class', 'payload-size'} nicht anwendbar. Die Konfiguration einer dieser Optionen erzeugt einen Fehler.
Führen Sie die unten aufgeführten Verfahren aus, um eine wählbare Telemetrie-Verbindung herzustellen:
Konfigurieren eines Streamingserverprofils
Ein Serverprofil definiert die Parameter des Servers, der exportierte Telemetriedaten sammelt. Sie können mehr als ein Serverprofil definieren. Sie können dasselbe Serverprofil auch mehreren Sensorprofilen zuordnen. Sie können mehr als einen Server mit einem bestimmten Sensor verknüpfen.
Richtlinien für das Streamen von Telemetriedaten über UDP:
- Telemetriedaten werden über UDP direkt von der Quellanwendung zum Kollektor gestreamt. Die Konfiguration hängt von der Art der Verbindung zum Kollektor ab. Der Collector muss über die Managementschnittstelle oder eine WAN-Schnittstelle erreichbar sein.
- Im Falle von Linecard-Sensoren können die Linecards die Daten direkt an den Collector exportieren, wenn die Remote-Adresse über die WAN-Schnittstelle erreichbar ist. Wenn die Telemetrie-Daten über die Verwaltungsschnittstelle für Linecard-Sensoren exportiert werden müssen, leiten Sie die Daten an die Routing-Engine weiter, und senden Sie sie dann an den Collector.
So definieren Sie das Profil eines Streamingservers zum Sammeln exportierter Telemetriedaten:
Konfigurieren eines Sensorprofils
Ein Sensorprofil definiert die Parameter der Systemressource zur Überwachung und zum Streamen von Daten. Sie können nur eine zu überwachende Systemressource für jedes Sensorprofil aktivieren. Konfigurieren Sie für jede Systemressource, die Sie überwachen möchten, ein anderes Sensorprofil. Sie können jedoch mehr als einen Sensor konfigurieren, um dieselbe Systemressource zu überwachen. Erwägen Sie beispielsweise, verschiedene Parameter für den Export von Daten aus derselben Systemressource zu konfigurieren.
So konfigurieren Sie ein Sensorprofil:
Konfigurieren eines Exportprofils
Ein Exportprofil definiert die Parameter des Exportprozesses von Daten, die über den Junos Telemetrie-Mechanismus generiert werden. Sie müssen mindestens ein Exportprofil konfigurieren, Sie können auch mehrere Exportprofile konfigurieren. Jedes Exportprofil kann mehreren Sensorprofilen zugeordnet werden. Sie können jedoch nur ein Exportprofil mit einem bestimmten Sensorprofil verknüpfen.
Plattformspezifisches Exportprofilverhalten
Verwenden Sie den Feature-Explorer , um die Plattform- und Release-Unterstützung für bestimmte Funktionen zu bestätigen.
Verwenden Sie die folgende Tabelle, um plattformspezifische Verhaltensweisen für Ihre Plattformen zu überprüfen:
| Plattform |
Unterschied |
|---|---|
| MX-Serie |
Auf Routern der MX-Serie können Sie eine Paketverlustpriorität für ein Exportprofil angeben. Daher können Sie jedem Sensor die entsprechende Paketverlustpriorität zuweisen. Die Einstellungen für die Verlustpriorität helfen bei der Bestimmung, welche Pakete in Zeiten von Überlastung aus dem Netzwerk verworfen werden. Bisher konnten Sie in einem Exportprofil nur die Weiterleitungsklasse und den DSCP-Wert angeben. Die folgenden Einstellungen für die Priorität für Paketverluste werden unterstützt: |
So konfigurieren Sie ein Exportprofil:
Konfigurieren des Datensammlers
Überprüfen Sie die Konfiguration des Junos Telemetry Interface Sensors.
Zweck
Bestätigen Sie Ihre Konfiguration.
Aktion
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration durch Eingabe des show services analytics Befehls. Wenn Ihre Ausgabe nicht die beabsichtigte Konfiguration anzeigt, wiederholen Sie die Anweisungen im Konfigurationsverfahren, um sie zu korrigieren.
Überprüfen Sie nach dem Commit der Konfiguration, ob der Sensor aktiviert ist, indem Sie den show agent sensors Betriebsbefehl ausgeben.
Die show agent sensors Befehlsausgabe für gRPC-Sensoren wird auf der Junos OS Evolved-Plattform abgeschnitten, um sie an das Ausgabeformat der Junos OS-Plattform anzupassen.
Auswählen von Sensorpfaden
Sensor-Explorer und Richtlinien für die Auswahl von Sensorpfaden
Verwenden Sie den Junos YANG-Datenmodell-Explorer von Juniper Networks, um alle unterstützten Ressourcenpfade, die entsprechenden Leaves und die Geräteplattformen, die sie unterstützen, anzuzeigen.
Informationen zum Suchen und Anzeigen anderer Telemetriesensoren und spezifischer Informationen zu einigen Legacysensoren finden Sie unter Legacysensorpfade.
Informationen zu Richtlinien und bewährten Methoden zum Konfigurieren von Sensorpfaden finden Sie unter Erkunden von Sensorpfaden.
Dekodierung von Junos Telemetry Interface-Daten mit UNIX-Versorgungsunternehmen
Sie können UNIX-Dienstprogramme verwenden, um Daten der Junos Telemetry Interface auf einem Server oder Collector zu decodieren, der Daten von einem Gerät von Juniper Networks streamt. Das Beispiel in diesem Abschnitt zeigt, wie Sie ein einzelnes Paket gestreamter Daten decodieren.
- Vorbereiten des Kollektors zum Decodieren von Daten
- Dekodieren von Daten auf dem Kollektor
- Dekodierung von UDP-Daten der Junos Telemetry Interface am Collector
Vorbereiten des Kollektors zum Decodieren von Daten
Für dieses Beispiel ist Folgendes erforderlich:
-
UNIX OS mit dem Dienstprogramm Netcat (nc).
-
Protokollpuffer-Compiler.
-
Protokollpufferdateien der Junos Telemetry Interface.
Dieses Verfahren zeigt, wie Sie den Collector für die Dekodierung von Daten mit dem Ubuntu OS vorbereiten.
Installieren Sie das Netcat-Dienstprogramm.
sudo apt-get install netcat
Installieren Sie den Protokollpuffer-Compiler.
sudo apt-get install protobuf-compiler
Installieren Sie die Entwicklerbibliothek der Protokollpuffer.
sudo apt-get install libprotobuf-dev
Stellen Sie sicher, dass die Bibliotheksdateien installiert sind.
ls /usr/include/google/protobuf/descriptor.proto /usr/include/google/protobuf/descriptor.proto
Laden Sie die neueste Version der Protokollpufferdateien der Junos Telemetry Interface herunter und installieren Sie sie.
Navigieren Sie in einem Webbrowser auf der Seite Juniper Networks zur URL zum Download der Software All Junos Platforms: https://www.juniper.net/support/downloads/. Nachdem Sie den Namen der Junos OS-Plattform und die Versionsnummer ausgewählt haben, wechseln Sie zum Abschnitt Tools , und laden Sie das Datenmodelldateienpaket der Junos Telemetry Interface herunter.
Hinweis: Juniper Networks veröffentlicht YANG-Module für Junos-Geräte, die aus dem GitHub-Repository von Juniper heruntergeladen werden können. Ab Version 23.4 werden Konfiguration und Telemetrie-YANG-Modelle zusammengeführt und im GitHub-Repository von Juniper veröffentlicht. Diese enthält YANG-Definitionen für Konfiguration, RPCs und Telemetrie-Modelle.Hinweis:Notieren Sie sich den Speicherort der extrahierten Dateien.
Dekodieren von Daten auf dem Kollektor
In diesem Verfahren wird gezeigt, wie Sie Daten erfassen, Rohdaten decodieren und die Protokollpufferdateien zum Decodieren von Daten verwenden.
So decodieren Sie Daten:
Erfassen Sie die Daten.
Führen Sie netcat auf einem Ziel-Streaming-Telemetrie-Server oder -Collector im UDP-Listener-Modus aus, um alle eingehenden Datagramme in einer Datei zu speichern. Verwenden Sie die Zielportnummer, die im Streaming-Server-Profil Ihres Juniper Networks-Geräts konfiguriert ist.
nc -ul 0.0.0.0 20000 > data.gpb
Hinweis:Dieser Befehl speichert Datagramme in einer Datei mit dem Namen
data.gpb. Führen Sie dieses Programm aus, um Daten zu erfassen. Wenn Sie den Empfang von Daten beenden möchten, beenden Sie das Programm, indem Sie das Pausensignal (Control + C) senden.Dekodieren von Rohdaten.
Hinweis:Dieser Schritt ist optional. Dies ist nicht erforderlich, wenn Sie den codierten Nachrichtentyp der Daten kennen.
Die Dekodierungsanforderungen variieren je nach konfiguriertem
dial-outTyp.Dial-out over UDP (Protobuf Compact Format, Juniper Proprietär): Verwenden Sie für die Dekodierung Junos-spezifische Dienstprogramme, Telemetrie_top.proto und Sensor-Proto-Dateien.
Dial-out over UDP (Protobuf Structured Format): Die Nachricht enthält vollständige Informationen zum Schlüsselnamen und -wert-Paar, sodass der Collector keine Datenmodelle für die Verarbeitung oder Nutzung der Telemetriedaten benötigt. Die Nachrichtenstruktur wird in der Datei jnx_gnmi_over_udp.proto definiert.
Dial-out over TCP (Protobuf Structured Format): Verwenden Sie für die Dekodierung die Dateien gnmi.proto und GnmiJuniperTelemetryHeader.proto .
Das folgende Beispiel zeigt, wie die Nachricht aus der Datei für die
data.gpbAuswahl über UDP-Verbindungen (Protobuf Compact Format, Juniper Proprietär) decodiert wird:protoc --decode_raw < ../data.gpb 1: "hillrock:160.1.1.25" 2: 0 4: "S1:/junos/system/linecard/interface/logical/usage/:/junos/system/linecard/interface/logical/usage/:PFE" 5: 65265 6: 1477686534474 7: 1 8: 1 101 { 2636 { 7 { 1 { 1: "et-0/0/4:2.32767" 2: 1477642750 3: 813 4 { 12: 0x37363732332e3165 } . . .Die nächste verschachtelte Struktur unter
2636identifiziert den Sensortyp. Der numerische Wert2636identifiziert dieJuniperNetworksSensorNachricht, die in dertelemetry_top.protoDatei definiert ist. In diesem Beispiel entspricht der numerische Bezeichner7derLogicalPortin derlogical_port.protoDatei definierten Nachricht. Verwenden Sie diese Informationen im nächsten Schritt, um eine detailliertere Ausgabe zu generieren.Decodieren Sie die Nachricht, um Feldnamen einzuschließen.
Führen Sie den Protokollpuffer-Compiler mit der Option decode aus. Geben Sie außerdem den Nachrichtentyp der obersten Ebene (
TelemetryStream) und die Datei mit der Nachrichtendefinition an.logical_port.protoSie müssen auch die GPU-Bibliothek (Goggle Protocol Buffers) einschließen.protoc --decode TelemetryStream logical_port.proto -I /usr/include -I . < data.gpb system_id: "hillrock:160.1.1.25" component_id: 0 sensor_name: "S1:/junos/system/linecard/interface/logical/usage/:/junos/system/linecard/interface/logical/usage/:PFE" sequence_number: 65268 timestamp: 1477686536484 version_major: 1 version_minor: 1 enterprise { [juniperNetworks] { [jnprLogicalInterfaceExt] { interface_info { if_name: "et-0/0/4:2.32767" init_time: 1477642750 snmp_if_index: 813 parent_ae_name: "ae1.32767" ingress_stats { if_packets: 0 if_octets: 0 } egress_stats { if_packets: 0 if_octets: 0 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/7:3.0" init_time: 1477642750 snmp_if_index: 520 parent_ae_name: "ae0.0" ingress_stats { if_packets: 61203309 if_octets: 6487548454 } egress_stats { if_packets: 87416547 if_octets: 9266153982 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.0" init_time: 1477642750 snmp_if_index: 2512 ingress_stats { if_packets: 26266247 if_octets: 2784214806 } egress_stats { if_packets: 26247215 if_octets: 2781829290 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.1" init_time: 1477642750 snmp_if_index: 2522 ingress_stats { if_packets: 26266249 if_octets: 2784214972 } egress_stats { if_packets: 26249115 if_octets: 2781935590 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.2" init_time: 1477642750 snmp_if_index: 2523 ingress_stats { if_packets: 26266248 if_octets: 2784214912 } egress_stats { if_packets: 26249106 if_octets: 2781935086 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.3" init_time: 1477642750 snmp_if_index: 2524 ingress_stats { if_packets: 26266248 if_octets: 2784214820 } egress_stats { if_packets: 26248520 if_octets: 2781902320 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.4" init_time: 1477642750 snmp_if_index: 2525 ingress_stats { if_packets: 26266247 if_octets: 2784214760 } egress_stats { if_packets: 26247302 if_octets: 2781834112 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.5" init_time: 1477642750 snmp_if_index: 2526 ingress_stats { if_packets: 26266247 if_octets: 2784214760 } egress_stats { if_packets: 26247209 if_octets: 2781828904 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.6" init_time: 1477642750 snmp_if_index: 2527 ingress_stats { if_packets: 26266248 if_octets: 2784214820 } egress_stats { if_packets: 26247196 if_octets: 2781828226 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.7" init_time: 1477642750 snmp_if_index: 2528 ingress_stats { if_packets: 26266247 if_octets: 2784214760 } egress_stats { if_packets: 26247203 if_octets: 2781828618 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.8" init_time: 1477642750 snmp_if_index: 2529 ingress_stats { if_packets: 26266247 if_octets: 2784214760 } egress_stats { if_packets: 26247225 if_octets: 2781829850 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.9" init_time: 1477642750 snmp_if_index: 2530 ingress_stats { if_packets: 26266247 if_octets: 2784214760 } egress_stats { if_packets: 26247209 if_octets: 2781828954 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.32767" init_time: 1477642750 snmp_if_index: 648 ingress_stats { if_packets: 4 if_octets: 240 } egress_stats { if_packets: 0 if_octets: 0 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/4:2.32767" init_time: 1477642750 snmp_if_index: 813 parent_ae_name: "ae1.32767" ingress_stats { if_packets: 0 if_octets: 0 } egress_stats { if_packets: 0 if_octets: 0 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/7:3.0" init_time: 1477642750 snmp_if_index: 520 parent_ae_name: "ae0.0" ingress_stats { if_packets: 61206122 if_octets: 6487846632 } egress_stats { if_packets: 87420567 if_octets: 9266580102 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.0" init_time: 1477642750 snmp_if_index: 2512 ingress_stats { if_packets: 26267458 if_octets: 2784343172 } egress_stats { if_packets: 26248420 if_octets: 2781957020 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.1" init_time: 1477642750 snmp_if_index: 2522 ingress_stats { if_packets: 26267460 if_octets: 2784343338 } egress_stats { if_packets: 26250320 if_octets: 2782063320 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.2" init_time: 1477642750 snmp_if_index: 2523 ingress_stats { if_packets: 26267459 if_octets: 2784343278 } egress_stats { if_packets: 26250311 if_octets: 2782062816 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.3" init_time: 1477642750 snmp_if_index: 2524 ingress_stats { if_packets: 26267460 if_octets: 2784343292 } egress_stats { if_packets: 26249725 if_octets: 2782030050 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.4" init_time: 1477642750 snmp_if_index: 2525 ingress_stats { if_packets: 26267459 if_octets: 2784343232 } egress_stats { if_packets: 26248507 if_octets: 2781961842 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.5" init_time: 1477642750 snmp_if_index: 2526 ingress_stats { if_packets: 26267459 if_octets: 2784343232 } egress_stats { if_packets: 26248414 if_octets: 2781956634 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.6" init_time: 1477642750 snmp_if_index: 2527 ingress_stats { if_packets: 26267460 if_octets: 2784343292 } egress_stats { if_packets: 26248401 if_octets: 2781955956 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.7" init_time: 1477642750 snmp_if_index: 2528 ingress_stats { if_packets: 26267459 if_octets: 2784343232 } egress_stats { if_packets: 26248408 if_octets: 2781956348 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.8" init_time: 1477642750 snmp_if_index: 2529 ingress_stats { if_packets: 26267459 if_octets: 2784343232 } egress_stats { if_packets: 26248430 if_octets: 2781957580 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.9" init_time: 1477642750 snmp_if_index: 2530 ingress_stats { if_packets: 26267459 if_octets: 2784343232 } egress_stats { if_packets: 26248414 if_octets: 2781956684 } op_state { operational_status: "up" } } interface_info { if_name: "et-0/0/13:0.32767" init_time: 1477642750 snmp_if_index: 648 ingress_stats { if_packets: 4 if_octets: 240 } egress_stats { if_packets: 0 if_octets: 0 } op_state { operational_status: "up" } } } } }
Dekodierung von UDP-Daten der Junos Telemetry Interface am Collector
Der Collector muss einen Listener auf der Remote-Adresse oder Portkombination starten, um die eingehenden Daten zu lesen. Bei der Wahl über UDP-Verbindungen (Protobuf Compact Format, Juniper Proprietary ) können die eingehenden Daten mit den Dateien Telemetrie_top.proto und Sensor proto dekodiert werden. Bei der Wahl über UDP-Verbindungen (Protobuf Structured Format) enthält die Nachricht vollständige Schlüsselnamen- und Wertpaarinformationen, sodass der Collector keine Datenmodelle für die Verarbeitung oder Nutzung der Telemetriedaten benötigt. Die Nachrichtenstruktur wird in der Datei jnx_gnmi_over_udp.proto definiert.
Um den Dekodierungsvorgang zu vereinfachen, können die Kollektoren alle Proto-Dateien laden, die als Teil des Telemetrie-Software-Pakets ausgeliefert werden, um die eingehenden Daten zu dekodieren.
- Überprüfen Sie Streaming-Daten sowohl auf Management- als auch auf WAN-Schnittstellen. Geben Sie die entsprechende Adresse im Streamingserverprofil an.
- Enumerationen und float werden als Zeichenfolgen für das UDP-Streaming gestreamt. Enumerationen werden als Strings beibehalten, da gNMI dasselbe Format verwendet.
- Die Behandlung des float-Datentyps ist auf eine zukünftige Version beschränkt.
Wenn Telemetriedaten über UDP gestreamt werden, stellen Sie sicher, dass die Daten korrekt decodiert werden und unbekannte Felder nicht am Collector decodiert werden.
Beim Streamen von Telemetriedaten über UDP wurden unter anderem folgende Probleme beobachtet:
- Falsche Dekodierung: Eine falsche Dekodierung bedeutet, dass Telemetriedaten nicht korrekt über UDP gestreamt werden. Im folgenden Beispiel zeigen die fett hervorgehobenen Daten an, dass die Daten nicht ordnungsgemäß decodiert wurden. Dieses Verhalten ist entweder auf eine falsche Kodierung oder eine falsche Verpackung der Proto-Datei zurückzuführen.
system_id: "r02.dtw01.icn" component_id: 65535 sensor_name: "mpls:/network-instances/network-instance/mpls:/network-instances/network-instance/mpls:rpd" sequence_number: 2421 timestamp: 1715024560793 version_major: 1 version_minor: 0 enterprise: { [juniperNetworks]: { [jnpr_network_instances_rsvp_ext]: { network_instance: { name: "master" mpls: { 153 { 151 { 152{ 151{ 51: "r02.dtw01.icn-r01.bos02.icn-01" 152{ 151{ 51: "AUTO" 52: 0 53: 12873154 } 152{ 151{ 51:1 52:200000 53: 0 54: 300 55: 1 61: 1549061 } 152 {Das Beispiel für korrekt dekodierte Daten ist wie folgt:
system_id: "r0-RE0" component_id: 65535 sub_component_id: 0 sensor_name: "test_chassisd:/network-instances/:/network-instances/:rpd" sequence_number: 0 timestamp: 1719126223900 version_major: 1 version_minor: 0 enterprise { [juniperNetworks] { [jnpr_network_instances_ni_226_ext] { network_instance { name: "DEFAULT" protocols { protocol { identifier: "STATIC" name: "DEFAULT" static_routes { static { prefix: "10.0.0.0/8" state { prefix: "10.0.0.0/8" set_tag: "0" } next_hops { next_hop { index: "1" state { index: "1" next_hop: "10.220.127.254" metric: 0 recurse: false } interface_ref { state { interface: "re0:mgmt-0" subinterface: 0 } } } } } - Unvollständiges Datenstreaming: Das Streaming unvollständiger Daten muss durch Datenvalidierung in der Ausgabedatei überprüft werden.
Siehe auch
Tabellarischer Änderungsverlauf
Die Unterstützung der Funktion hängt von der Plattform und der Version ab, die Sie benutzen. Verwenden Sie den Feature-Explorer , um festzustellen, ob eine Funktion auf Ihrer Plattform unterstützt wird.
dialout-type CLI im
export-profile Befehl zum Konfigurieren des Transportprotokolls und des Telemetrie-Nachrichtenformats eingeführt. Die
format Optionen und
transport sind veraltet.