Telemetrija v Junosu za delovne obremenitve AI/ML
Avtor: Shalini Mukherjee
Uvod
Ker promet v gruči AI zahteva omrežja brez izgub z visoko prepustnostjo in nizko zakasnitvijo, je kritični element omrežja AI zbiranje podatkov o spremljanju. Junos Telemetry omogoča podrobno spremljanje ključnih indikatorjev uspešnosti, vključno s pragovi in števci za upravljanje zastojev in uravnoteženje prometne obremenitve. Seje gRPC podpirajo pretakanje telemetričnih podatkov. gRPC je sodoben, odprtokoden, visoko zmogljiv okvir, ki je zgrajen na transportu HTTP/2. Omogoča izvorne zmožnosti dvosmernega pretakanja in vključuje prilagodljive metapodatke po meri v glavah zahtev. Začetni korak pri telemetriji je vedeti, katere podatke je treba zbrati. Te podatke lahko nato analiziramo v različnih oblikah. Ko zberemo podatke, je pomembno, da jih predstavimo v obliki, ki jo je enostavno spremljati, sprejemati odločitve in izboljšati ponujeno storitev. V tem prispevku uporabljamo telemetrični sklad, ki ga sestavljajo Telegraf, InfluxDB in Grafana. Ta telemetrični sklad zbira podatke s potisnim modelom. Tradicionalni modeli vleka zahtevajo veliko virov, zahtevajo ročno posredovanje in lahko vključujejo informacijske vrzeli v podatkih, ki jih zbirajo. Potisni modeli premagajo te omejitve z asinhrono dostavo podatkov. Podatke obogatijo z uporabniku prijazno uporabo tags in imena. Ko so podatki v bolj berljivi obliki, jih shranimo v bazo podatkov in uporabimo v interaktivni vizualizaciji web aplikacija za analizo omrežja. Slika. 1 nam prikazuje, kako je ta sklad zasnovan za učinkovito zbiranje, shranjevanje in vizualizacijo podatkov, od omrežnih naprav, ki prenašajo podatke v zbiralnik, do podatkov, ki so prikazani na nadzornih ploščah za analizo.
TIG dimnik
Za namestitev vse programske opreme, vključno s skladom TIG, smo uporabili strežnik Ubuntu.
telegraf
Za zbiranje podatkov uporabljamo Telegraf na strežniku Ubuntu z različico 22.04.2. Različica Telegrafa, ki se izvaja v tej predstavitvi, je 1.28.5.
Telegraf je strežniški agent, ki ga poganja vtičnik, za zbiranje in poročanje meritev. Uporablja procesor plugins za obogatitev in normalizacijo podatkov. Izhod plugins se uporabljajo za pošiljanje teh podatkov v različne shrambe podatkov. V tem dokumentu uporabljamo dva plugins: eno za senzorje openconfig in drugo za izvorne senzorje Juniper.
InfluxDB
Za shranjevanje podatkov v bazo podatkov časovnih vrst uporabljamo InfluxDB. Izhodni vtičnik v Telegrafu pošlje podatke v InfluxDB, ki jih shrani na zelo učinkovit način. Uporabljamo V1.8, ker za V2 in novejše ni CLI.
Grafana
Grafana se uporablja za vizualizacijo teh podatkov. Grafana črpa podatke iz InfluxDB in uporabnikom omogoča ustvarjanje bogatih in interaktivnih nadzornih plošč. Tukaj uporabljamo različico 10.2.2.
Konfiguracija na stikalu
Za izvedbo tega sklada moramo najprej konfigurirati stikalo, kot je prikazano na sliki 2. Uporabili smo vrata 50051. Tukaj lahko uporabite katera koli vrata. Prijavite se v stikalo QFX in dodajte naslednjo konfiguracijo.
Opomba: Ta konfiguracija je za laboratorije/POC, saj se geslo prenaša v čistem besedilu. Uporabite SSL, da se temu izognete.
okolje
Nginx
To je potrebno, če ne morete razkriti vrat, na katerih gostuje Grafana. Naslednji korak je namestitev nginxa na strežnik Ubuntu, ki bo služil kot povratni agent proxy. Ko je nginx nameščen, dodajte vrstice, prikazane na sliki 4, v »privzeto« datoteko in premaknite datoteko iz /etc/nginx v /etc/nginx/sites-enabled.
Prepričajte se, da je požarni zid nastavljen tako, da omogoča popoln dostop do storitve nginx, kot je prikazano na sliki 5.
Ko je nginx nameščen in so opravljene zahtevane spremembe, bi morali imeti možnost dostopa do Grafane iz a web brskalnik z uporabo naslova IP strežnika Ubuntu, kjer je nameščena vsa programska oprema.
V Grafani je majhna napaka, ki vam ne omogoča ponastavitve privzetega gesla. Če naletite na to težavo, uporabite te korake.
Koraki, ki jih je treba izvesti na strežniku Ubuntu za nastavitev gesla v Grafani:
- Pojdite na /var/lib/grafana/grafana.db
- Namestite sqllite3
o sudo apt namestite sqlite3 - Zaženite ta ukaz na svojem terminalu
o sqlite3 grafana.db - Odpre se ukazni poziv Sqlite; zaženite naslednjo poizvedbo:
>izbriši od uporabnika, kjer je prijava='admin' - Znova zaženite grafano in vnesite admin kot uporabniško ime in geslo. Zahteva novo geslo.
Ko je vsa programska oprema nameščena, ustvarite konfiguracijsko datoteko v Telegrafu, ki bo pomagala pridobiti telemetrične podatke iz stikala in jih potisniti v InfluxDB.
Senzorski vtičnik Openconfig
Na strežniku Ubuntu uredite datoteko /etc/telegraf/telegraf.conf, da dodate vse zahtevane plugins in senzorji. Za senzorje openconfig uporabljamo vtičnik gNMI, prikazan na sliki 6. Za namene predstavitve dodajte ime gostitelja kot »spine1«, številko vrat »50051«, ki se uporablja za gRPC, uporabniško ime in geslo stikala ter številko sekund za ponovno klicanje v primeru okvare.
V naročniško kitico dodajte edinstveno ime, »cpu« za ta določen senzor, pot senzorja in časovni interval za zajemanje teh podatkov iz stikala. Dodajte isti vtičnik inputs.gnmi in inputs.gnmi.subscription za vse senzorje odprte konfiguracije. (slika 6)
Native Sensor Plugin
To je vtičnik vmesnika za telemetrijo Juniper, ki se uporablja za izvorne senzorje. V isto datoteko telegraf.conf dodajte izvorni senzorski vtičnik inputs.jti_openconfig_telemetry, kjer so polja skoraj enaka kot pri openconfig. Uporabite edinstven ID odjemalca za vsak senzor; tukaj uporabljamo »telegraf3«. Edinstveno ime, uporabljeno tukaj za ta senzor, je »mem« (slika 7).
Nazadnje dodajte izhodni vtičnik outputs.influxdb za pošiljanje teh podatkov senzorja v InfluxDB. Tu je zbirka podatkov poimenovana »telegraf« z uporabniškim imenom »inux« in geslom »inuxdb« (slika 8).
Ko uredite datoteko telegraf.conf, znova zaženite storitev telegraf. Zdaj preverite v InfluxDB CLI, da se prepričate, ali so meritve ustvarjene za vse edinstvene senzorje. Vnesite "influx", da vstopite v InfluxDB CLI.
Kot je razvidno iz slike. 9, vnesite poziv influxDB in uporabite bazo podatkov »telegraf«. Vsa edinstvena imena senzorjev so navedena kot meritve.
Če si želite ogledati izhod katere koli meritve in se prepričati, da je telegrafska datoteka pravilna in da senzor deluje, uporabite ukaz »select * from cpu limit 1«, kot je prikazano na sliki 10.
Vsakič, ko se spremeni datoteka telegraf.conf, se prepričajte, da ste zaustavili InfluxDB, znova zaženite Telegraf in nato zaženite InfluxDB.
Prijavite se v Grafano iz brskalnika in ustvarite nadzorne plošče, potem ko se prepričate, da se podatki pravilno zbirajo.
Pojdite na Povezave > InfuxDB > Dodaj nov vir podatkov.
- Poimenujte ta vir podatkov. V tej predstavitvi je "test-1".
- Pod kitico HTTP uporabite IP strežnika Ubuntu in vrata 8086.
- V podrobnostih InfluxDB uporabite isto ime baze podatkov, »telegraf«, ter navedite uporabniško ime in geslo strežnika Ubuntu.
- Kliknite Shrani in preizkusi. Prepričajte se, da vidite sporočilo »uspešno«.
- Ko je vir podatkov uspešno dodan, pojdite na Nadzorne plošče in kliknite Novo. Ustvarimo nekaj nadzornih plošč, ki so bistvenega pomena za delovne obremenitve AI/ML v načinu urejevalnika.
Examples senzorskih grafov
Sledijo prampnekaj glavnih števcev, ki so bistveni za spremljanje omrežja AI/ML.
procentovtagUporaba za vhodni vmesnik et-0/0/0 na spine-1
- Izberite vir podatkov kot test-1.
- V razdelku FROM izberite meritev kot »interface«. To je edinstveno ime, ki se uporablja za to pot senzorja.
- V razdelku KJE izberite napravo::tag, in v tag izberite ime gostitelja stikala, to je spine1.
- V razdelku IZBERI izberite vejo senzorja, ki jo želite spremljati; v tem primeru izberite »field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)«. Zdaj v istem razdelku kliknite »+« in dodajte to matematiko za izračun (/50000000000 * 100). V bistvu računamo procentetage uporaba vmesnika 400G.
- Prepričajte se, da je FORMAT »time-series« in poimenujte graf v razdelku ALIAS.
Najvišja zasedenost medpomnilnika za katero koli čakalno vrsto
- Izberite vir podatkov kot test-1.
- V razdelku FROM izberite meritev kot »buer«.
- V razdelku KJE morate izpolniti tri polja. Izberite napravo::tag, in v tag vrednost izberite ime gostitelja stikala (tj. spine-1); IN izberite /cos/interfaces/interface/@name::tag in izberite vmesnik (tj. et-0/0/0); IN izberite tudi čakalno vrsto, /cos/interfaces/interface/queues/queue/@queue::tag in izberite čakalno vrsto številka 4.
- V razdelku IZBERI izberite vejo senzorja, ki jo želite spremljati; v tem primeru izberite »field(/cos/interfaces/interface/queues/queue/PeakBuerOccupancy).«
- Prepričajte se, da je FORMAT »time-series« in poimenujte graf v razdelku ALIAS.
Podatke za več vmesnikov lahko primerjate na istem grafu, kot je prikazano na sliki 17 za et-0/0/0, et-0/0/1, et-0/0/2 itd.
PFC in ECN izpeljanka povprečja
Za iskanje srednjega odvoda (razlike v vrednosti znotraj časovnega razpona) uporabite neobdelani način poizvedbe.
To je poizvedba o vtoku, ki smo jo uporabili za iskanje srednjega odvoda med dvema vrednostma PFC na et-0/0/0 Spine-1 v sekundi.
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') IN $timeFilter GROUP BY time($interval)
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') IN $timeFilter GROUP BY time($interval)
Napake vhodnega vira pomenijo izpeljanko
Surova poizvedba za izpeljanko vrednosti napak v sredstvih je:
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') IN $timeFilter GROUP BY time($interval)
Kapljice repa pomenijo izpeljanko
Neobdelana poizvedba za izpeljanko povprečja izpadov je:
SELECT derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s) FROM “buer” WHERE (“device”::tag = 'Leaf-1' IN “/cos/interfaces/interface/@name”::tag = 'et-0/0/0' IN “/cos/interfaces/interface/queues/queue/@queue”::tag = '4') IN $timeFilter GROUP BY time($__interval) fill(null)
Izkoriščenost procesorja
- Izberite vir podatkov kot test-1.
- V razdelku FROM izberite meritev kot »newcpu«
- V KJE je treba izpolniti tri polja. Izberite napravo::tag in v tag vrednost izberite ime gostitelja stikala (tj. spine-1). IN v /components/component/properties/property/name:tagin izberite cpuutilization-total IN v imenu::tag izberite RE0.
- V razdelku IZBERI izberite vejo senzorja, ki jo želite spremljati. V tem primeru izberite »field(state/value)«.
Neobdelana poizvedba za iskanje nenegativnega odvoda repa za več stikal na več vmesnikih v bitih/s.
SELECT non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 FROM “buer” WHERE (naprava::tag =~ /^Spine-[1-2]$/) in (“/cos/interfaces/interface/@name”::tag =~ /et-0\/0\/[0-9]/ ali “/cos/interfaces/interface/@name”::tag=~/et-0\/0\/1[0-5]/) IN $timeFilter GROUP BY time($__interval),device::tag izpolni (null)
To so bili nekateri bivšiampgrafov, ki jih je mogoče ustvariti za spremljanje omrežja AI/ML.
Povzetek
Ta dokument ponazarja metodo pridobivanja telemetričnih podatkov in njihove vizualizacije z ustvarjanjem grafov. Ta članek posebej govori o senzorjih AI/ML, tako izvornih kot openconfig, vendar je nastavitev mogoče uporabiti za vse vrste senzorjev. Vključili smo tudi rešitve za številne težave, s katerimi se lahko srečate med ustvarjanjem nastavitve. Koraki in rezultati, prikazani v tem dokumentu, so specifični za različice sklada TIG, omenjenega prej. Lahko se spremeni glede na različico programske opreme, senzorje in različico Junos.
Reference
Juniper Yang Data Model Explorer za vse možnosti senzorjev
https://apps.juniper.net/ydm-explorer/
Forum Openconfig za senzorje openconfig
https://www.openconfig.net/projects/models/
Sedež podjetja in prodaje
Juniper Networks, Inc.
1133 Inovacijska pot
Sunnyvale, CA 94089 ZDA
Telefon: 888. BRIN (888.586.4737)
ali +1.408.745.2000
Faks: +1.408.745.2100
www.juniper.net
Sedež APAC in EMEA
Juniper Networks International BV
Boeing Avenue 240
1119 PZ Schiphol-Rijk
Amsterdam, Nizozemska
Telefon: +31.207.125.700
Faks: +31.207.125.701
Avtorske pravice 2023 Juniper Networks. Inc. Vse pravice pridržane. Juniper Networks, logotip Juniper Networks, Juniper, Junos in druge blagovne znamke so registrirane blagovne znamke družbe Juniper Networks. inc. in/ali njenih podružnic v ZDA in drugih državah. Druga imena so lahko blagovne znamke svojih lastnikov. Juniper Networks ne prevzema nobene odgovornosti za morebitne netočnosti v tem dokumentu. Juniper Networks si pridržuje pravico do sprememb. spremeniti. prenesti ali kako drugače popraviti to publikacijo brez predhodnega obvestila.
Pošljite povratne informacije na: design-center-comments@juniper.net V1.0/240807/ejm5-telemetrija-junos-ai-ml
Dokumenti / Viri
![]() |
Juniper NETWORKS Telemetrija v programu Junos for AI ML Workloads [pdf] Uporabniški priročnik Telemetrija v Junos za programsko opremo za delovne obremenitve AI ML, programska oprema za delovne obremenitve Junos za AI ML, programska oprema za delovne obremenitve AI ML, programska oprema za delovne obremenitve, programska oprema |