Eine neue Generation der Netzwerküberwachungstechnologie – Telemetrie

1. Hintergrund der Telemetrie

Zu den herkömmlichen Überwachungsmethoden für Netzwerkgeräte gehören SNMP, CLI, Syslog, NetStream und sFlow, wobei SNMP die gängigste Datenüberwachungsmethode ist. Mit der Ausweitung der Größe von Netzwerksystemen, der Zunahme der Anzahl von Netzwerkgeräten, der Komplexität von Netzwerkstrukturen und den entsprechenden Überwachungsanforderungen weisen diese traditionellen Überwachungsmethoden nun viele Mängel auf, wie zum Beispiel:

  • NetStream und sFlow überwachen hauptsächlich den Datenverkehr, es fehlt jedoch die entsprechende Überwachung anderer Datenebenen wie CPU-Informationen, Speicher, Netzwerküberlastungsinformationen, Netzwerkereignisprotokollinformationen usw.

  • Sowohl Syslog als auch CLI verfügen nicht über einheitliche strukturierte Daten, was der Wartung und Erweiterung nicht förderlich ist.

  • Obwohl SNMP über einen großen Überwachungsbereich verfügt, weist es Mängel bei der Überwachungshäufigkeit und -methode auf. Die wichtigste Überwachungsmethode von SNMP ist der traditionelle Pull-Modus. Bei dieser Methode handelt es sich um einen Frage-und-Antwort-Modus, bei dem die Überwachungsseite proaktiv Anfragen an Knoten in einer Abfrageform initiiert und auf Antworten wartet. Diese Methode weist eine schlechte Aktualität auf und ist in Notfällen schwierig zu überwachen. Ist die Probenahmezeit zu lang, verringert sich die Echtzeitleistung; ist die Probenahmezeit zu kurz, erhöht sich der Druck auf die zu prüfenden Geräte.

  • Obwohl SNMP eine SNMP-Trap-Push-Methode entwickelt hat, kann diese Methode nur Ereignis- und Alarminformationen pushen, und Überwachungsdaten wie Schnittstellenverkehr können nicht erfasst und gesendet werden.

Daher sollte die Überwachungstechnologie großer Datennetze die Eigenschaften Echtzeit, hohe Leistung, hohe Skalierbarkeit usw. aufweisen, einschließlich einer höheren Genauigkeit der Überwachungsdaten für eine rechtzeitige Erkennung und schnelle Anpassung des Mikroburst-Verkehrs. Der Überwachungsprozess sollte über ein umfassendes Verständnis der Funktionen und Funktionen des Geräts selbst verfügen. Die Auswirkungen auf die Leistung sind gering, um die Geräte- und Netzwerkauslastung zu verbessern und die Betriebs- und Wartungsvisualisierung wie Überwachungsverzögerung, Weiterleitungspfad, Cache und Paketverlust besser zu realisieren , usw. Wenn das SNMP-Protokoll zum Anfordern von Netzwerkstatusinformationen verwendet wird, die von einer externen Anwendung initiiert werden, kann der Status des Netzwerks nicht in Echtzeit wiedergegeben werden.

Nachteile herkömmlicher Überwachungsmethoden:

Bild

SNMP weist eine schlechte Aktualität auf:

Bild

Telemetrie ist eine Technologie, die aus diesem Bedürfnis heraus entstanden ist. Die Branche betrachtet SNMP auch als traditionelle Telemetrietechnologie und bezeichnet die aktuelle Telemetrie als Streaming-Telemetrie. In diesem Artikel wird Telemetrie verwendet, um sich auf Streaming-Telemetrie zu beziehen. Telemetrie ist eine neue Generation der Netzwerküberwachungstechnologie, die Daten aus der Ferne und mit hoher Geschwindigkeit von Geräten sammelt. Das Gerät sendet regelmäßig und aktiv Geräteinformationen über den „Push-Modus“ an den Sammler und bietet so Echtzeit-, schnellere und genauere Netzwerküberwachungsfunktionen . . Im Vergleich zu SNMP ermöglicht Telemetrie Netzwerkgeräten, Statusinformationen aktiv zu übertragen, und ist zeitnaher.

2. Merkmale der Telemetrie

Telemetrie erfasst eine Vielzahl von Datentypen, die die Netzwerkbedingungen vollständig widerspiegeln können.

Es organisiert Daten gemäß dem einheitlichen YANG-Datenmodell, kann Googles GPB (Google Protocol Buffers), XML, JSON und andere Methoden zum Kodieren und Dekodieren verwenden und überträgt Daten über Protokolle wie gRPC (Google Procedure Call Protocol), wodurch die Daten erstellt werden sicherer. Der Zugriff ist effizienter und das intelligente Andocken ist bequemer. Die Datentypen, die Telemetrie überwachen kann, sind:

  • Netzwerkschnittstellendaten: einschließlich Netzwerkschnittstellenverkehr, Fehlerrate, Paketverlustrate usw.

  • Netzwerkgerätestatus: einschließlich CPU-Auslastung, Speicherauslastung, Temperatur, Lüftergeschwindigkeit usw.

  • Statistiken zum Netzwerkverkehr: einschließlich der Quell-IP-Adresse, der Ziel-IP-Adresse, der Portnummer und anderer Informationen zum Datenverkehr.

  • QoS-Indikatoren (Quality of Service): einschließlich Verzögerung, Jitter, Paketverlustrate usw.

  • Verbindungsstatus: einschließlich Verbindungsbandbreitenauslastung, Änderungstrend der Bandbreitenauslastung usw.

  • BGP-Informationen (Border Gateway Protocol): einschließlich BGP-Routing-Tabelle, AS-Pfad (autonomes System) usw.

  • Informationen zur Netzwerksicherheit: einschließlich DDoS-Angriffe, Port-Scans, abnormaler Datenverkehr usw.

  • Leistungsindikatoren für Netzwerkgeräte: einschließlich verschiedener Hardwareindikatoren, Ressourcennutzung usw.

Das Gerät verwendet die Push-Methode, um regelmäßig und aktiv Überwachungsdaten an den Kollektor zu senden (die Genauigkeit kann den Bereich von weniger als einer Sekunde erreichen und Probleme können schnell lokalisiert werden).

Die herkömmliche SNMP-Erkennungsmethode basiert hauptsächlich auf der Routing-Engine des Netzwerkgeräts, um Informationen zu verarbeiten. Telemetrie kann sich auf die Unterstützung des Herstellers verlassen, um Code auf der ASIC-Ebene der Hardwareplatine einzubetten und Echtzeitdaten direkt von der Platine zu exportieren. Die von der Karte exportierten Daten werden mit Leitungsgeschwindigkeit gesendet, sodass sich die Routing-Engine der oberen Schicht auf die Verarbeitung von Protokollen und Routing-Berechnungen konzentrieren kann. Echtzeitdaten können maschinelles Lernen und Zweckanalysen umfassend unterstützen und sind sehr hilfreich für Anwendungen wie Automatisierung, Verkehrsoptimierung und Micro-Burst.

Telemetrie implementiert ein Abonnement und das Gerät antwortet N-mal. Es kann das Gerät ständig überwachen und wiederholte Abfragen vermeiden.

Herkömmliche SNMP-Abfragen basieren auf einer Frage und einer Antwort. Unter der Annahme von 1.000 Interaktionen innerhalb einer Minute bedeutet dies, dass SNMP 1.000 Abfrageanforderungsnachrichten analysiert hat. Das Überwachungssystem muss Sitzungsinformationen für jede Abfrageanforderung behalten, um mit den zurückgegebenen Abfrageergebnissen übereinzustimmen. ;Gleichzeitig muss das abgefragte Gerät andere Aufgaben unterbrechen, um den Abfragebefehl auszuführen. Diese Pull-basierte Abfrage wird in beide Richtungen übertragen, was nicht nur teuer ist, sondern auch eine geringe Echtzeitleistung aufweist. In großen Netzwerken stehen Geräte wie Router und Switches oft unter großem Druck und können mehrere Abfrageanfragen in kurzer Zeit nicht unterstützen. Für den Push-Modus der Telemetrie ist nur ein Abonnement erforderlich, und nachfolgende Geräte übertragen weiterhin Daten an das Überwachungssystem. Es ist nicht erforderlich, Sitzungsbeziehungen aufrechtzuerhalten, und es wird eine einmalige Übertragung erreicht. Es eignet sich sehr gut zum Sammeln von Hochgeschwindigkeitsüberwachungsdaten wie Schnittstellen Information.

Vergleich zwischen Telemetrie- und SNMP-Methoden:

Bild

Unterstützt Abtast- und Unterdrückungsfunktionen mit variabler Frequenz.

Im Allgemeinen muss der Analysator des Benutzers eine kürzere Abtastperiode einstellen, um genauere Daten für die Analyse zu erhalten. Eine kleinere Abtastperiode erzeugt jedoch eine große Menge redundanter Daten, was nicht nur viel Speicherplatz erfordert, sondern auch unpraktisch ist damit Benutzer die Daten analysieren können. Daten werden verwaltet. Wenn die Abtastung mit variabler Frequenz konfiguriert ist, passt Telemetrie den Erfassungszeitraum basierend auf voreingestellten Bedingungen (z. B. CPU-Auslastung) dynamisch an. Wenn die Überwachungsindikatoren normal sind, wird das Abtastintervall reduziert. Wenn die Überwachungsindikatoren den Schwellenwert erreichen, wird der Abtastzeitraum verkürzt wird automatisch entsprechend der Konfiguration angepasst. Melden Sie gesammelte Daten häufiger und reduzieren Sie dadurch die Datenmenge im Analysator.

Am Beispiel des Huawei NE40E-M-Routers: Wenn die aktuelle CPU-Auslastung der Hauptsteuerplatine über 90 % liegt, unterbricht Telemetry zusätzlich zu den CPU- und Speicher-Sampling-Aufgaben auch andere Sampling-Aufgaben. Zu diesem Zeitpunkt sendet Telemetrie keine erfassten Daten mehr und wechselt in den Unterdrückungsstatus. Nachdem die Belegungsrate auf den Schwellenwert gesunken ist, wird die Unterdrückung aufgehoben. Nach der Wiederaufnahme des Hochladens kann sich der Upload-Zyklus einiger Daten verlängern.

3. Funktionsprinzip der Telemetrie

So funktioniert Telemetrie:

Bild

Ein vollständiges Telemetriesystem kann in fünf Teile unterteilt werden:

Abonnieren Sie, um Daten zu sammeln

Die Methoden zum Abonnieren von Daten sind in statisches Abonnement und dynamisches Abonnement unterteilt :

Statisches Abonnement bedeutet, dass das Gerät als Client und der Collector als Server fungiert. Das Gerät initiiert aktiv eine Verbindung zum Collector, um Daten zu sammeln und zu senden. Wird hauptsächlich für Langzeitinspektionen verwendet.

Dynamisches Abonnement bedeutet, dass das Gerät als Server fungiert, der Collector als Client fungiert und eine Verbindung zum Gerät initiiert und das Gerät Daten sammelt und sendet. Wird hauptsächlich zur kurzfristigen Überwachung verwendet.

Gesammelte Daten übertragen

Telemetrie meldet in einem codierten Format gekapselte Daten an den Kollektor zum Empfang und Speichern per Daten-Push; Telemetrie-Daten-Push verfügt über zwei Methoden: gRPC-basiert und UDP-basiert.

Daten lesen

Sowohl das erkannte Gerät als auch der Collector werden über GPB in Kombination mit der .proto-Datei kodiert/dekodiert.

Nehmen Sie den gRPC-Abonnement-Push als Beispiel:
Das Gerät erfasst die verfügbaren Dateninformationen (Datenquelle) über das Yang-Modell
und übergibt sie dann Daten über GPB. Kombinieren von .proto-Dateien zur Kodierung (Datengenerierung).
Der Collector führt ein Datenabonnement (Datenabonnement) über gRPC durch.
Das Gerät überträgt die kodierten Daten an den abonnierte Sammlung über gRPC (Daten-Push)
Der Collector dekodiert dann die .proto-Datei über GPB (diese Datei muss mit der GPB-.proto-Datei konsistent sein)

Daten analysieren

Der Analysator analysiert die gesammelten Daten und sendet die Analyseergebnisse an den Controller, sodass der Controller das Netzwerk zeitnah konfigurieren und verwalten und das Netzwerk optimieren kann.

Passen Sie die Netzwerkparameter an

Der Controller liefert die Netzwerkkonfiguration, die an das Gerät angepasst werden muss. Nachdem die Konfiguration übermittelt wurde und wirksam wird, werden die neuen gesammelten Daten an den Kollektor gemeldet. Zu diesem Zeitpunkt kann der Analysator analysieren, ob der optimierte Netzwerkeffekt so ist erwartet, bis das Tuning abgeschlossen ist. Schließlich bildet der gesamte Geschäftsprozess einen geschlossenen Kreislauf.

4. Anwendungsszenarien der Telemetrie

1. Nehmen Sie als Beispiel das statische Abonnement des Huawei NE40E-Routers, sammeln Sie CPU- und Speicherinformationen, übertragen Sie sie schließlich an Prometheus und zeigen Sie sie mit Grafana an:

Netzwerkstruktur:

Bild

2. Verwenden Sie den Befehl system-view auf dem Router, um die Ansicht aufzurufen, und verwenden Sie dann display telemetry sensor-path, um die vom Gerät unterstützten Abtastpfade anzuzeigen und den Sensorpfad des entsprechenden Indikators zu bestimmen:

Unterschiedliche Sensorpfade repräsentieren unterschiedliche Indikatoren:

Bild

3. Verwenden Sie den Telemetriebefehl, um die Telemetrieansicht aufzurufen und das statische Abonnement wie folgt zu konfigurieren:

Statisches Abonnement konfigurieren:

Bild

4. Konfigurieren Sie auf der Geräteseite den Telemetrieserver. Als Dekodierungstool benötigen Sie zunächst die offiziell von Huawei bereitgestellte Protodatei. Der Link ist am Ende dieses Artikels angehängt. Verwenden Sie die Befehlszeile oder das Open-Source-Skript run_codegen.py, um Python-Code mithilfe von Protodateien zu generieren.

Die erforderlichen entsprechenden Protodateien und run_codegen-Skripte:

Bild

Huawei-devm.proto(Gerät):

Bild

Dynamisch laden, um Daten zu analysieren:

Bild

Bild

5. Servercode

from concurrent import futures
import time
import grpc
from proto_file import huawei_grpc_dialout_pb2_grpc
from proto_file import huawei_telemetry_pb2
import prometheus_client
from prometheus_client import Gauge
from prometheus_client.core import CollectorRegistry
import requests
import importlib

SERVER_ADDRESS=" "
PUSHGATEWAY_ADDRESS=" "
_ONE_DAY_IN_SECONDS = 60 * 60 * 24
registry = CollectorRegistry(auto_describe=False)
gaugeMap={}
def serve():
    # 创建一个grpc server对象

    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    # 注册huawei的telemetry数据监听服务

    huawei_grpc_dialout_pb2_grpc.add_gRPCDataserviceServicer_to_server(
        TelemetryCpuInfo(), server)
    server.add_insecure_port(SERVER_ADDRESS)
    # 启动grpc server

    server.start()
    # 死循环监听

    try:
        while True:
            print("running------")
            time.sleep(_ONE_DAY_IN_SECONDS)
    except KeyboardInterrupt:
        server.stop(0)

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass
    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError,ValueError):
        pass
    return False

def toPushgateway(labelValue,parseData,count):
    labels = ["product_name","subscription_id_str","sensor_path","node_id_str"]
    jobName = "pushgateway"
    url=PUSHGATEWAY_ADDRESS
    param=""


    for i in str(parseData).split("\n"):
        if '{' in i :
            string = "".join(i.replace('{','_').split())
            param+=string
            continue
        if ':' in i:
            save=param
            key = param+i.split(':')[0].strip()
            value = i.split(':')[1].strip()
            if is_number(value):
                key+=str(count)
                print("keys:"+key)
                if key in gaugeMap.keys():
                    g=gaugeMap.get(key)
                else:
                    g = Gauge(key,"",labels,registry=registry)
                    gaugeMap[key]=g
                g.labels(product_name=labelValue[0],
                    subscription_id_str=labelValue[1],
                    sensor_path=labelValue[2],
                    node_id_str=labelValue[3]).set(float(value))
                requests.post("%s/job/%s" %(url,jobName),
                          data=prometheus_client.generate_latest(registry))
            param=save
        continue


# 创建类继承huawei_grpc_dialout_pb2_grpc中Servicer方法

class TelemetryCpuInfo(huawei_grpc_dialout_pb2_grpc.gRPCDataserviceServicer):
    def __init__(self):
        return

    def dataPublish(self, request_iterator, context):

        for i in request_iterator:
            print('############ start ############\n')
            telemetry_data = huawei_telemetry_pb2.Telemetry.FromString(i.data)
            print(telemetry_data)
            labels = [telemetry_data.product_name,
                      telemetry_data.subscription_id_str,
                      telemetry_data.sensor_path,
                      telemetry_data.node_id_str]
            count = 0
            for row_data in telemetry_data.data_gpb.row:
                print('-----------------')
                print('The proto path is :' + telemetry_data.proto_path)
                print('-----------------')
                module_name = telemetry_data.proto_path.split('.')[0]
                root_class = telemetry_data.proto_path.split('.')[1]
                decode_module = importlib.import_module('proto_file.'+module_name + '_pb2')
                # 定义解码方法:getattr获取动态加载的模块中的属性值,调用此属性的解码方法FromString

                decode_func = getattr(decode_module, root_class).FromString
                parsedata = decode_func(row_data.content)
                print('----------- content is -----------\n')
                print(parsedata)
                print(type(parsedata))
                toPushgateway(labelValue=labels,parseData=parsedata,count=count)
                count+=1
                print('----------- done -----------------')


if __name__ == '__main__':
    serve()

6. Die laufenden Ergebnisse können die Analyse und Ausgabe von Telemetriedaten realisieren.

Erfasste Daten -1:

Bild

Erfasste Daten – 2:

Bild

Erfasste Daten-3:

Bild

7. Auf der Routerseite können Sie den Abonnementstatus über den Befehl display telemetry subscription + subscription name überprüfen.​ 

Statische Informationen zum Abonnement:

Bild

Grafana-Anzeigeschnittstelle:

Bild

5. Zusammenfassung

Als eine neue Generation der Überwachungstechnologie kann die Telemetrie-Technologie mit ihrer hohen Skalierbarkeit und hohen Echtzeitleistung eine durchgängige Visualisierung des Netzwerkverkehrs realisieren, die „Netzwerk-Blackbox“ durchbrechen und Gesamtlösungen sowie die notwendige technische Unterstützung für verfeinerte Netzwerke bereitstellen Betrieb und Wartung. , im Einklang mit den Überwachungsanforderungen großer Datennetze. Allerdings weist die Telemetrie-Technologie noch einige Einschränkungen auf, wie zum Beispiel:

  • Für den Einsatz in kleinen und mittleren Netzwerken ist es nicht geeignet, da die Verarbeitung großer Datenströme mehr Ressourcen erfordert.

  • Derzeit wird SNMP noch von vielen Arten von Netzwerkgeräten unterstützt: wie Druckern, Routern und Servern usw., und die Reichweite ist sehr groß; jedoch unterstützen viele alte Geräte und Programme im Netzwerk die Telemetrie-Technologie nicht. Aufgrund unterschiedlicher statistischer Prinzipien stimmen die Statistiken der Schnittstellentelemetrie möglicherweise nicht mit den Statistiken überein, die über Befehle, MIB und PM abgefragt werden.

  • Derzeit gibt es keinen einheitlichen Indikatorpfad und Protokollstapel zwischen mehreren Herstellern. Auf der Codierungsebene gibt es beispielsweise XML, JSON und GPB; auf der Kommunikationsebene gibt es gRPC, RestConf und Netconf.

Angesichts der umfangreichen Anforderungen an die Netzwerküberwachung mit hoher Leistung benötigen Benutzer jedoch eine neue Netzwerküberwachungsmethode. Die Telemetrietechnologie kann Benutzeranforderungen erfüllen und das intelligente Betriebs- und Wartungssystem unterstützen, um mehr Geräte zu verwalten. Überwachungsdaten haben eine höhere Präzision und mehr Echtzeit. Der Überwachungsprozess hat kaum Auswirkungen auf die Funktionen und Leistung des Geräts selbst. Er ermöglicht eine schnelle Ortung von Netzwerkproblemen und Optimierung und Anpassung der Netzwerkqualität. Es stellt die wichtigste Big-Data-Grundlage bereit, wandelt die Netzwerkqualitätsanalyse in eine Big-Data-Analyse um und unterstützt effektiv die Anforderungen an intelligenten Betrieb und Wartung. Es ist absehbar, dass in Zukunft eine Vielzahl neuer Netzwerküberwachungssysteme mit Telemetrietechnologie als Kern auftauchen werden. Ihre feine Granularität und hohe Präzision werden neue Methoden für die Überwachung in Big-Data-Netzwerkumgebungen bieten. Ideen.

Supongo que te gusta

Origin blog.csdn.net/m0_59795797/article/details/134586060
Recomendado
Clasificación