Juniper NETWORKS- logotypTelemetri i Junos för AI/ML-arbetsbelastningar
Författare: Shalini Mukherjee

Introduktion

Eftersom AI-klustertrafik kräver förlustfria nätverk med hög genomströmning och låg latens, är en kritisk del av AI-nätverket insamlingen av övervakningsdata. Junos Telemetry möjliggör granulär övervakning av nyckelprestandaindikatorer, inklusive trösklar och räknare för hantering av trängsel och balansering av trafikbelastning. gRPC-sessioner stöder streaming av telemetridata. gRPC är ett modernt ramverk med öppen källkod och hög prestanda som bygger på HTTP/2-transport. Det ger inbyggda dubbelriktade streamingmöjligheter och inkluderar flexibla anpassade metadata i förfrågningshuvuden. Det första steget i telemetri är att veta vilken data som ska samlas in. Vi kan sedan analysera dessa data i olika format. När vi väl samlat in data är det viktigt att presentera det i ett format som är lätt att övervaka, fatta beslut och förbättra tjänsten som erbjuds. I detta dokument använder vi en telemetristack som består av Telegraf, InfluxDB och Grafana. Denna telemetristack samlar in data med hjälp av en push-modell. Traditionella pull-modeller är resurskrävande, kräver manuella ingrepp och kan inkludera informationsluckor i den data de samlar in. Push-modeller övervinner dessa begränsningar genom att leverera data asynkront. De berikar data genom att använda användarvänlig tags och namn. När informationen är i ett mer läsbart format lagrar vi den i en databas och använder den i en interaktiv visualisering web applikation för att analysera nätverket. Figur. 1 visar oss hur denna stack är designad för effektiv datainsamling, lagring och visualisering, från nätverksenheter som skickar data till insamlaren till data som visas på instrumentpaneler för analys.

Juniper NETWORKS Telemetry In Junos för AI ML Workloads Software -

TIG Stack

Vi använde en Ubuntu-server för att installera all programvara inklusive TIG-stacken.

telegraf
För att samla in data använder vi Telegraf på en Ubuntu-server som kör 22.04.2. Telegraf-versionen som körs i denna demo är 1.28.5.
Telegraf är en plugin-driven serveragent för att samla in och rapportera mätvärden. Den använder processor plugins för att berika och normalisera data. Utgången plugins används för att skicka dessa data till olika datalager. I detta dokument använder vi två plugins: en för openconfig-sensorer och den andra för Juniper inbyggda sensorer.
InfluxDB
För att lagra data i en tidsseriedatabas använder vi InfluxDB. Utdatapluginen i Telegraf skickar data till InfluxDB, som lagrar den på ett mycket effektivt sätt. Vi använder V1.8 eftersom det inte finns någon CLI för V2 och högre.
Grafana
Grafana används för att visualisera denna data. Grafana hämtar data från InfluxDB och låter användare skapa rika och interaktiva instrumentpaneler. Här kör vi version 10.2.2.

Konfiguration på strömbrytaren

För att implementera denna stack måste vi först konfigurera switchen som visas i figur 2. Vi har använt port 50051. Vilken port som helst kan användas här. Logga in på QFX-switchen och lägg till följande konfiguration.

Juniper NETWORKS Telemetri i Junos för AI ML Workloads Software - Switch

Notera: Den här konfigurationen är för labb/POC eftersom lösenordet överförs i klartext. Använd SSL för att undvika detta.

Miljö

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Miljö

Nginx
Detta behövs om du inte kan exponera hamnen där Grafana är värd. Nästa steg är att installera nginx på Ubuntu-servern för att fungera som en omvänd proxy-agent. När nginx är installerat lägger du till raderna som visas i figur 4 till "default"-filen och flyttar filen från /etc/nginx till /etc/nginx/sites-enabled.

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Nginx

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Nginx1

Se till att brandväggen är justerad för att ge full åtkomst till nginx-tjänsten som visas i figur 5.

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Nginx2

När nginx är installerat och de nödvändiga ändringarna är gjorda bör vi kunna komma åt Grafana från en web webbläsare genom att använda IP-adressen till Ubuntu-servern där all programvara är installerad.
Det finns ett litet fel i Grafana som inte låter dig återställa standardlösenordet. Använd dessa steg om du stöter på det här problemet.
Steg som ska utföras på Ubuntu-servern för att ställa in lösenordet i Grafana:

  • Gå till /var/lib/grafana/grafana.db
  • Installera sqllite3
    o sudo apt installera sqlite3
  • Kör detta kommando på din terminal
    o sqlite3 grafana.db
  •  Sqlite kommandotolk öppnas; kör följande fråga:
    >ta bort från användare där login='admin'
  • Starta om grafana och skriv admin som användarnamn och lösenord. Den frågar efter ett nytt lösenord.

När all programvara är installerad, skapa konfigurationsfilen i Telegraf som hjälper till att dra telemetridata från switchen och skjuta den till InfluxDB.

Openconfig Sensor Plugin

På Ubuntu-servern, redigera filen /etc/telegraf/telegraf.conf för att lägga till alla nödvändiga plugins och sensorer. För openconfig-sensorerna använder vi gNMI-plugin som visas i figur 6. För demo-ändamål, lägg till värdnamnet som "spine1", portnumret "50051" som används för gRPC, användarnamnet och lösenordet för switchen och numret sekunder för återuppringning vid fel.
I prenumerationsstrofen lägger du till ett unikt namn, "cpu" för just den här sensorn, sensorvägen och tidsintervallet för att hämta dessa data från switchen. Lägg till samma plugin inputs.gnmi och inputs.gnmi.subscription för alla öppna konfigurationssensorer. (Figur 6)

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Nginx3

Native Sensor Plugin

Detta är en Juniper telemetri interface plugin som används för inbyggda sensorer. I samma telegraf.conf-fil lägger du till den inbyggda sensorplugin inputs.jti_openconfig_telemetry där fälten är nästan samma som openconfig. Använd ett unikt klient-ID för varje sensor; här använder vi "telegraf3". Det unika namnet som används här för denna sensor är "mem" (Figur 7).

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Nginx4

Lägg slutligen till en utdataplugin outputs.influxdb för att skicka denna sensordata till InfluxDB. Här heter databasen "telegraf" med användarnamn som "influx" och lösenordet "influxdb" (Figur 8).

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Nginx5

När du har redigerat telegraf.conf-filen, starta om telegraftjänsten. Kontrollera nu i InfluxDB CLI för att se om mätningar skapas för alla unika sensorer. Skriv "influx" för att gå in i InfluxDB CLI.

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Nginx6

Som ses i figur. 9, skriv in influxDB-prompten och använd databasen "telegraf". Alla unika namn som ges till sensorerna listas som mätningar.
För att se resultatet av en mätning, bara för att se till att telegraffilen är korrekt och att sensorn fungerar, använd kommandot "välj * från cpu-gräns 1" som visas i figur 10.

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Nginx7

Varje gång ändringar görs i telegraf.conf-filen, se till att stoppa InfluxDB, starta om Telegraf och starta sedan InfluxDB.
Logga in på Grafana från webbläsaren och skapa instrumentpaneler efter att ha säkerställt att data samlas in korrekt.
Gå till Anslutningar > InfuxDB > Lägg till ny datakälla.

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Nginx8

  1. Ge denna datakälla ett namn. I denna demo är det "test-1".
  2.  Under HTTP-strofen, använd Ubuntu-serverns IP och 8086-port.
    Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Nginx9
  3. I InfluxDB-informationen, använd samma databasnamn, "telegraf", och ange användarnamnet och lösenordet för Ubuntu-servern.
  4. Klicka på Spara och testa. Se till att du ser meddelandet "lyckat".
    Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Nginx10
  5. När datakällan har lagts till går du till Dashboards och klickar på Ny. Låt oss skapa några instrumentpaneler som är viktiga för AI/ML-arbetsbelastningar i redigeringsläge.

Examples Av sensorgrafer

Följande är exampfiler av några större räknare som är nödvändiga för att övervaka ett AI/ML-nätverk.
Procenttage användning för ett ingångsgränssnitt et-0/0/0 på spine-1
Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Grafer

  • Välj datakällan som test-1.
  • I avsnittet FRÅN väljer du måttet som "gränssnitt". Detta är det unika namnet som används för denna sensorväg.
  • I avsnittet WHERE väljer du enhet::tag, och i tag värde, välj värdnamnet för switchen, det vill säga spine1.
  • I SELECT-sektionen väljer du den sensorgren som du vill övervaka; i det här fallet väljer du "field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)". Klicka nu på "+" i samma avsnitt och lägg till den här beräkningsmatematiken (/50000000000 * 100). Vi beräknar i princip procententage användning av ett 400G-gränssnitt.
  • Se till att FORMAT är "tidsserier" och namnge grafen i ALIAS-sektionen.

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Graphs1Maximal buffertbeläggning för alla köer

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Graphs2

  • Välj datakällan som test-1.
  • I avsnittet FRÅN väljer du måttet som "buffert".
  • I avsnittet WHERE finns det tre fält att fylla i. Välj enhet::tag, och i tag värde välj värdnamnet för switchen (dvs. spine-1); OCH välj /cos/interfaces/interface/@name::tag och välj gränssnittet (dvs. et- 0/0/0); OCH välj kön också, /cos/interfaces/interface/queues/queue/@queue::tag och välj könummer 4.
  • I SELECT-sektionen väljer du den sensorgren som du vill övervaka; i det här fallet väljer du "field(/cos/interfaces/interface/queues/queue/PeakBuerOccupancy)."
  • Se till att FORMAT är "tidsserier" och namnge grafen i ALIAS-sektionen.

Du kan sammanställa data för flera gränssnitt på samma graf som ses i figur 17 för et-0/0/0, et-0/0/1, et-0/0/2 etc.

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - Graphs3

PFC och ECN betyder derivat
Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - derivat

För att hitta medelderivatan (skillnaden i värde inom ett tidsintervall), använd det råa frågeläget.
Detta är influxfrågan som vi har använt för att hitta medelderivatan mellan två PFC-värden på et-0/0/0 av Spine-1 på en sekund.
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') OCH $timeFilter GROUP EFTER tid($interval)

Juniper NETWORKS Telemetry In Junos för AI ML Workloads Software - Likadant för ECN

SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts”), 1s) FRÅN “gränssnitt” WHERE (“enhet”::tag = 'Spine-1') OCH $timeFilter GROUP EFTER tid($interval)

Juniper NETWORKS Telemetry In Junos för AI ML Workloads Software - liknande för ECN1

Indataresursfel betyder derivata

Juniper NETWORKS Telemetry In Junos för AI ML Workloads Software - liknande för ECN2

Den råa frågan för resursfel betyder derivata är:
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') OCH $timeFilter GROUP EFTER tid($interval)

Juniper NETWORKS Telemetry In Junos för AI ML Workloads Software - liknande för ECN3

Svansdroppar betyder derivat

Juniper NETWORKS Telemetry In Junos för AI ML Workloads Software - liknande för ECN4

Den råa frågan för tail drops-medelderivat är:
SELECT derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s) FROM “buffer” WHERE (“enhet”::tag = 'Leaf-1' OCH "/cos/interfaces/interface/@name"::tag = 'et-0/0/0' OCH "/cos/interfaces/interface/queues/queue/@queue"::tag = '4') OCH $timeFilter GROUP BY time($__interval) fill(null)
 CPU-användning

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - CPU-användning

  • Välj datakällan som test-1.
  • I FRÅN-sektionen väljer du måttet som "newcpu"
  • I WHERE finns det tre fält att fylla i. Välj enhet::tag och i tag värde välj värdnamnet för switchen (dvs. spine-1). OCH i /components/component/properties/property/name:tag, och välj cpuutilization-total AND i namn::tag välj RE0.
  • I SELECT-sektionen väljer du den sensorgren som du vill övervaka. I det här fallet väljer du "fält(tillstånd/värde)".

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - CPU-användning1

Den råa frågan för att hitta den icke-negativa derivatan av tail drops för flera switchar på flera gränssnitt i bitar/sek.
SELECT non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 FROM “buffer” WHERE (enhet::tag =~ /^Spine-[1-2]$/) och ("/cos/interfaces/interface/@name"::tag =~ /et-0\/0\/[0-9]/ eller “/cos/interfaces/interface/@name”::tag=~/et-0\/0\/1[0-5]/) OCH $timeFilter GRUPPER EFTER tid($__interval),device::tag fyll (null)

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software - CPU-användning2

Dessa var några av exampbilder av graferna som kan skapas för övervakning av ett AI/ML-nätverk.

Sammanfattning

Detta dokument illustrerar metoden för att dra telemetridata och visualisera den genom att skapa grafer. Det här dokumentet talar specifikt om AI/ML-sensorer, både inbyggda och öppna, men inställningen kan användas för alla typer av sensorer. Vi har också inkluderat lösningar för flera problem som du kan möta när du skapar installationen. Stegen och utdata som avbildas i detta dokument är specifika för versionerna av TIG-stacken som nämnts tidigare. Det kan komma att ändras beroende på versionen av programvaran, sensorerna och Junos-versionen.

Referenser

Juniper Yang Data Model Explorer för alla sensoralternativ
https://apps.juniper.net/ydm-explorer/
Openconfig-forum för openconfig-sensorer
https://www.openconfig.net/projects/models/

Juniper NETWORKS Telemetry In Junos för AI ML Workloads Software - ikon

Företags- och försäljningshuvudkontor
Juniper Networks, Inc.
1133 Innovation Way
Sunnyvale, CA 94089 USA
Telefon: 888. JUNIPER (888.586.4737)
eller +1.408.745.2000
Fax: +1.408.745.2100
www.juniper.net
APAC och EMEA huvudkontor
Juniper Networks International BV
Boeing Avenue 240
1119 PZ Schiphol-Rijk
Amsterdam, Nederländerna
Telefon: +31.207.125.700
Fax: +31.207.125.701
Copyright 2023 Juniper Networks. Inc. Alla rättigheter förbehålls. Juniper Networks, Juniper Networks logotyp, Juniper, Junos och andra varumärken är registrerade varumärken som tillhör Juniper Networks. inkl. och/eller dess dotterbolag i USA och andra länder. Andra namn kan vara varumärken som tillhör sina respektive ägare. Juniper Networks tar inget ansvar för eventuella felaktigheter i detta dokument. Juniper Networks förbehåller sig rätten att ändra. ändra. överföra eller på annat sätt revidera denna publikation utan föregående meddelande.
Skicka feedback till: design-center-comments@juniper.net V1.0/240807/ejm5-telemetry-junos-ai-ml

Dokument/resurser

Juniper NETWORKS Telemetri In Junos för AI ML Workloads Software [pdf] Användarhandbok
Telemetri i Junos for AI ML Workloads Software, Junos for AI ML Workloads Software, AI ML Workloads Software, Workloads Software, Software

Referenser

Lämna en kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade *