Telemetrio en Junos por AI/ML Laborŝarĝoj
Aŭtoro: Shalini Mukherjee
Enkonduko
Ĉar AI-grupo-trafiko postulas senperdajn retojn kun alta trafluo kaj malalta latenco, kritika elemento de la AI-reto estas la kolekto de monitoraj datumoj. Junos Telemetry ebligas granularan monitoradon de ŝlosilaj agado-indikiloj, inkluzive de sojloj kaj nombriloj por obstrukcadministrado kaj trafikŝarĝoekvilibro. gRPC-sesioj subtenas la fluadon de telemetriaj datumoj. gRPC estas moderna, malfermfonta, alta rendimenta kadro, kiu estas konstruita sur HTTP/2-transporto. Ĝi rajtigas indiĝenajn dudirektajn fluajn kapablojn kaj inkluzivas flekseblajn kutimajn metadatumojn en petaj kaplinioj. La komenca paŝo en telemetrio estas scii kiajn datumojn estas kolektotaj. Ni povas tiam analizi ĉi tiujn datumojn en diversaj formatoj. Post kiam ni kolektas la datumojn, gravas prezenti ĝin en formato facile monitorebla, fari decidojn kaj plibonigi la ofertitan servon. En ĉi tiu artikolo, ni uzas telemetrian stakon konsistantan el Telegraf, InfluxDB kaj Grafana. Ĉi tiu telemetria stako kolektas datumojn per puŝmodelo. Tradiciaj tirmodeloj estas rimed-intensaj, postulas manan intervenon, kaj povus inkludi informinterspacojn en la datenoj kiujn ili kolektas. Puŝmodeloj venkas ĉi tiujn limigojn liverante datumojn nesinkrone. Ili riĉigas la datumojn uzante uzantamika tags kaj nomoj. Post kiam la datumoj estas en pli legebla formato, ni konservas ĝin en datumbazo kaj uzas ĝin en interaga bildigo web aplikaĵo por analizo de la reto. Figuro. 1 montras al ni kiel ĉi tiu stako estas desegnita por efika datumkolektado, stokado kaj bildigo, de retaj aparatoj puŝantaj datumojn al la kolektanto ĝis la datumoj montrataj sur paneloj por analizo.
TIG-Stako
Ni uzis Ubuntu-servilon por instali la tutan programaron inkluzive de la TIG-stako.
Telegrafo
Por kolekti datumojn, ni uzas Telegraf sur Ubuntu-servilo funkcianta 22.04.2. La Telegraf-versio kuranta en ĉi tiu demo estas 1.28.5.
Telegraf estas aldonaĵa servila agento por kolektado kaj raportado de metrikoj. Ĝi uzas procesoron plugins por riĉigi kaj normaligi la datumojn. La eligo plugins estas uzataj por sendi ĉi tiujn datumojn al diversaj datumbutikoj. En ĉi tiu dokumento ni uzas du plugins: unu por openconfig-sensiloj kaj la alia por Juniper-denaskaj sensiloj.
InfluxDB
Por konservi la datumojn en temp-seriodatumbazo, ni uzas InfluxDB. La eliga kromaĵo en Telegraf sendas la datumojn al InfluxDB, kiu konservas ĝin en tre efika maniero. Ni uzas V1.8 ĉar ne ekzistas CLI por V2 kaj supre.
Grafana
Grafana estas uzata por bildigi ĉi tiujn datumojn. Grafana eltiras la datumojn de InfluxDB kaj permesas al uzantoj krei riĉajn kaj interagajn instrumentpanelojn. Ĉi tie ni kuras version 10.2.2.
Agordo Sur La Ŝaltilo
Por efektivigi ĉi tiun stakon, ni unue devas agordi la ŝaltilon kiel montrite en Figuro 2. Ni uzis pordon 50051. Ajna haveno povas esti uzata ĉi tie. Ensalutu al la QFX-ŝaltilo kaj aldonu la sekvan agordon.
Notu: Ĉi tiu agordo estas por laboratorioj/POC-oj ĉar la pasvorto estas transdonita en klara teksto. Uzu SSL por eviti ĉi tion.
Medio
Nginx
Ĉi tio necesas se vi ne povas elmontri la havenon, sur kiu Grafana estas gastigita. La sekva paŝo estas instali nginx sur la Ubuntu-servilo por funkcii kiel inversa prokura agento. Post kiam nginx estas instalita, aldonu la liniojn montritajn en Figuro 4 al la "defaŭlta" dosiero kaj movu la dosieron de /etc/nginx al /etc/nginx/sites-enabled.
Certigu, ke la fajroŝirmilo estas ĝustigita por doni plenan aliron al la servo nginx kiel montrite en Figuro 5.
Post kiam nginx estas instalita kaj la postulataj ŝanĝoj estas faritaj, ni devus povi aliri Grafana de a web retumilo uzante la IP-adreson de la Ubuntu-servilo kie la tuta programaro estas instalita.
Estas malgranda eraro en Grafana, kiu ne lasas vin restarigi la defaŭltan pasvorton. Uzu ĉi tiujn paŝojn se vi renkontas ĉi tiun problemon.
Paŝoj farotaj sur la Ubuntu-servilo por agordi la pasvorton en Grafana:
- Iru al /var/lib/grafana/grafana.db
- Instalu sqllite3
o sudo apt install sqlite3 - Rulu ĉi tiun komandon en via terminalo
o sqlite3 grafana.db - Sqlite komanda prompto malfermiĝas; rulu la sekvan demandon:
>forigu de uzanto kie ensaluto='admin' - Rekomencu grafana kaj tajpu admin kiel uzantnomo kaj pasvorto. Ĝi petas novan pasvorton.
Post kiam la tuta programaro estas instalita, kreu la agordan dosieron en Telegraf, kiu helpos eltiri la telemetriajn datumojn de la ŝaltilo kaj puŝi ĝin al InfluxDB.
Openconfig Sensila Kromaĵo
Sur la Ubuntu-servilo, redaktu la /etc/telegraf/telegraf.conf-dosieron por aldoni ĉiujn necesajn plugins kaj sensiloj. Por la openconfig-sensiloj, ni uzas la gNMI-kromaĵon montritan en Figuro 6. Por demo-celoj, aldonu la gastigan nomon kiel "spine1", la havennumero "50051" kiu estas uzata por gRPC, la uzantnomo kaj pasvorto de la ŝaltilo, kaj la numeron. de sekundoj por retelefono en kazo de malsukceso.
En la abona strofo, aldonu unikan nomon, "cpu" por ĉi tiu aparta sensilo, la sensila vojo kaj la tempointervalo por preni ĉi tiujn datumojn de la ŝaltilo. Aldonu la saman kromprogramon inputs.gnmi kaj inputs.gnmi.subscription por ĉiuj malfermitaj agordaj sensiloj. (Figuro 6)
Denaska Sensila Kromaĵo
Ĉi tio estas Juniper-telemetria interfaca kromaĵo uzata por denaskaj sensiloj. En la sama telegraf.conf dosiero, aldonu la denaskan sensilkromaĵo inputs.jti_openconfig_telemetry kie la kampoj estas preskaŭ la sama kiel openconfig. Uzu unikan klientidentigilon por ĉiu sensilo; ĉi tie, ni uzas "telegraf3". La unika nomo uzata ĉi tie por ĉi tiu sensilo estas "mem" (Figuro 7).
Finfine, aldonu eligaĵon outputs.influxdb por sendi ĉi tiujn sensilajn datumojn al InfluxDB. Ĉi tie, la datumbazo estas nomita "telegraf" kun uzantnomo kiel "influx" kaj pasvorto "influxdb" (Figuro 8).
Post kiam vi redaktis la telegraf.conf-dosieron, rekomencu la telegraf-servon. Nun, kontrolu la InfluxDB CLI por certigi ĉu mezuradoj estas kreitaj por ĉiuj unikaj sensiloj. Tajpu "influx" por eniri la InfluxDB CLI.
Kiel vidite en Figuro. 9, enigu la influxDB-inviton kaj uzu la datumbazon "telegraf". Ĉiuj unikaj nomoj donitaj al la sensiloj estas listigitaj kiel mezuradoj.
Por vidi la eliron de iu ajn mezurado, nur por certigi, ke la telegrafa dosiero estas ĝusta kaj la sensilo funkcias, uzu la komandon "elektu * el CPU-limo 1" kiel montrite en Figuro 10.
Ĉiufoje kiam ŝanĝoj estas faritaj al la telegraf.conf-dosiero, nepre ĉesigu InfluxDB, rekomencu Telegraf, kaj poste lanĉu InfluxDB.
Ensalutu al Grafana de la retumilo kaj kreu instrumentpanelojn post certigi, ke la datumoj estas ĝuste kolektitaj.
Iru al Konektoj > InfuxDB > Aldonu novan datumfonton.
- Donu nomon al ĉi tiu datumfonto. En ĉi tiu demo ĝi estas "test-1".
- Sub la HTTP-strofo, uzu la Ubuntu-servilon IP kaj 8086-havenon.
- En la detaloj de InfluxDB, uzu la saman datumbazan nomon, "telegraf", kaj donu la uzantnomon kaj pasvorton de la Ubuntu-servilo.
- Alklaku Konservi kaj testi. Certigu, ke vi vidas la mesaĝon "sukcesa".
- Post kiam la datumfonto estas sukcese aldonita, iru al Paneloj kaj alklaku Nova. Ni kreu kelkajn instrumentpanelojn, kiuj estas esencaj por AI/ML-laborŝarĝoj en redaktilo.
Examples De Sensilaj Grafikoj
La jenaj estas ekzampiloj de iuj gravaj nombriloj, kiuj estas esencaj por monitorado de AI/ML-reto.
Procentotage utiligo por enirinterfaco et-0/0/0 sur spine-1
- Elektu la datumfonton kiel testo-1.
- En la sekcio DE, elektu la mezuradon kiel "interfaco". Ĉi tiu estas la unika nomo uzata por ĉi tiu sensila vojo.
- En la sekcio KIE, elektu aparaton::tag, kaj en la tag valoro, elektu la gastigan nomon de la ŝaltilo, tio estas, spine1.
- En la sekcio SELECT, elektu la sensilbranĉon, kiun vi volas kontroli; ĉi-kaze elektu "field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)". Nun en la sama sekcio, alklaku "+" kaj aldonu ĉi tiun kalkulan matematikon (/50000000000 * 100). Ni esence kalkulas la elcentontage utiligo de 400G interfaco.
- Certigu, ke la FORMATO estas "tempo-serio", kaj nomu la grafikaĵon en la sekcio ALIAS.
Pinta bufrookupado por iu ajn vico
- Elektu la datumfonton kiel testo-1.
- En la sekcio DE, elektu la mezuradon kiel "bufron".
- En la sekcio KIE, estas tri kampoj por plenigi. Elektu aparaton::tag, kaj en la tag valoro elektu la gastigan nomon de la ŝaltilo (t.e. spino-1); KAJ elektu /cos/interfaces/interface/@name::tag kaj elektu la interfacon (t.e. et- 0/0/0); KAJ elektu la voston ankaŭ, /cos/interfaces/interface/queues/queue/@queue::tag kaj elektu la voston numero 4.
- En la sekcio SELECT, elektu la sensilbranĉon, kiun vi volas kontroli; ĉi-kaze elektu "field(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy)."
- Certigu, ke la FORMATO estas "tempo-serio" kaj nomu la grafeon en la sekcio ALIAS.
Vi povas kombini datumojn por pluraj interfacoj sur la sama grafeo kiel vidita en Figuro 17 por et-0/0/0, et-0/0/1, et-0/0/2 ktp.
PFC kaj ECN signifas derivaĵon
Por trovi la averaĝan derivaĵon (la diferenco en valoro ene de tempointervalo), uzu la krudan demandreĝimon.
Ĉi tiu estas la enflua demando, kiun ni uzis por trovi la averaĝan derivaĵon inter du PFC-valoroj sur et-0/0/0 de Spine-1 en sek.
ELEKTU derivaĵon (mean ("/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts"), 1s) DE "interfaco" KIIE ("aparato"::tag = 'Spino-1') KAJ $tempoFilter GROUP BY tempo($intervalo)
ELEKTU derivaĵon (mean ("/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts"), 1s) DE "interfaco" KIE ("aparato"::tag = 'Spino-1') KAJ $tempoFilter GROUP BY tempo($intervalo)
Enigaj rimederaroj signifas derivaĵon
La kruda demando por rimederaroj signifas ke derivaĵo estas:
ELEKTU derivaĵon (mean ("/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors"), 1s) DE "interfaco" KIE ("aparato"::tag = 'Spino-1') KAJ $tempoFilter GROUP BY tempo($intervalo)
Vostogutoj signifas derivaĵon
La kruda demando por vostogutoj signifas derivaĵo estas:
ELEKTU derivaĵon (mean ("/cos/interfaces/interface/queues/queue/tailDropBytes"), 1s) DE "buffer" WHERE ("aparato"::tag = 'Folio-1' KAJ “/cos/interfaces/interface/@name”::tag = 'et-0/0/0' KAJ “/cos/interfaces/interface/queues/queue/@queue”::tag = '4') AND $timeFilter GROUP BY tempo($__intervalo) plenigi (nula)
CPU-uzado
- Elektu la datumfonton kiel testo-1.
- En la sekcio DE, elektu la mezuron kiel "newcpu"
- En la KIE, estas tri kampoj por plenigi. Elektu aparaton::tag kaj en la tag valoro elektu la gastigan nomon de la ŝaltilo (t.e. spino-1). KAJ en /components/component/properties/property/name:tag, kaj elektu cpuutilization-total AND en nomo::tag elektu RE0.
- En la sekcio SELECT, elektu la sensilbranĉon, kiun vi volas kontroli. En ĉi tiu kazo, elektu "kampo(ŝtato/valoro)".
La kruda demando por trovi la nenegativan derivaĵon de vosto falas por multoblaj ŝaltiloj sur multoblaj interfacoj en bitoj/sek.
ELEKTU ne_negativan_derivaĵon (mean ("/cos/interfaces/interface/queues/queue/tailDropBytes"), 1s)*8 EL "buffer" KIE (aparato::tag =~ /^Spine-[1-2]$/) kaj ("/cos/interfaces/interface/@name"::tag =~ /et-0\/0\/[0-9]/ aŭ "/cos/interfaces/interface/@name"::tag=~/et-0\/0\/1[0-5]/) KAJ $timeFilter GROUP BY tempo($__intervalo),aparato::tag plenigi (nula)
Ĉi tiuj estis kelkaj el la eksamples de la grafikaĵoj kiuj povas esti kreitaj por monitorado de AI/ML-reto.
Resumo
Ĉi tiu artikolo ilustras la metodon de tiri telemetriajn datumojn kaj bildigi ĝin per kreado de grafeoj. Ĉi tiu artikolo specife parolas pri AI/ML-sensiloj, kaj indiĝenaj kaj openconfig sed la aranĝo povas esti uzata por ĉiaj sensiloj. Ni ankaŭ inkludis solvojn por pluraj problemoj, kiujn vi povus renkonti dum kreado de la aranĝo. La paŝoj kaj produktaĵoj prezentitaj en ĉi tiu artikolo estas specifaj al la versioj de la TIG-stako menciitaj antaŭe. Ĝi estas ŝanĝebla depende de la versio de la programaro, la sensiloj kaj la Junos-versio.
Referencoj
Juniper Yang Data Model Explorer por ĉiuj sensilopcioj
https://apps.juniper.net/ydm-explorer/
Openconfig forumo por openconfig sensiloj
https://www.openconfig.net/projects/models/
Korporacia kaj Venda Ĉefsidejo
Juniper Networks, Inc.
1133 Noviga Vojo
Sunnyvale, CA 94089 Usono
Telefono: 888. JUNIPERO (888.586.4737)
aŭ +1.408.745.2000
Fakso: +1.408.745.2100
www.juniper.net
Ĉefsidejo de APAC kaj EMEA
Juniper Networks International BV
Boeing Avenue 240
1119 PZ Schiphol-Rijk
Amsterdamo, Nederlando
Telefono: +31.207.125.700
Fakso: +31.207.125.701
Kopirajto 2023 Juniper Networks. Inc. Ĉiuj rajtoj rezervitaj. Juniper Networks, la emblemo de Juniper Networks, Juniper, Junos kaj aliaj varmarkoj estas registritaj varmarkoj de Juniper Networks. inc. kaj/aŭ ĝiaj filioj en Usono kaj aliaj landoj. Aliaj nomoj povas esti varmarkoj de siaj respektivaj posedantoj. Juniper Networks prenas neniun respondecon pri iuj eraroj en ĉi tiu dokumento. Juniper Networks rezervas la rajton ŝanĝi. modifi. translokigi, aŭ alie revizii ĉi tiun publikaĵon sen avizo.
Sendu komentojn al: dezajno-centro-komentoj@juniper.net V1.0/240807/ejm5-telemetry-junos-ai-ml
Dokumentoj/Rimedoj
![]() |
Juniper NETWORKS Telemetrio En Junos por AI ML Workloads Programaro [pdf] Uzantogvidilo Telemetrio En Junos por AI ML Workloads Programaro, Junos por AI ML Workloads Programaro, AI ML Workloads Programaro, Workloads Programaro, Programaro |