Telemetrie in Junos vir AI/ML-werkladings
Skrywer: Shalini Mukherjee
Inleiding
Aangesien KI-klusterverkeer verlieslose netwerke met hoë deurset en lae latensie vereis, is 'n kritieke element van die KI-netwerk die versameling van moniteringsdata. Junos Telemetry maak korrelmonitering van sleutelprestasie-aanwysers moontlik, insluitend drempels en tellers vir opeenhopingsbestuur en verkeerslasbalansering. gRPC-sessies ondersteun die stroom van telemetriedata. gRPC is 'n moderne, oopbron, hoë werkverrigting-raamwerk wat gebou is op HTTP/2-vervoer. Dit bemagtig inheemse tweerigtingstroomvermoëns en sluit buigsame pasgemaakte metadata in versoekopskrifte in. Die eerste stap in telemetrie is om te weet watter data ingesamel moet word. Ons kan dan hierdie data in verskeie formate ontleed. Sodra ons die data ingesamel het, is dit belangrik om dit in 'n formaat aan te bied wat maklik is om te monitor, besluite te neem en die diens wat aangebied word, te verbeter. In hierdie vraestel gebruik ons 'n telemetriestapel wat bestaan uit Telegraf, InfluxDB en Grafana. Hierdie telemetriestapel versamel data met behulp van 'n stootmodel. Tradisionele trekmodelle is hulpbron-intensief, vereis handmatige ingryping, en kan inligtinggapings insluit in die data wat hulle versamel. Stootmodelle oorkom hierdie beperkings deur data asynchronies te lewer. Hulle verryk die data deur gebruikersvriendelik te gebruik tags en name. Sodra die data in 'n meer leesbare formaat is, stoor ons dit in 'n databasis en gebruik dit in 'n interaktiewe visualisering web aansoek om die netwerk te ontleed. Figuur. 1 wys ons hoe hierdie stapel ontwerp is vir doeltreffende data-insameling, berging en visualisering, van netwerktoestelle wat data na die versamelaar stoot tot die data wat op dashboards vir ontleding vertoon word.
TIG-stapel
Ons het 'n Ubuntu-bediener gebruik om al die sagteware, insluitend die TIG-stapel, te installeer.
Telegraaf
Om data in te samel, gebruik ons Telegraf op 'n Ubuntu-bediener met 22.04.2. Die Telegraf-weergawe wat in hierdie demo loop, is 1.28.5.
Telegraf is 'n plugin-gedrewe bedieneragent vir die insameling en verslagdoening van statistieke. Dit gebruik verwerker plugins om die data te verryk en te normaliseer. Die uitset plugins word gebruik om hierdie data na verskeie datawinkels te stuur. In hierdie dokument gebruik ons twee plugins: een vir oopkonfigurasie-sensors en die ander vir Juniper-inheemse sensors.
InvloeiDB
Om die data in 'n tydreeksdatabasis te stoor, gebruik ons InfluxDB. Die uitvoerinprop in Telegraf stuur die data na InfluxDB, wat dit op 'n hoogs doeltreffende manier stoor. Ons gebruik V1.8 aangesien daar geen CLI teenwoordig is vir V2 en hoër nie.
Grafana
Grafana word gebruik om hierdie data te visualiseer. Grafana haal die data uit InfluxDB en laat gebruikers toe om ryk en interaktiewe kontroleskerms te skep. Hier loop ons weergawe 10.2.2.
Konfigurasie op die skakelaar
Om hierdie stapel te implementeer, moet ons eers die skakelaar konfigureer soos in Figuur 2 getoon. Ons het poort 50051 gebruik. Enige poort kan hier gebruik word. Meld aan by die QFX-skakelaar en voeg die volgende konfigurasie by.
Let wel: Hierdie konfigurasie is vir laboratoriums/POC's aangesien die wagwoord in duidelike teks versend word. Gebruik SSL om dit te vermy.
Omgewing
Nginx
Dit is nodig as jy nie die hawe waarop Grafana gehuisves word, kan blootstel nie. Die volgende stap is om nginx op die Ubuntu-bediener te installeer om as 'n omgekeerde instaanbediener te dien. Sodra nginx geïnstalleer is, voeg die lyne wat in Figuur 4 gewys word by die "verstek"-lêer en skuif die lêer van /etc/nginx na /etc/nginx/sites-enabled.
Maak seker dat die brandmuur aangepas is om volle toegang tot die nginx-diens te gee soos in Figuur 5 getoon.
Sodra nginx geïnstalleer is en die vereiste veranderinge aangebring is, behoort ons toegang tot Grafana te kan verkry vanaf 'n web blaaier deur die IP-adres van die Ubuntu-bediener te gebruik waar al die sagteware geïnstalleer is.
Daar is 'n klein fout in Grafana wat jou nie toelaat om die verstekwagwoord terug te stel nie. Gebruik hierdie stappe as jy hierdie probleem ondervind.
Stappe wat op die Ubuntu-bediener uitgevoer moet word om die wagwoord in Grafana in te stel:
- Gaan na /var/lib/grafana/grafana.db
- Installeer sqllite3
o sudo apt installeer sqlite3 - Voer hierdie opdrag op jou terminale uit
o sqlite3 grafana.db - Sqlite-opdragprompt word oopgemaak; voer die volgende navraag uit:
>vee uit van gebruiker waar login='admin' - Herbegin grafana en tik admin as gebruikersnaam en wagwoord. Dit vra vir 'n nuwe wagwoord.
Sodra al die sagteware geïnstalleer is, skep die konfigurasielêer in Telegraf wat sal help om die telemetriedata van die skakelaar af te trek en dit na InfluxDB te druk.
Openconfig Sensor-inprop
Op die Ubuntu-bediener, wysig die /etc/telegraf/telegraf.conf-lêer om al die vereiste by te voeg plugins en sensors. Vir die oopkonfig-sensors gebruik ons die gNMI-inprop wat in Figuur 6 getoon word. Vir demonstrasiedoeleindes, voeg die gasheernaam by as “spine1”, die poortnommer “50051” wat vir gRPC gebruik word, die gebruikersnaam en wagwoord van die skakelaar, en die nommer sekondes vir herbel in geval van mislukking.
Voeg in die intekeningstrofe 'n unieke naam, "cpu" vir hierdie spesifieke sensor, die sensorpad en die tydinterval vir die gryp van hierdie data van die skakelaar by. Voeg dieselfde plugin inputs.gnmi en inputs.gnmi.subscription by vir al die oop konfigurasiesensors. (Figuur 6)
Inheemse sensor-inprop
Dit is 'n Juniper-telemetrie-koppelvlak-inprop wat vir inheemse sensors gebruik word. In dieselfde telegraf.conf-lêer, voeg die inheemse sensor-inpropinvoere.jti_openconfig_telemetry by waar die velde amper dieselfde is as openconfig. Gebruik 'n unieke kliënt-ID vir elke sensor; hier gebruik ons "telegraf3". Die unieke naam wat hier vir hierdie sensor gebruik word, is "mem" (Figuur 7).
Laastens, voeg 'n uitvoerinprop outputs.influxdb by om hierdie sensordata na InfluxDB te stuur. Hier word die databasis “telegraf” genoem met gebruikersnaam as “influx” en wagwoord “influxdb” (Figuur 8).
Sodra jy die telegraf.conf-lêer geredigeer het, herbegin die telegraf-diens. Kyk nou na die InfluxDB CLI om seker te maak of metings vir al die unieke sensors geskep is. Tik “influx” om die InfluxDB CLI in te voer.
Soos gesien in figuur. 9, voer die influxDB-prompt in en gebruik die databasis “telegraf”. Al die unieke name wat aan die sensors gegee word, word as metings gelys.
Om die uitset van enige meting te sien, net om seker te maak dat die telegraf-lêer korrek is en die sensor werk, gebruik die opdrag "kies * vanaf cpu-limiet 1" soos in Figuur 10 getoon.
Elke keer as veranderinge aan die telegraf.conf-lêer gemaak word, maak seker dat jy InfluxDB stop, Telegraf herbegin en dan InfluxDB begin.
Meld aan by Grafana vanaf die blaaier en skep dashboards nadat jy seker gemaak het dat die data korrek ingesamel word.
Gaan na Connections > InfuxDB > Voeg nuwe databron by.
- Gee 'n naam aan hierdie databron. In hierdie demo is dit "toets-1".
- Onder die HTTP-strofe, gebruik die Ubuntu-bediener IP en 8086-poort.
- In die InfluxDB-besonderhede, gebruik dieselfde databasisnaam, "telegraf", en verskaf die gebruikersnaam en wagwoord van die Ubuntu-bediener.
- Klik op Stoor en toets. Maak seker dat jy die boodskap "suksesvol" sien.
- Sodra die databron suksesvol bygevoeg is, gaan na Dashboards en klik Nuwe. Kom ons skep 'n paar dashboards wat noodsaaklik is vir AI/ML-werkladings in redigeermodus.
Examples Van Sensor Grafieke
Die volgende is examples van sommige groot tellers wat noodsaaklik is vir die monitering van 'n KI/ML-netwerk.
Percenttage gebruik vir 'n ingangskoppelvlak et-0/0/0 op ruggraat-1
- Kies die databron as toets-1.
- In die VANAF-afdeling, kies die meting as "koppelvlak". Dit is die unieke naam wat vir hierdie sensorpad gebruik word.
- In die WAAR-afdeling, kies toestel::tag, en in die tag waarde, kies die gasheernaam van die skakelaar, dit wil sê, ruggraat1.
- In die KIES-afdeling, kies die sensortak wat jy wil monitor; kies in hierdie geval "veld(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)". Klik nou in dieselfde afdeling op “+” en voeg hierdie berekeningswiskunde by (/50000000000 * 100). Ons bereken basies die persentasietage gebruik van 'n 400G-koppelvlak.
- Maak seker dat die FORMAAT "tydreekse" is en noem die grafiek in die ALIAS-afdeling.
Piek bufferbesetting vir enige tou
- Kies die databron as toets-1.
- In die VANAF-afdeling, kies die meting as "buffer".
- In die WAAR-afdeling is daar drie velde om in te vul. Kies toestel::tag, en in die tag waarde kies die gasheernaam van die skakelaar (dws ruggraat-1); EN kies /cos/interfaces/interface/@name::tag en kies die koppelvlak (dws et- 0/0/0); EN kies ook die tou, /cos/interfaces/interface/queues/queue/@queue::tag en kies die tou nommer 4.
- In die KIES-afdeling, kies die sensortak wat jy wil monitor; kies in hierdie geval "veld(/cos/interfaces/interface/queues/queue/PeakBuerOccupancy)."
- Maak seker dat die FORMAAT "tydreekse" is en noem die grafiek in die ALIAS-afdeling.
Jy kan data vir veelvuldige koppelvlakke op dieselfde grafiek versamel soos gesien in Figuur 17 vir et-0/0/0, et-0/0/1, et-0/0/2 ens.
PFC en ECN beteken afgeleide
Om die gemiddelde afgeleide (die verskil in waarde binne 'n tydreeks) te vind, gebruik die rou navraagmodus.
Dit is die invloeinavraag wat ons gebruik het om die gemiddelde afgeleide tussen twee PFC-waardes op et-0/0/0 van Spine-1 in 'n sekonde te vind.
KIES afgeleide (gemiddeld(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) VANAF “koppelvlak” WAAR (“toestel”::tag = 'Spine-1') EN $timeFilter GROUP BY time($interval)
KIES afgeleide(gemiddeld(“/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts”), 1s) VANAF “koppelvlak” WAAR (“toestel”::tag = 'Spine-1') EN $timeFilter GROUP BY time($interval)
Insethulpbronfoute beteken afgeleide
Die rou navraag vir hulpbronfoute beteken afgeleide is:
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) VANAF “koppelvlak” WAAR (“device”::tag = 'Spine-1') EN $timeFilter GROUP BY time($interval)
Stertdruppels beteken afgeleide
Die rou navraag vir stertdruppels beteken afgeleide is:
SELECT derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s) FROM “buffer” WHERE (“device”::tag = 'Blaar-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(nul)
SVE gebruik
- Kies die databron as toets-1.
- In die FROM-afdeling, kies die meting as "newcpu"
- In die WAAR is daar drie velde om te vul. Kies toestel::tag en in die tag waarde kies die gasheernaam van die skakelaar (dws ruggraat-1). EN in /components/component/properties/property/name:tag, en kies cpuutilization-totaal EN in naam::tag kies RE0.
- In die KIES-afdeling, kies die sensortak wat jy wil monitor. Kies in hierdie geval "veld(toestand/waarde)".
Die rou navraag vir die vind van die nie-negatiewe afgeleide van stertval vir veelvuldige skakelaars op verskeie koppelvlakke in bisse/sek.
SELECT non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 VANAF “buffer” WAAR (toestel::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 GROEP VIR tyd($__interval),toestel::tag vul (nul)
Dit was van die oudsamples van die grafieke wat geskep kan word vir die monitering van 'n KI/ML-netwerk.
Opsomming
Hierdie vraestel illustreer die metode om telemetriedata te trek en dit te visualiseer deur grafieke te skep. Hierdie vraestel praat spesifiek oor KI/ML-sensors, beide inheems en oopkonfigurasie, maar die opstelling kan vir alle soorte sensors gebruik word. Ons het ook oplossings ingesluit vir verskeie probleme waarmee u te kampe kan hê tydens die skep van die opstelling. Die stappe en uitsette wat in hierdie vraestel uitgebeeld word, is spesifiek vir die weergawes van die TIG-stapel wat vroeër genoem is. Dit is onderhewig aan verandering, afhangende van die weergawe van die sagteware, die sensors en die Junos-weergawe.
Verwysings
Juniper Yang Data Model Explorer vir alle sensoropsies
https://apps.juniper.net/ydm-explorer/
Openconfig-forum vir oopkonfig-sensors
https://www.openconfig.net/projects/models/
Korporatiewe en verkoopshoofkwartier
Juniper Networks, Inc.
1133 Innovation Way
Sunnyvale, CA 94089, Verenigde State van Amerika
Foon: 888. JUNIPER (888.586.4737)
of +1.408.745.2000
Faks: +1.408.745.2100
www.juniper.net
APAC en EMEA Hoofkwartier
Juniper Networks International BV
Boeinglaan 240
1119 PZ Schiphol-Rijk
Amsterdam, Nederland
Foon: +31.207.125.700
Faks: +31.207.125.701
Kopiereg 2023 Juniper Networks. Inc. Alle regte voorbehou. Juniper Networks, die Juniper Networks-logo, Juniper, Junos en ander handelsmerke is geregistreerde handelsmerke van Juniper Networks. inc. en/of sy affiliasies in die Verenigde State en ander lande. Ander name kan handelsmerke van hul onderskeie eienaars wees. Juniper Networks aanvaar geen verantwoordelikheid vir enige onakkuraathede in hierdie dokument nie. Juniper Networks behou die reg voor om te verander. wysig. oordra, of andersins hierdie publikasie sonder kennisgewing hersien.
Stuur terugvoer na: design-center-comments@juniper.net V1.0/240807/ejm5-telemetrie-junos-ai-ml
Dokumente / Hulpbronne
![]() |
Juniper NETWERKE Telemetrie In Junos vir AI ML Werkladings sagteware [pdf] Gebruikersgids Telemetrie in Junos vir AI ML-werkladingssagteware, Junos vir AI ML-werkladingssagteware, AI ML-werkladingssagteware, Werkladingssagteware, Sagteware |