Telemetrija „Junos“, skirta dirbtinio intelekto / ML darbo krūviams
Autorius: Shalini Mukherjee
Įvadas
Kadangi dirbtinio intelekto klasterio srautas reikalauja be nuostolių tinklų, turinčių didelį pralaidumą ir mažą delsą, esminis AI tinklo elementas yra stebėjimo duomenų rinkimas. „Junos Telemetry“ leidžia detaliai stebėti pagrindinius veiklos rodiklius, įskaitant slenksčius ir skaitiklius, skirtus spūsčių valdymui ir eismo apkrovos balansavimui. gRPC sesijos palaiko telemetrijos duomenų srautinį perdavimą. gRPC yra moderni atvirojo kodo didelio našumo sistema, sukurta HTTP/2 transportu. Jis suteikia savąsias dvikrypčio srautinio perdavimo galimybes ir į užklausų antraštes įtraukia lanksčius tinkintus metaduomenis. Pradinis telemetrijos žingsnis yra žinoti, kokius duomenis reikia rinkti. Tada galime analizuoti šiuos duomenis įvairiais formatais. Kai renkame duomenis, svarbu juos pateikti tokiu formatu, kad būtų lengva stebėti, priimti sprendimus ir tobulinti teikiamą paslaugą. Šiame darbe naudojame telemetrijos rinkinį, kurį sudaro Telegraf, InfluxDB ir Grafana. Šis telemetrijos rinkinys renka duomenis naudodamas „push“ modelį. Tradiciniai traukimo modeliai reikalauja daug išteklių, reikalauja rankinio įsikišimo, o renkamuose duomenyse gali būti informacijos spragų. „Push“ modeliai įveikia šiuos apribojimus pateikdami duomenis asinchroniškai. Jie praturtina duomenis naudodamiesi patogiu vartotoju tags ir vardai. Kai duomenys yra lengviau skaitomo formato, saugome juos duomenų bazėje ir naudojame interaktyvioje vizualizacijoje web programa, skirta tinklo analizei. Paveikslas. 1 parodyta, kaip šis krūvas sukurtas efektyviam duomenų rinkimui, saugojimui ir vizualizavimui, pradedant tinklo įrenginiais, perduodančiais duomenis į rinktuvą, baigiant duomenimis, rodomais prietaisų skydelyje analizei.
TIG Stack
Mes naudojome Ubuntu serverį, kad įdiegtume visą programinę įrangą, įskaitant TIG krūvą.
Telegrafas
Duomenims rinkti naudojame Telegraf Ubuntu serveryje, kuriame veikia 22.04.2. Šioje demonstracijoje veikianti „Telegraf“ versija yra 1.28.5.
„Telegraf“ yra įskiepiu valdomas serverio agentas, skirtas metrikai rinkti ir teikti ataskaitas. Jis naudoja procesorių plugins praturtinti ir normalizuoti duomenis. Išvestis plugins naudojami šiems duomenims siųsti į įvairias duomenų saugyklas. Šiame dokumente naudojame du plugins: vienas skirtas openconfig jutikliams, o kitas – Juniper vietiniams jutikliams.
InfluxDB
Duomenims saugoti laiko eilučių duomenų bazėje naudojame InfluxDB. „Telegraf“ išvesties papildinys siunčia duomenis į „InfluxDB“, kuris juos saugo labai efektyviai. Naudojame V1.8, nes 2 ir naujesnės versijos CLI nėra.
Grafana
Šiems duomenims vizualizuoti naudojama Grafana. „Grafana“ ištraukia duomenis iš „InfluxDB“ ir leidžia vartotojams kurti išsamias ir interaktyvias informacijos suvestines. Čia veikia 10.2.2 versija.
Konfigūracija ant jungiklio
Norėdami įdiegti šį krūvą, pirmiausia turime sukonfigūruoti jungiklį, kaip parodyta 2 paveiksle. Naudojome 50051 prievadą. Čia galima naudoti bet kurį prievadą. Prisijunkite prie QFX jungiklio ir pridėkite šią konfigūraciją.
Pastaba: Ši konfigūracija skirta laboratorijoms / POC, nes slaptažodis perduodamas aiškiu tekstu. Norėdami to išvengti, naudokite SSL.
Aplinka
Nginx
Tai reikalinga, jei negalite atskleisti prievado, kuriame yra „Grafana“. Kitas žingsnis yra įdiegti nginx Ubuntu serveryje, kad jis veiktų kaip atvirkštinio tarpinio serverio agentas. Įdiegę nginx, pridėkite 4 pav. parodytas eilutes prie „numatytojo“ failo ir perkelkite failą iš /etc/nginx į /etc/nginx/sites-enabled.
Įsitikinkite, kad ugniasienė sureguliuota taip, kad suteiktų visišką prieigą prie nginx paslaugos, kaip parodyta 5 paveiksle.
Įdiegę „nginx“ ir atlikę reikiamus pakeitimus, „Grafana“ turėtume pasiekti iš a web naršyklę naudodami Ubuntu serverio, kuriame įdiegta visa programinė įranga, IP adresą.
„Grafana“ yra nedidelis gedimas, neleidžiantis iš naujo nustatyti numatytojo slaptažodžio. Jei susiduriate su šia problema, atlikite šiuos veiksmus.
Veiksmai, kuriuos reikia atlikti Ubuntu serveryje, norint nustatyti slaptažodį Grafana:
- Eikite į /var/lib/grafana/grafana.db
- Įdiekite sqllite3
o sudo apt install sqlite3 - Vykdykite šią komandą savo terminale
o sqlite3 grafana.db - Atsidaro „Sqlite“ komandų eilutė; paleiskite šią užklausą:
>ištrinti iš vartotojo, kur login='admin' - Iš naujo paleiskite grafana ir įveskite admin kaip vartotojo vardą ir slaptažodį. Jis ragina įvesti naują slaptažodį.
Įdiegę visą programinę įrangą, sukurkite Telegraf konfigūracijos failą, kuris padės paimti telemetrijos duomenis iš jungiklio ir perkelti juos į InfluxDB.
„Openconfig“ jutiklio papildinys
Ubuntu serveryje redaguokite /etc/telegraf/telegraf.conf failą, kad pridėtumėte visus reikalingus plugins ir jutikliai. Openconfig jutikliams naudojame gNMI papildinį, parodytą 6 paveiksle. Demonstraciniais tikslais pridėkite pagrindinio kompiuterio pavadinimą kaip „spine1“, prievado numerį „50051“, kuris naudojamas gRPC, jungiklio vartotojo vardą ir slaptažodį bei numerį. sekundžių perrinkimui gedimo atveju.
Prenumeratos poskyryje pridėkite unikalų šio konkretaus jutiklio pavadinimą, „procesorių“, jutiklio kelią ir laiko intervalą, per kurį šie duomenys paimami iš jungiklio. Visiems atviriems konfigūracijos jutikliams pridėkite tą patį papildinį inputs.gnmi ir inputs.gnmi.subscription. (6 pav.)
Vietinis jutiklio papildinys
Tai yra Juniper telemetrijos sąsajos papildinys, naudojamas vietiniams jutikliams. Tame pačiame faile telegraf.conf pridėkite vietinį jutiklio įskiepį inputs.jti_openconfig_telemetry, kur laukai yra beveik tokie patys kaip ir openconfig. Kiekvienam jutikliui naudokite unikalų kliento ID; čia mes naudojame „telegraf3“. Unikalus šio jutiklio pavadinimas yra „mem“ (7 pav.).
Galiausiai pridėkite išvesties papildinį outputs.influxdb, kad nusiųstumėte šio jutiklio duomenis į InfluxDB. Čia duomenų bazė pavadinta „telegraf“, o vartotojo vardas yra „influx“ ir slaptažodis „influxdb“ (8 pav.).
Redaguodami telegraf.conf failą, iš naujo paleiskite telegrafo paslaugą. Dabar patikrinkite InfluxDB CLI, kad įsitikintumėte, ar sukurti visų unikalių jutiklių matavimai. Įveskite „influx“, kad įvestumėte InfluxDB CLI.
Kaip matyti paveiksle. 9, įveskite influxDB eilutę ir naudokite duomenų bazę „telegraf“. Visi unikalūs jutikliams suteikti pavadinimai pateikiami kaip matavimai.
Norėdami pamatyti bet kurio vieno matavimo išvestį ir įsitikinti, kad telegrafo failas yra teisingas ir jutiklis veikia, naudokite komandą „select * from cpu limit 1“, kaip parodyta 10 paveiksle.
Kiekvieną kartą, kai atliekami failo telegraf.conf pakeitimai, būtinai sustabdykite InfluxDB, iš naujo paleiskite Telegraf ir tada paleiskite InfluxDB.
Naršyklėje prisijunkite prie „Grafana“ ir sukurkite prietaisų skydelius įsitikinę, kad duomenys renkami teisingai.
Eikite į Ryšiai > InfuxDB > Pridėti naują duomenų šaltinį.
- Suteikite pavadinimą šiam duomenų šaltiniui. Šioje demonstracijoje tai yra „test-1“.
- Pagal HTTP posmą naudokite Ubuntu serverio IP ir 8086 prievadą.
- Išsamioje „InfluxDB“ dalyje naudokite tą patį duomenų bazės pavadinimą „telegraf“ ir pateikite Ubuntu serverio vartotojo vardą ir slaptažodį.
- Spustelėkite Išsaugoti ir išbandyti. Įsitikinkite, kad matote pranešimą „sėkmingai“.
- Sėkmingai įtraukę duomenų šaltinį, eikite į Prietaisų skydelius ir spustelėkite Naujas. Leiskite mums sukurti keletą prietaisų skydelių, kurie yra būtini AI / ML darbo krūviams redaktoriaus režimu.
Examples Of Sensor Graphs
Toliau pateikiami exampkai kurių pagrindinių skaitiklių, būtinų AI/ML tinklui stebėti.
Proctage panaudojimas įėjimo sąsajai et-0/0/0 ant spine-1
- Pasirinkite duomenų šaltinį kaip test-1.
- Skiltyje FROM pasirinkite matavimą kaip „sąsaja“. Tai unikalus šio jutiklio kelio pavadinimas.
- Skiltyje WHERE pasirinkite įrenginį::tag, ir esančiame tag reikšmę, pasirinkite jungiklio pagrindinio kompiuterio pavadinimą, tai yra, spine1.
- Skiltyje SELECT pasirinkite jutiklio šaką, kurią norite stebėti; šiuo atveju pasirinkite „field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)“. Dabar tame pačiame skyriuje spustelėkite „+“ ir pridėkite šią skaičiavimo matematiką (/50000000000 * 100). Iš esmės skaičiuojame proctage 400G sąsajos panaudojimas.
- Įsitikinkite, kad FORMATAS yra „laiko eilutė“, ir pavadinkite diagramą skiltyje ALIAS.
Didžiausias bet kurios eilės buferio užimtumas
- Pasirinkite duomenų šaltinį kaip test-1.
- Skiltyje FROM pasirinkite matavimą kaip „buferis“.
- Skiltyje WHERE reikia užpildyti tris laukus. Pasirinkite įrenginį:tag, ir esančiame tag reikšmė pasirinkite jungiklio pagrindinio kompiuterio pavadinimą (ty spine-1); IR pasirinkite /cos/interfaces/interface/@name::tag ir pasirinkite sąsają (ty et- 0/0/0); IR taip pat pasirinkite eilę, /cos/interfaces/interface/queues/queue/@queue::tag ir pasirinkite eilės numerį 4.
- Skiltyje SELECT pasirinkite jutiklio šaką, kurią norite stebėti; šiuo atveju pasirinkite „field(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy).“
- Įsitikinkite, kad FORMATAS yra „laiko eilutė“, ir pavadinkite diagramą skiltyje ALIAS.
Galite lyginti kelių sąsajų duomenis toje pačioje diagramoje, kaip parodyta 17 paveiksle, skirtuose et-0/0/0, et-0/0/1, et-0/0/2 ir kt.
PFC ir ECN reiškia darinį
Norėdami rasti vidutinę išvestinę priemonę (vertės skirtumą tam tikru laiko intervalu), naudokite neapdorotos užklausos režimą.
Tai yra antplūdžio užklausa, kurią naudojome norėdami rasti vidutinę išvestinę tarp dviejų PFC reikšmių et-0/0/0 Spine-1 per sekundę.
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) FROM „interface“ WHERE („įrenginys“::tag = 'Stuburas-1') IR $timeFilter GROUP BY laikas($interval)
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts”), 1s) FROM „interface“ WHERE („įrenginys“::tag = 'Stuburas-1') IR $timeFilter GROUP BY laikas($interval)
Įvesties išteklių klaidos reiškia išvestinę
Neapdorota išteklių klaidų užklausa reiškia išvestinę priemonę:
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) FROM „interface“ WHERE („įrenginys“::tag = 'Stuburas-1') IR $timeFilter GROUP BY laikas($interval)
Uodegos lašai reiškia darinį
Neapdorota uodegos lašų vidurkio išvestinė užklausa yra tokia:
SELECT išvestinė(reiškinys(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s) FROM “buffer” WHERE (“įrenginys”::tag = 'Leaf-1' IR "/cos/interfaces/interface/@name"::tag = 'et-0/0/0' IR "/cos/interfaces/interface/queues/queue/@queue"::tag = '4') IR $timeFilter GROUP BY laikas($__interval) fill(null)
CPU panaudojimas
- Pasirinkite duomenų šaltinį kaip test-1.
- Skiltyje FROM pasirinkite matavimą kaip „newcpu“
- KUR yra trys laukai, kuriuos reikia užpildyti. Pasirinkite įrenginį:tag ir į tag reikšmę pasirinkite jungiklio pagrindinio kompiuterio pavadinimą (ty spine-1). IR /components/component/properties/property/name:tag, ir pavadinime pasirinkite cpuutilization-total AND::tag pasirinkite RE0.
- Skiltyje SELECT pasirinkite jutiklio šaką, kurią norite stebėti. Tokiu atveju pasirinkite „laukas(būsena/reikšmė)“.
Neapdorota užklausa, skirta rasti neneigiamą uodegos kritimo išvestį keliems jungikliams keliose sąsajose bitais per sekundę.
SELECT non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 FROM “buffer” WHERE (įrenginys::tag =~ /^Spine-[1-2]$/) ir ("/cos/interfaces/interface/@name"::tag =~ /et-0\/0\/[0-9]/ arba „/cos/interfaces/interface/@name“::tag=~/et-0\/0\/1[0-5]/) IR $timeFilter GROUP BY laikas($__interval),įrenginys::tag užpildyti (nuliai)
Tai buvo kai kurie buvęampgrafikų, kuriuos galima sukurti AI/ML tinklui stebėti.
Santrauka
Šiame darbe iliustruojamas telemetrijos duomenų gavimo ir vizualizavimo būdas kuriant grafikus. Šiame dokumente konkrečiai kalbama apie AI/ML jutiklius, tiek vietinius, tiek atviros konfigūracijos, tačiau sąranka gali būti naudojama visų tipų jutikliams. Taip pat įtraukėme kelių problemų, su kuriomis galite susidurti kurdami sąranką, sprendimus. Šiame dokumente pavaizduoti žingsniai ir išėjimai yra būdingi anksčiau paminėtoms TIG kamino versijoms. Jis gali keistis priklausomai nuo programinės įrangos versijos, jutiklių ir Junos versijos.
Nuorodos
Juniper Yang Data Model Explorer visoms jutiklių parinktims
https://apps.juniper.net/ydm-explorer/
Openconfig forumas, skirtas openconfig jutikliams
https://www.openconfig.net/projects/models/
Įmonės ir pardavimų būstinė
Juniper Networks, Inc.
1133 inovacijų kelias
Sunnyvale, CA 94089 JAV
Telefonas: 888. JUNIPER (888.586.4737)
arba +1.408.745.2000
Faksas: +1.408.745.2100 XNUMX XNUMX XNUMX
www.juniper.net
APAC ir EMEA būstinė
Juniper Networks International BV
Boeing Avenue 240
1119 PZ Schiphol-Rijk
Amsterdamas, Nyderlandai
Telefonas: +31.207.125.700 XNUMX XNUMX XNUMX
Faksas: +31.207.125.701 XNUMX XNUMX XNUMX
Autorių teisės, 2023 m. „Juniper Networks“. Inc. Visos teisės saugomos. „Juniper Networks“, „Juniper Networks“ logotipas, „Juniper“, „Junos“ ir kiti prekių ženklai yra registruotieji „Juniper Networks“ prekių ženklai. inc. ir (arba) jos filialai Jungtinėse Valstijose ir kitose šalyse. Kiti pavadinimai gali būti atitinkamų savininkų prekių ženklai. Juniper Networks neprisiima atsakomybės už bet kokius šio dokumento netikslumus. Juniper Networks pasilieka teisę keistis. modifikuoti. perkelti arba kitaip peržiūrėti šį leidinį be įspėjimo.
Atsiliepimus siųsti adresu: design-center-comments@juniper.net V1.0/240807/ejm5-telemetry-junos-ai-ml
Dokumentai / Ištekliai
![]() |
„Juniper NETWORKS“ telemetrija „Junos“, skirta AI ML darbo krūvių programinei įrangai [pdfVartotojo vadovas Telemetrija „Junos“, skirta AI ML darbo krūvių programinei įrangai, „Junos“, skirta AI ML darbo krūvių programinei įrangai, AI ML darbo krūvių programinei įrangai, darbo krūvių programinei įrangai, programinei įrangai |