Juniper NETWERKEN- logoTelemetry yn Junos foar AI / ML Workloads
Auteur: Shalini Mukherjee

Ynlieding

Om't AI-klusterferkear ferliesleaze netwurken fereasket mei hege trochset en lege latency, is in kritysk elemint fan it AI-netwurk de kolleksje fan tafersjochgegevens. Junos Telemetry makket granulêre tafersjoch fan wichtige prestaasje-yndikatoaren mooglik, ynklusyf drompels en tellers foar oerlêstbehear en balânsjen fan ferkearslasten. gRPC-sesjes stypje de streaming fan telemetrygegevens. gRPC is in modern, iepen-boarne, hege prestaasjes ramt dat is boud op HTTP/2-ferfier. It machtigt native bidirectionele streamingmooglikheden en omfettet fleksibele oanpaste metadata yn fersykkoppen. De earste stap yn telemetry is om te witten hokker gegevens moatte wurde sammele. Wy kinne dan dizze gegevens analysearje yn ferskate formaten. As wy ienris de gegevens sammelje, is it wichtich om it te presintearjen yn in formaat dat maklik te kontrolearjen is, besluten te nimmen en de oanbeane tsjinst te ferbetterjen. Yn dit papier brûke wy in telemetrystapel besteande út Telegraf, InfluxDB, en Grafana. Dizze telemetrystapel sammelt gegevens mei in push-model. Tradysjonele pull-modellen binne boarne-yntinsyf, fereaskje manuele yntervinsje, en kinne ynformaasjegaten omfetsje yn 'e gegevens dy't se sammelje. Push-modellen oerwinne dizze beheiningen troch asynchrone gegevens te leverjen. Se ferrykje de gegevens troch brûkerfreonlik te brûken tags en nammen. As de gegevens ienris yn in mear lêsber formaat binne, bewarje wy it yn in databank en brûke se yn in ynteraktive fisualisaasje web applikaasje foar it analysearjen fan it netwurk. Stal. 1 lit ús sjen hoe't dizze stapel is ûntworpen foar effisjinte gegevenssammeling, opslach en fisualisaasje, fan netwurkapparaten dy't gegevens nei de samler drukke oant de gegevens dy't wurde werjûn op dashboards foar analyse.

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software -

TIG Stack

Wy brûkten in Ubuntu-tsjinner om alle software te ynstallearjen ynklusyf de TIG-stapel.

Telegraaf
Om gegevens te sammeljen brûke wy Telegraf op in Ubuntu-tsjinner mei 22.04.2. De Telegraf-ferzje dy't rint yn dizze demo is 1.28.5.
Telegraf is in plugin-oandreaune serveragent foar it sammeljen en rapportearjen fan metriken. It brûkt prosessor plugins om de gegevens te ferrykjen en te normalisearjen. De útfier plugins wurde brûkt om dizze gegevens te stjoeren nei ferskate gegevenswinkels. Yn dit dokumint brûke wy twa plugins: ien foar iepen konfiguraasjesensors en de oare foar Juniper native sensors.
InfluxDB
Om de gegevens op te slaan yn in tiidreeksdatabase, brûke wy InfluxDB. De útfierplugin yn Telegraf stjoert de gegevens nei InfluxDB, dy't it op in heul effisjinte manier opslacht. Wy brûke V1.8 as der gjin CLI oanwêzich is foar V2 en boppe.
Grafana
Grafana wurdt brûkt om dizze gegevens te visualisearjen. Grafana lûkt de gegevens fan InfluxDB en lit brûkers rike en ynteraktive dashboards meitsje. Hjir rinne wy ​​ferzje 10.2.2.

Konfiguraasje Op De Switch

Om dizze stapel te ymplementearjen, moatte wy earst de skeakel konfigurearje lykas werjûn yn figuer 2. Wy hawwe poarte 50051 brûkt. Elke poarte kin hjir brûkt wurde. Meld jo oan by de QFX-skeakel en foegje de folgjende konfiguraasje ta.

Juniper NETWORKS Telemetry Yn Junos foar AI ML Workloads Software - Switch

Noat: Dizze konfiguraasje is foar laboratoaren/POC's, om't it wachtwurd yn dúdlike tekst wurdt oerdroegen. Brûk SSL om dit te foarkommen.

Miljeu

Juniper NETWORKS Telemetry Yn Junos foar AI ML Workloads Software - Miljeu

Nginx
Dit is nedich as jo net by steat binne om bleatstelle de haven dêr't Grafana wurdt hosted. De folgjende stap is om nginx te ynstallearjen op 'e Ubuntu-tsjinner om te tsjinjen as in reverse proxy-agint. Sadree't nginx is ynstalleare, foegje de rigels werjûn yn figuer 4 ta oan it "standert" bestân en ferpleatse it bestân fan /etc/nginx nei /etc/nginx/sites-enabled.

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Nginx

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Nginx1

Soargje derfoar dat de brânmuorre is oanpast om folsleine tagong te jaan ta de nginx-tsjinst lykas werjûn yn figuer 5.

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Nginx2

Sadree't nginx is ynstalleare en de fereaske wizigingen binne makke, moatte wy tagong krije ta Grafana fan in web browser troch it IP-adres fan 'e Ubuntu-tsjinner te brûken wêr't alle software is ynstalleare.
D'r is in lytse glitch yn Grafana wêrmei jo it standert wachtwurd net weromsette kinne. Brûk dizze stappen as jo dit probleem tsjinkomme.
Stappen dy't moatte wurde útfierd op 'e Ubuntu-tsjinner om it wachtwurd yn Grafana yn te stellen:

  • Gean nei /var/lib/grafana/grafana.db
  • Ynstallearje sqllite3
    o sudo apt ynstallearje sqlite3
  • Rinne dit kommando op jo terminal
    o sqlite3 grafana.db
  •  Sqlite kommando prompt iepenet; útfiere de folgjende query:
    >wiskje fan brûker wêr login='admin'
  • Restart grafana en typ admin as brûkersnamme en wachtwurd. It freget om in nij wachtwurd.

Sadree't alle software is ynstallearre, meitsje it konfiguraasjebestân yn Telegraf dat sil helpe om de telemetrygegevens fan 'e skeakel te lûken en it nei InfluxDB te drukken.

Openconfig Sensor Plugin

Bewurkje op de Ubuntu-tsjinner it /etc/telegraf/telegraf.conf-bestân om alle nedige ta te foegjen plugins en sensoren. Foar de openconfig-sensors brûke wy de gNMI-plugin werjûn yn figuer 6. Foar demo-doelen, foegje de hostnamme ta as "spine1", it poartenûmer "50051" dat wurdt brûkt foar gRPC, de brûkersnamme en wachtwurd fan 'e switch, en it nûmer fan sekonden foar opnij yn gefal fan mislearring.
Foegje yn 'e abonnemintstrofe in unike namme ta, "cpu" foar dizze bepaalde sensor, it sensorpaad, en it tiidynterval foar it pakken fan dizze gegevens fan 'e skeakel. Foegje deselde plugin inputs.gnmi en inputs.gnmi.subscription ta foar alle iepen konfiguraasjesensors. (ôfbylding 6)

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Nginx3

Native Sensor Plugin

Dit is in Juniper telemetry ynterface plugin brûkt foar native sensors. Foegje yn itselde telegraf.conf-bestân de native sensor-plugin inputs.jti_openconfig_telemetry ta wêr't de fjilden hast itselde binne as openconfig. Brûk in unike klant-ID foar elke sensor; hjir, wy brûke "telegraf3". De unike namme brûkt hjir foar dizze sensor is "mem" (figuer 7).

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Nginx4

Foegje as lêste in útfierplugin outputs.influxdb ta om dizze sensorgegevens nei InfluxDB te stjoeren. Hjir wurdt de databank neamd "telegraf" mei brûkersnamme as "ynstream" en wachtwurd "influxdb" (figuer 8).

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Nginx5

Sadree't jo it bestân telegraf.conf bewurke hawwe, start de telegraftsjinst op 'e nij. Kontrolearje no yn 'e InfluxDB CLI om te soargjen dat mjittingen binne makke foar alle unike sensoren. Typ "influx" om de InfluxDB CLI yn te gean.

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Nginx6

As sjoen yn figuer. 9, fier de influxDB-prompt yn en brûk de databank "telegraf". Alle unike nammen jûn oan de sensors wurde neamd as mjittingen.
Om de útfier fan ien mjitting te sjen, gewoan om te soargjen dat it telegraf-bestân goed is en de sensor wurket, brûk it kommando "selektearje * fan cpu-limyt 1" lykas werjûn yn figuer 10.

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Nginx7

Elke kear as wizigingen makke wurde yn it telegraf.conf-bestân, soargje derfoar dat jo InfluxDB stopje, Telegraf opnij starte en dan InfluxDB begjinne.
Meld jo oan by Grafana fan 'e browser en meitsje dashboards nei't jo derfoar hawwe soarge dat de gegevens korrekt wurde sammele.
Gean nei Ferbinings> InfuxDB> Nije gegevensboarne taheakje.

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Nginx8

  1. Jou in namme oan dizze gegevensboarne. Yn dizze demo is it "test-1".
  2.  Under de HTTP-stanza, brûk de Ubuntu-tsjinner IP en 8086-poarte.
    Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Nginx9
  3. Brûk yn 'e InfluxDB-details deselde databasenamme, "telegraf", en jouwe de brûkersnamme en wachtwurd fan 'e Ubuntu-tsjinner.
  4. Klik op Bewarje en test. Soargje derfoar dat jo it berjocht "suksesfol" sjogge.
    Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Nginx10
  5. Sadree't de gegevensboarne mei súkses is tafoege, gean nei Dashboards en klikje op Nij. Lit ús in pear dashboards oanmeitsje dy't essensjeel binne foar AI / ML-workloads yn bewurkingsmodus.

Examples Of Sensor Grafiken

De folgjende binne eksamples fan guon grutte tellers dy't essinsjeel binne foar it kontrolearjen fan in AI / ML-netwurk.
Percenttage utilization foar in ingress ynterface et-0/0/0 op spine-1
Juniper NETWORKS Telemetry Yn Junos foar AI ML Workloads Software - Grafiken

  • Selektearje de gegevensboarne as test-1.
  • Selektearje yn 'e FROM seksje de mjitting as "ynterface". Dit is de unike namme dy't brûkt wurdt foar dit sensorpaad.
  • Selektearje apparaat yn 'e WHERE seksje::tag,en yn tag wearde, selektearje de hostnamme fan de switch, dat is spine1.
  • Kies yn 'e SELECT seksje de sensortûke dy't jo wolle kontrolearje; yn dit gefal kieze "fjild(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)". Klikje no yn deselde seksje op "+" en foegje dizze berekkeningswiskunde ta (/50000000000 * 100). Wy berekkenje yn prinsipe it persintaazjetage gebrûk fan in 400G ynterface.
  • Soargje derfoar dat it FORMAT "time-series" is en neam de grafyk yn 'e ALIAS-seksje.

Juniper NETWORKS Telemetry Yn Junos foar AI ML Workloads Software - Grafiken1Peak buffer besettingsgraad foar eltse wachtrige

Juniper NETWORKS Telemetry Yn Junos foar AI ML Workloads Software - Grafiken2

  • Selektearje de gegevensboarne as test-1.
  • Selektearje yn 'e FROM seksje de mjitting as "buffer."
  • Yn de seksje WHERE binne d'r trije fjilden om te foljen. Selektearje apparaat ::tag,en yn tag wearde selektearje de hostnamme fan 'e skeakel (ie spine-1); EN selektearje /cos/interfaces/interface/@name::tag en selektearje de ynterface (ie et- 0/0/0); EN selektearje de wachtrige ek, /cos/interfaces/interface/queues/queue/@queue::tag en kies it wachtrige nûmer 4.
  • Kies yn 'e SELECT seksje de sensortûke dy't jo wolle kontrolearje; yn dit gefal kieze "fjild(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy)."
  • Soargje derfoar dat it FORMAT "time-series" is en neam de grafyk yn 'e ALIAS-seksje.

Jo kinne gegevens sammelje foar meardere ynterfaces op deselde grafyk as sjoen yn figuer 17 foar et-0/0/0, et-0/0/1, et-0/0/2 ensfh.

Juniper NETWORKS Telemetry Yn Junos foar AI ML Workloads Software - Grafiken3

PFC en ECN betsjutte derivative
Juniper NETWORKS Telemetry Yn Junos foar AI ML Workloads Software - derivative

Foar it finen fan de gemiddelde derivative (it ferskil yn wearde binnen in tiidbereik), brûk de raw query modus.
Dit is de ynstreamfraach dy't wy hawwe brûkt om de gemiddelde derivative te finen tusken twa PFC-wearden op et-0/0/0 fan Spine-1 yn in sekonde.
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) FROM “ynterface” WHERE (“apparaat”::tag = 'Spine-1') EN $timeFilter GROUP BY tiid($interval)

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Lykas foar ECN

SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts”), 1s) FROM “ynterface” WHERE (“apparaat”::tag = 'Spine-1') EN $timeFilter GROUP BY tiid($interval)

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Lykas foar ECN1

Ynput boarne flaters betsjutte derivative

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Lykas foar ECN2

De rauwe query foar boarne flaters betsjutte derivative is:
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) FROM “interface” WHERE (“apparaat”::tag = 'Spine-1') EN $timeFilter GROUP BY tiid($interval)

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Lykas foar ECN3

Tail drops betsjutte derivative

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - Lykas foar ECN4

De rau query foar sturtdruppels betsjut derivative is:
SELECT derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s) FROM “buffer” WHERE (“apparaat”::tag = 'Leaf-1' EN "/cos/interfaces/interface/@name"::tag = 'et-0/0/0' EN "/cos/interfaces/interface/queues/queue/@queue"::tag = '4') EN $timeFilter GROUP BY time($__interval) fill(null)
 CPU-gebrûk

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - CPU utilisaasje

  • Selektearje de gegevensboarne as test-1.
  • Selektearje yn 'e FROM seksje de mjitting as "newcpu"
  • Yn 'e WHERE binne d'r trije fjilden om te foljen. Selektearje apparaat ::tag en yn de tag wearde selektearje de hostnamme fan de switch (ie spine-1). EN yn /components/component/properties/property/name:tag, en selektearje cpuutilization-totaal EN yn namme::tag selektearje RE0.
  • Kies yn 'e SELECT seksje de sensortûke dy't jo wolle kontrolearje. Kies yn dit gefal "fjild(steat/wearde)".

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - CPU utilization1

De rauwe query foar it finen fan de net-negative derivative fan sturtdruppels foar meardere skeakels op meardere ynterfaces yn bits/sek.
SELECT non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 FROM “buffer” WHERE (apparaat::tag =~ /^Spine-[1-2]$/) en ("/cos/interfaces/interface/@name"::tag =~ /et-0\/0\/[0-9]/ of “/cos/interfaces/interface/@name”::tag=~/et-0\/0\/1[0-5]/) EN $timeFilter GROUP BY tiid($__interval),apparaat::tag folje (nul)

Juniper NETWORKS Telemetry In Junos foar AI ML Workloads Software - CPU utilization2

Dit wiene guon fan 'e eksamples fan 'e grafiken dy't kinne wurde makke foar it kontrolearjen fan in AI / ML-netwurk.

Gearfetting

Dit papier yllustrearret de metoade foar it lûken fan telemetrygegevens en it visualisearjen troch it meitsjen fan grafiken. Dit papier sprekt spesifyk oer AI / ML-sensors, sawol native as openconfig, mar de opset kin brûkt wurde foar alle soarten sensoren. Wy hawwe ek oplossingen opnommen foar meardere problemen dy't jo miskien tsjinkomme by it meitsjen fan de opset. De stappen en útgongen ôfbylde yn dit papier binne spesifyk foar de ferzjes fan 'e earder neamde TIG-stapel. It is ûnder foarbehâld fan feroaring ôfhinklik fan 'e ferzje fan' e software, de sensoren en de Junos-ferzje.

Referinsjes

Juniper Yang Data Model Explorer foar alle sensor opsjes
https://apps.juniper.net/ydm-explorer/
Openconfig forum foar iepenkonfig sensors
https://www.openconfig.net/projects/models/

Juniper NETWORKS Telemetry Yn Junos foar AI ML Workloads Software - ikoan

Corporate en ferkeap haadkantoar
De bedriuw Juniper Networks, Inc.
1133 Ynnovaasje Way
Sunnyvale, CA 94089 Feriene Steaten
Telefoan: 888. JUNIPER (888.586.4737)
of +1.408.745.2000
Fax: +1.408.745.2100
www.juniper.net
APAC en EMEA haadkantoar
Juniper Networks International BV
Boeing Avenue 240
1119 PZ Schiphol-Rijk
Amsterdam, Nederlân
Tillefoan: +31.207.125.700
Fax: +31.207.125.701
auteursrjocht 2023 Juniper Networks. Inc. Ail rjochten foarbehâlden. Juniper Networks, it Juniper Networks-logo, Juniper, Junos en oare hannelsmerken binne registrearre hannelsmerken fan Juniper Networks. inc. en / of har filialen yn 'e Feriene Steaten en oare lannen. Oare nammen kinne hannelsmerken wêze fan har respektive eigners. Juniper Networks nimt gjin ferantwurdlikens foar eventuele unakkuracies yn dit dokumint. Juniper Networks behâldt it rjocht om te feroarjen. feroarje. oerdrage, of op oare wize feroarje dizze publikaasje sûnder notice.
Stjoer feedback nei: design-center-comments@juniper.net V1.0/240807/ejm5-telemetry-junos-ai-ml

Dokuminten / Resources

Juniper NETWORKS Telemetry Yn Junos foar AI ML Workloads Software [pdf] Brûkersgids
Telemetry In Junos for AI ML Workloads Software, Junos for AI ML Workloads Software, AI ML Workloads Software, Workloads Software, Software

Referinsjes

Lit in reaksje efter

Jo e-mailadres sil net publisearre wurde. Ferplichte fjilden binne markearre *