Telemetri ing Junos kanggo AI / ML Workloads
Pengarang: Shalini Mukherjee
Pambuka
Amarga trafik kluster AI mbutuhake jaringan lossless kanthi throughput dhuwur lan latency kurang, unsur kritis jaringan AI yaiku nglumpukake data pemantauan. Junos Telemetry mbisakake pemantauan granular kanggo indikator kinerja utama, kalebu ambang lan counter kanggo manajemen kemacetan lan imbangan beban lalu lintas. Sesi gRPC ndhukung streaming data telemetri. gRPC minangka kerangka kerja modern, open-source, kinerja dhuwur sing dibangun ing transportasi HTTP/2. Iki ngidini kemampuan streaming bidirectional asli lan kalebu metadata khusus sing fleksibel ing header panjaluk. Langkah awal ing telemetri yaiku ngerti apa data sing bakal dikumpulake. Kita banjur bisa nganalisa data iki ing macem-macem format. Sawise ngumpulake data, penting kanggo nampilake ing format sing gampang dipantau, nggawe keputusan lan nambah layanan sing ditawakake. Ing makalah iki, kita nggunakake tumpukan telemetri sing dumadi saka Telegraf, InfluxDB, lan Grafana. Tumpukan telemetri iki ngumpulake data nggunakake model push. Model narik tradisional akeh sumber daya, mbutuhake intervensi manual, lan bisa uga kalebu kesenjangan informasi ing data sing diklumpukake. Model push ngatasi watesan kasebut kanthi ngirim data kanthi ora sinkron. Padha enrich data kanthi nggunakake pangguna-loropaken tags lan jeneng. Sawise data ana ing format sing luwih bisa diwaca, kita nyimpen ing basis data lan digunakake ing visualisasi interaktif web aplikasi kanggo nganalisa jaringan. Gambar. 1 nuduhake carane tumpukan iki dirancang kanggo ngumpulake data, panyimpenan, lan visualisasi sing efisien, saka piranti jaringan sing nyurung data menyang kolektor menyang data sing ditampilake ing dashboard kanggo dianalisis.
Tumpukan TIG
Kita nggunakake server Ubuntu kanggo nginstal kabeh piranti lunak kalebu tumpukan TIG.
telegraf
Kanggo ngumpulake data, kita nggunakake Telegraf ing server Ubuntu sing nganggo 22.04.2. Versi Telegraf sing mlaku ing demo iki yaiku 1.28.5.
Telegraf minangka agen server sing didorong plugin kanggo ngumpulake lan nglaporake metrik. Iku nggunakake prosesor plugins kanggo nambah lan normalake data. Output plugins digunakake kanggo ngirim data iki menyang macem-macem toko data. Ing dokumen iki kita nggunakake loro plugins: siji kanggo sensor openconfig lan liyane kanggo sensor asli Juniper.
InfluxDB
Kanggo nyimpen data ing basis data seri wektu, kita nggunakake InfluxDB. Plugin output ing Telegraf ngirim data menyang InfluxDB, sing nyimpen kanthi cara sing efisien banget. Kita nggunakake V1.8 amarga ora ana CLI saiki kanggo V2 lan ndhuwur.
Grafana
Grafana digunakake kanggo nggambarake data kasebut. Grafana narik data saka InfluxDB lan ngidini pangguna nggawe dashboard sing sugih lan interaktif. Ing kene, kita mbukak versi 10.2.2.
Konfigurasi Ing Ngalih
Kanggo ngleksanakake tumpukan iki, pisanan kita kudu ngonfigurasi switch kaya sing ditampilake ing Gambar 2. Kita wis nggunakake port 50051. Port apa wae bisa digunakake ing kene. Mlebu menyang saklar QFX lan tambahake konfigurasi ing ngisor iki.
Cathetan: Konfigurasi iki kanggo labs/POCs amarga tembung sandhi dikirim ing teks sing cetha. Gunakake SSL kanggo nyegah iki.
Lingkungan
Nginx
Iki dibutuhake yen sampeyan ora bisa mbukak port sing di-host Grafana. Langkah sabanjure yaiku nginstal nginx ing server Ubuntu kanggo dadi agen proxy mbalikke. Sawise nginx diinstal, tambahake garis sing ditampilake ing Gambar 4 menyang file "standar" lan pindhah file saka /etc/nginx menyang /etc/nginx/sites-enabled.
Priksa manawa firewall disetel kanggo menehi akses lengkap menyang layanan nginx kaya sing ditampilake ing Gambar 5.
Sawise nginx diinstal lan owah-owahan sing dibutuhake, kita kudu bisa ngakses Grafana saka a web browser kanthi nggunakake alamat IP server Ubuntu ing ngendi kabeh piranti lunak wis diinstal.
Ana kesalahan cilik ing Grafana sing ora ngidini sampeyan ngreset sandhi standar. Gunakake langkah-langkah iki yen sampeyan nemoni masalah iki.
Langkah-langkah sing kudu ditindakake ing server Ubuntu kanggo nyetel sandhi ing Grafana:
- Pindhah menyang /var/lib/grafana/grafana.db
- Instal sqlite3
o sudo apt nginstal sqlite3 - Jalanake perintah iki ing terminal sampeyan
o sqlite3 grafana.db - Sqlite command prompt mbukak; mbukak pitakon ing ngisor iki:
> mbusak saka pangguna ngendi login = 'admin' - Wiwiti maneh grafana lan ketik admin minangka jeneng pangguna lan sandhi. Iki njaluk sandhi anyar.
Sawise kabeh piranti lunak wis diinstal, gawe file konfigurasi ing Telegraf sing bakal mbantu narik data telemetri saka saklar lan push menyang InfluxDB.
Openconfig Sensor Plugin
Ing server Ubuntu, sunting file /etc/telegraf/telegraf.conf kanggo nambah kabeh sing dibutuhake plugins lan sensor. Kanggo sensor openconfig, kita nggunakake plugin gNMI sing ditampilake ing Gambar 6. Kanggo tujuan demo, tambahake jeneng host minangka "spine1", nomer port "50051" sing digunakake kanggo gRPC, jeneng pangguna lan sandhi switch, lan nomer detik kanggo nelpon maneh yen gagal.
Ing stanza langganan, tambahake jeneng unik, "cpu" kanggo sensor tartamtu iki, jalur sensor, lan interval wektu kanggo njupuk data iki saka saklar. Tambah inputs.gnmi lan inputs.gnmi.subscription sing padha kanggo kabeh sensor konfigurasi sing mbukak. (Gambar 6)
Plugin Sensor Asli
Iki minangka plugin antarmuka telemetri Juniper sing digunakake kanggo sensor asli. Ing file telegraf.conf sing padha, tambahake input plugin sensor native.jti_openconfig_telemetry ing ngendi kolom meh padha karo openconfig. Gunakake ID klien unik kanggo saben sensor; kene, kita nggunakake "telegraf3". Jeneng unik sing digunakake ing kene kanggo sensor iki yaiku "mem" (Gambar 7).
Pungkasan, tambahake plugin output outputs.influxdb kanggo ngirim data sensor iki menyang InfluxDB. Ing kene, database kasebut dijenengi "telegraf" kanthi jeneng pangguna minangka "influx" lan tembung sandi "influxdb" (Gambar 8).
Sawise sampeyan nyunting file telegraf.conf, miwiti maneh layanan telegraf. Saiki, priksa CLI InfluxDB kanggo mesthekake yen pangukuran digawe kanggo kabeh sensor unik. Ketik "influx" kanggo ngetik CLI InfluxDB.
Kaya sing katon ing Gambar. 9, ketik pituduh influxDB lan gunakake database "telegraf". Kabeh jeneng unik sing diwenehake kanggo sensor kasebut minangka pangukuran.
Kanggo ndeleng output saka siji pangukuran, mung kanggo mesthekake yen file telegraf bener lan sensor bisa digunakake, gunakake printah "pilih * saka watesan cpu 1" kaya sing dituduhake ing Gambar 10.
Saben owah-owahan digawe menyang file telegraf.conf, pesthekake kanggo mungkasi InfluxDB, miwiti maneh Telegraf, banjur miwiti InfluxDB.
Mlebu menyang Grafana saka browser lan nggawe dashboard sawise mesthekake yen data diklumpukake kanthi bener.
Pindhah menyang Sambungan > InfuxDB > Tambah sumber data anyar.
- Menehi jeneng kanggo sumber data iki. Ing demo iki "test-1".
- Ing stanza HTTP, gunakake IP server Ubuntu lan port 8086.
- Ing rincian InfluxDB, gunakake jeneng database sing padha, "telegraf," lan wenehi jeneng pangguna lan sandhi server Ubuntu.
- Klik Simpen & tes. Priksa manawa sampeyan ndeleng pesen, "sukses".
- Sawise sumber data kasil ditambahake, pindhah menyang Dashboards banjur klik Anyar. Ayo nggawe sawetara dashboard sing penting kanggo beban kerja AI/ML ing mode editor.
Examples Saka Grafik Sensor
Ing ngisor iki sing examples saka sawetara counter utama sing penting kanggo ngawasi jaringan AI / ML.
Persentagpemanfaatan kanggo antarmuka ingress et-0/0/0 ing spine-1
- Pilih sumber data minangka test-1.
- Ing bagean FROM, pilih pangukuran minangka "antarmuka". Iki minangka jeneng unik sing digunakake kanggo jalur sensor iki.
- Ing bagean WHERE, pilih piranti::tag, lan ing tag Nilai, pilih hostname switch, yaiku spine1.
- Ing bagean PILIH, pilih cabang sensor sing pengin dipantau; ing kasus iki pilih "field (/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)". Saiki ing bagean sing padha, klik "+" lan tambahake math pitungan iki (/50000000000 * 100). We Sejatine ngetung persentage nggunakake antarmuka 400G.
- Priksa manawa FORMAT minangka "seri-wektu," lan jeneng grafik ing bagean ALIAS.
Peak buffer pendhudhukan kanggo sembarang antrian
- Pilih sumber data minangka test-1.
- Ing bagean FROM, pilih pangukuran minangka "buffer."
- Ing bagean WHERE, ana telung kolom sing kudu diisi. Pilih piranti::tag, lan ing tag Nilai pilih jeneng host switch (yaiku spine-1); LAN pilih /cos/interfaces/interface/@name::tag lan pilih antarmuka (ie et- 0/0/0); Lan pilih antrian uga, /cos/interfaces/interface/queues/queue/@queue::tag lan pilih nomer antrian 4.
- Ing bagean PILIH, pilih cabang sensor sing pengin dipantau; Ing kasus iki, pilih "field(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy)."
- Priksa manawa FORMAT minangka "seri-wektu" lan jeneng grafik ing bagean ALIAS.
Sampeyan bisa ngumpulake data kanggo macem-macem antarmuka ing grafik sing padha kaya sing katon ing Figure 17 kanggo et-0/0/0, et-0/0/1, et-0/0/2 etc.
PFC lan ECN tegese turunan
Kanggo nemokake turunan rata-rata (prabédan ing nilai ing sawetara wektu), gunakake mode query mentah.
Iki minangka pitakon influx sing digunakake kanggo nemokake turunan rata-rata ing antarane rong nilai PFC ing et-0/0/0 saka Spine-1 ing sec.
PILIH turunan(tegese(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') LAN $timeFilter GROUP BY time($interval)
PILIH turunan(tegese(“/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') LAN $timeFilter GROUP BY time($interval)
Kesalahan sumber input tegese turunan
Pitakonan mentah kanggo kesalahan sumber daya tegese turunan yaiku:
PILIH turunan(tegese(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) Saka “interface” WHERE (“device”::tag = 'Spine-1') LAN $timeFilter GROUP BY time($interval)
Tetes buntut tegese turunan
Pitakonan mentah kanggo tetes buntut tegese turunan yaiku:
SELECT derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s) FROM “buer” WHERE (“device”::tag = 'Leaf-1' LAN "/cos/interfaces/interface/@name"::tag = 'et-0/0/0' LAN "/cos/interfaces/interface/queues/queue/@queue"::tag = '4') LAN $timeFilter GROUP BY time($__interval) isi(null)
panggunaan CPU
- Pilih sumber data minangka test-1.
- Ing bagean FROM, pilih pangukuran minangka "newcpu"
- Ing WHERE, ana telung kolom sing kudu diisi. Pilih piranti::tag lan ing tag Nilai pilih hostname switch (yaiku spine-1). Lan ing /komponen/komponen/properti/properti/jeneng:tag, lan pilih cpuutilization-total AND ing jeneng::tag pilih RE0.
- Ing bagean PILIH, pilih cabang sensor sing pengin dipantau. Ing kasus iki, pilih "bidang (state/value)".
Pitakonan mentah kanggo nemokake turunan non-negatif saka tetes buntut kanggo pirang-pirang switch ing sawetara antarmuka ing bit/sec.
PILIH non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 FROM “buer” WHERE (perangkat::tag =~ /^Spine-[1-2]$/) lan (“/cos/interfaces/interface/@name”::tag =~ /et-0\/0\/[0-9]/ utawa “/cos/interfaces/interface/@name”::tag=~/et-0\/0\/1[0-5]/) LAN $timeFilter GROUP Miturut wektu($__interval), piranti::tag isi (null)
Iki minangka sawetara mantanamples saka grafik sing bisa digawe kanggo ngawasi jaringan AI / ML.
Ringkesan
Makalah iki nggambarake cara narik data telemetri lan nggambarake kanthi nggawe grafik. Makalah iki khusus ngomong babagan sensor AI/ML, native lan openconfig nanging persiyapan bisa digunakake kanggo kabeh jinis sensor. Kita uga wis nyakup solusi kanggo macem-macem masalah sing sampeyan bisa ngadhepi nalika nggawe persiyapan. Langkah-langkah lan output sing digambarake ing kertas iki khusus kanggo versi tumpukan TIG sing kasebut sadurunge. Iku bisa diganti gumantung versi piranti lunak, sensor lan versi Junos.
Referensi
Juniper Yang Data Model Explorer kanggo kabeh opsi sensor
https://apps.juniper.net/ydm-explorer/
Forum Openconfig kanggo sensor openconfig
https://www.openconfig.net/projects/models/
Kantor Pusat Perusahaan lan Penjualan
Juniper Networks, Inc.
1133 Cara Inovasi
Sunnyvale, CA 94089 AS
Telpon: 888. JUNIPER (888.586.4737)
utawa +1.408.745.2000
Fax: +1.408.745.2100
www.juniper.net
Markas APAC lan EMEA
Juniper Networks International BV
Boeing Avenue 240
1119 PZ Schiphol-Rijk
Amsterdam, Walanda
Telpon: +31.207.125.700
Fax: +31.207.125.701
Hak Cipta 2023 Juniper Networks. Inc Ail hak dilindhungi undhang-undhang. Juniper Networks, logo Juniper Networks, Juniper, Junos, lan merek dagang liyane minangka merek dagang kadhaptar saka Juniper Networks. inc. lan/utawa afiliasi ing Amerika Serikat lan negara liya. Jeneng liya bisa uga minangka merek dagang saka sing nduweni. Juniper Networks ora tanggung jawab kanggo akurasi ing dokumen iki. Juniper Networks nduweni hak kanggo ngganti. ngowahi. transfer, utawa mbenakake publikasi iki tanpa kabar.
Kirim tanggapan menyang: design-center-comments@juniper.net V1.0/240807/ejm5-telemetri-junos-ai-ml
Dokumen / Sumber Daya
![]() |
Juniper NETWORKS Telemetry In Junos kanggo AI ML Workloads Software [pdf] Pandhuan pangguna Telemetri Ing Junos kanggo AI ML Workloads Software, Junos kanggo AI ML Workloads Software, AI ML Workloads Software, Workloads Software, Software |