Telemetry sa Junos para sa AI/ML Workloads
May-akda: Shalini Mukherjee
Panimula
Dahil nangangailangan ang AI cluster traffic ng mga lossless network na may mataas na throughput at mababang latency, isang kritikal na elemento ng AI network ay ang koleksyon ng monitoring data. Binibigyang-daan ng Junos Telemetry ang granular na pagsubaybay sa mga pangunahing tagapagpahiwatig ng pagganap, kabilang ang mga threshold at counter para sa pamamahala ng congestion at pagbabalanse ng load ng trapiko. Sinusuportahan ng mga session ng gRPC ang streaming ng data ng telemetry. Ang gRPC ay isang moderno, open-source, mataas na performance na framework na binuo sa HTTP/2 transport. Binibigyan nito ng kapangyarihan ang mga kakayahan ng native na bidirectional streaming at may kasamang flexible na custom-metadata sa mga header ng kahilingan. Ang unang hakbang sa telemetry ay ang malaman kung anong data ang dapat kokolektahin. Maaari naming suriin ang data na ito sa iba't ibang mga format. Kapag nakolekta na namin ang data, mahalagang ipakita ito sa isang format na madaling subaybayan, gumawa ng mga desisyon at pagbutihin ang serbisyong inaalok. Sa papel na ito, gumagamit kami ng telemetry stack na binubuo ng Telegraf, InfluxDB, at Grafana. Kinokolekta ng telemetry stack na ito ang data gamit ang push model. Ang mga tradisyonal na modelo ng pull ay masinsinang mapagkukunan, nangangailangan ng manu-manong interbensyon, at maaaring magsama ng mga puwang ng impormasyon sa data na kinokolekta nila. Nalalampasan ng mga push model ang mga limitasyong ito sa pamamagitan ng paghahatid ng data nang asynchronous. Pinayaman nila ang data sa pamamagitan ng paggamit ng user-friendly tags at mga pangalan. Kapag ang data ay nasa mas nababasang format, iniimbak namin ito sa isang database at ginagamit ito sa isang interactive na visualization web application para sa pagsusuri ng network. Pigura. Ipinapakita sa amin ng 1 kung paano idinisenyo ang stack na ito para sa mahusay na pangongolekta, storage, at visualization ng data, mula sa mga network device na nagtutulak ng data sa collector hanggang sa data na ipinapakita sa mga dashboard para sa pagsusuri.
TIG Stack
Gumamit kami ng Ubuntu server para i-install ang lahat ng software kasama ang TIG stack.
Telegraph
Upang mangolekta ng data, ginagamit namin ang Telegraf sa isang Ubuntu server na tumatakbo sa 22.04.2. Ang bersyon ng Telegraf na tumatakbo sa demo na ito ay 1.28.5.
Ang Telegraf ay isang ahente ng server na hinimok ng plugin para sa pagkolekta at pag-uulat ng mga sukatan. Gumagamit ito ng processor plugins para pagyamanin at gawing normal ang datos. Ang output plugins ay ginagamit upang ipadala ang data na ito sa iba't ibang mga data store. Sa dokumentong ito ginagamit namin ang dalawa plugins: isa para sa openconfig sensor at ang isa para sa Juniper native sensors.
InuxDB
Upang iimbak ang data sa isang database ng serye ng oras, ginagamit namin ang InfluxDB. Ang output plugin sa Telegraf ay nagpapadala ng data sa InfluxDB, na nag-iimbak nito sa isang napakahusay na paraan. Ginagamit namin ang V1.8 dahil walang CLI para sa V2 at mas mataas.
Grafana
Ginagamit ang Grafana upang mailarawan ang data na ito. Kinukuha ng Grafana ang data mula sa InuxDB at pinapayagan ang mga user na lumikha ng mayaman at interactive na mga dashboard. Dito, pinapatakbo namin ang bersyon 10.2.2.
Configuration Sa Switch
Upang ipatupad ang stack na ito, kailangan muna nating i-configure ang switch tulad ng ipinapakita sa Figure 2. Ginamit namin ang port 50051. Maaaring gamitin ang anumang port dito. Mag-log in sa QFX switch at idagdag ang sumusunod na configuration.
Tandaan: Ang pagsasaayos na ito ay para sa mga lab/POC dahil ang password ay ipinadala sa malinaw na teksto. Gumamit ng SSL upang maiwasan ito.
Kapaligiran
Nginx
Ito ay kinakailangan kung hindi mo mailantad ang port kung saan naka-host ang Grafana. Ang susunod na hakbang ay ang pag-install ng nginx sa Ubuntu server upang magsilbi bilang isang reverse proxy agent. Kapag na-install na ang nginx, idagdag ang mga linyang ipinapakita sa Figure 4 sa "default" na file at ilipat ang file mula sa /etc/nginx sa /etc/nginx/sites-enabled.
Siguraduhin na ang firewall ay na-adjust upang magbigay ng ganap na access sa serbisyo ng nginx tulad ng ipinapakita sa Figure 5.
Kapag na-install na ang nginx at nagawa ang mga kinakailangang pagbabago, dapat nating ma-access ang Grafana mula sa a web browser sa pamamagitan ng paggamit ng IP address ng Ubuntu server kung saan naka-install ang lahat ng software.
Mayroong maliit na glitch sa Grafana na hindi nagpapahintulot sa iyo na i-reset ang default na password. Gamitin ang mga hakbang na ito kung nararanasan mo ang isyung ito.
Mga hakbang na isasagawa sa Ubuntu server para itakda ang password sa Grafana:
- Pumunta sa /var/lib/grafana/grafana.db
- I-install ang sqlite3
o sudo apt install sqlite3 - Patakbuhin ang command na ito sa iyong terminal
o sqlite3 grafana.db - Magbubukas ang command prompt ng Sqlite; patakbuhin ang sumusunod na query:
>tanggalin mula sa user kung saan login='admin' - I-restart ang grafana at i-type ang admin bilang username at password. Nag-prompt ito para sa isang bagong password.
Kapag na-install na ang lahat ng software, likhain ang config file sa Telegraf na tutulong sa paghila ng data ng telemetry mula sa switch at itulak ito sa InfluxDB.
Openconfig Sensor Plugin
Sa Ubuntu server, i-edit ang /etc/telegraf/telegraf.conf file para idagdag ang lahat ng kailangan plugins at mga sensor. Para sa mga openconfig sensor, ginagamit namin ang gNMI plugin na ipinapakita sa Figure 6. Para sa mga layunin ng demo, idagdag ang hostname bilang "spine1", ang port number na "50051" na ginagamit para sa gRPC, ang username at password ng switch, at ang numero ng mga segundo para sa muling pagdayal kung sakaling mabigo.
Sa stanza ng subscription, magdagdag ng natatanging pangalan, "cpu" para sa partikular na sensor na ito, ang path ng sensor, at ang agwat ng oras para sa pagkuha ng data na ito mula sa switch. Idagdag ang parehong plugin inputs.gnmi at inputs.gnmi.subscription para sa lahat ng open config sensors. (Larawan 6)
Native Sensor Plugin
Ito ay isang Juniper telemetry interface plugin na ginagamit para sa mga native na sensor. Sa parehong telegraf.conf file, idagdag ang native sensor plugin inputs.jti_openconfig_telemetry kung saan ang mga field ay halos kapareho ng openconfig. Gumamit ng natatanging client ID para sa bawat sensor; dito, ginagamit namin ang "telegraf3". Ang natatanging pangalan na ginamit dito para sa sensor na ito ay "mem" (Figure 7).
Panghuli, magdagdag ng output plugin outputs.influxdb para ipadala ang data ng sensor na ito sa InuxDB. Dito, ang database ay pinangalanang “telegraf” na may username bilang “influx” at password na “inuxdb” (Figure 8).
Kapag na-edit mo na ang telegraf.conf file, i-restart ang serbisyo ng telegraf. Ngayon, tingnan ang InfluxDB CLI upang matiyak kung ang mga sukat ay ginawa para sa lahat ng natatanging sensor. I-type ang “influx” para ipasok ang InfluxDB CLI.
Gaya ng nakikita sa Figure. 9, ipasok ang influxDB prompt at gamitin ang database na "telegraf". Ang lahat ng mga natatanging pangalan na ibinigay sa mga sensor ay nakalista bilang mga sukat.
Para makita ang output ng alinmang sukat, para lang matiyak na tama ang telegraf file at gumagana ang sensor, gamitin ang command na “select * from cpu limit 1” gaya ng ipinapakita sa Figure 10.
Sa tuwing may gagawing pagbabago sa telegraf.conf file, tiyaking ihinto ang InfluxDB, i-restart ang Telegraf, at pagkatapos ay simulan ang InfluxDB.
Mag-log on sa Grafana mula sa browser at lumikha ng mga dashboard pagkatapos matiyak na ang data ay nakolekta nang tama.
Pumunta sa Mga Koneksyon > InfuxDB > Magdagdag ng bagong data source.
- Bigyan ng pangalan ang data source na ito. Sa demo na ito ito ay "test-1".
- Sa ilalim ng HTTP stanza, gamitin ang Ubuntu server IP at 8086 port.
- Sa mga detalye ng InfluxDB, gamitin ang parehong pangalan ng database, "telegraf," at ibigay ang username at password ng server ng Ubuntu.
- I-click ang I-save at subukan. Tiyaking nakikita mo ang mensahe, "matagumpay".
- Kapag ang data source ay matagumpay na naidagdag, pumunta sa Dashboards at i-click ang Bago. Gumawa tayo ng ilang dashboard na mahalaga para sa mga workload ng AI/ML sa editor mode.
Examples Ng Mga Sensor Graph
Ang mga sumusunod ay exampilang mga pangunahing counter na mahalaga para sa pagsubaybay sa isang AI/ML network.
Porsyentotage utilization para sa isang ingress interface et-0/0/0 sa spine-1
- Piliin ang data source bilang test-1.
- Sa seksyong FROM, piliin ang pagsukat bilang "interface". Ito ang natatanging pangalan na ginamit para sa path ng sensor na ito.
- Sa seksyong WHERE, piliin ang device::tag, at sa tag value, piliin ang hostname ng switch, iyon ay, spine1.
- Sa seksyong PUMILI, piliin ang sangay ng sensor na gusto mong subaybayan; sa kasong ito, piliin ang “field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)”. Ngayon sa parehong seksyon, mag-click sa "+" at idagdag ang matematika ng pagkalkula (/50000000000 * 100). Kami ay karaniwang kinakalkula ang porsyentotage paggamit ng isang 400G interface.
- Tiyaking ang FORMAT ay "time-serye," at pangalanan ang graph sa seksyong ALIAS.
Pinakamataas na buffer occupancy para sa anumang pila
- Piliin ang data source bilang test-1.
- Sa seksyong FROM, piliin ang pagsukat bilang "buffer."
- Sa seksyong WHERE, mayroong tatlong patlang na dapat punan. Pumili ng device::tag, at sa tag value piliin ang hostname ng switch (ie spine-1); AT piliin ang /cos/interfaces/interface/@name::tag at piliin ang interface (ibig sabihin et- 0/0/0); AT piliin din ang pila, /cos/interfaces/interface/queues/queue/@queue::tag at piliin ang queue number 4.
- Sa seksyong PUMILI, piliin ang sangay ng sensor na gusto mong subaybayan; sa kasong ito, piliin ang “field(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy).”
- Siguraduhin na ang FORMAT ay "time-serye" at pangalanan ang graph sa seksyong ALIAS.
Maaari kang mag-collate ng data para sa maraming interface sa parehong graph tulad ng nakikita sa Figure 17 para sa et-0/0/0, et-0/0/1, et-0/0/2 atbp.
Ang ibig sabihin ng PFC at ECN ay derivative
Para sa paghahanap ng mean derivative (ang pagkakaiba sa halaga sa loob ng isang hanay ng oras), gamitin ang raw query mode.
Ito ang influx na query na ginamit namin upang mahanap ang mean derivative sa pagitan ng dalawang halaga ng PFC sa et-0/0/0 ng Spine-1 sa isang segundo.
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) MULA SA “interface” WHERE (“device”::tag = 'Spine-1') AT $timeFilter GROUP BY time($interval)
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts”), 1s) MULA SA “interface” WHERE (“device”::tag = 'Spine-1') AT $timeFilter GROUP BY time($interval)
Ang mga error sa mapagkukunan ng input ay nangangahulugang derivative
Ang ibig sabihin ng raw na query para sa mga error sa mapagkukunan ay derivative ay:
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) MULA SA “interface” WHERE (“device”::tag = 'Spine-1') AT $timeFilter GROUP BY time($interval)
Ang tail drops ay nangangahulugan ng derivative
Ang raw query para sa tail drops mean derivative ay:
PUMILI ng derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s) MULA SA “buffer” WHERE (“device”::tag = 'Leaf-1' AT "/cos/interfaces/interface/@name"::tag = 'et-0/0/0' AT “/cos/interfaces/interface/queues/queue/@queue”::tag = '4') AT $timeFilter GROUP BY time($__interval) fill(null)
Paggamit ng CPU
- Piliin ang data source bilang test-1.
- Sa seksyong FROM, piliin ang sukat bilang "newcpu"
- Sa WHERE, mayroong tatlong patlang na dapat punan. Pumili ng device::tag at sa tag value piliin ang hostname ng switch (ie spine-1). AT sa /components/component/properties/property/name:tag, at piliin ang cpuutilization-total AT sa pangalan::tag piliin ang RE0.
- Sa seksyong PUMILI, piliin ang sangay ng sensor na gusto mong subaybayan. Sa kasong ito, piliin ang "patlang(estado/halaga)".
Ang raw query para sa paghahanap ng non-negative na derivative ng tail drops para sa maraming switch sa maraming interface sa bits/sec.
PUMILI non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 MULA SA “buffer” WHERE (device::tag =~ /^Spine-[1-2]$/) at (“/cos/interfaces/interface/@name”::tag =~ /et-0\/0\/[0-9]/ o “/cos/interfaces/interface/@name”::tag=~/et-0\/0\/1[0-5]/) AT $timeFilter GROUP BY time($__interval),device::tag punan (null)
Ito ang ilan sa mga exampkaunti sa mga graph na maaaring gawin para sa pagsubaybay sa isang AI/ML network.
Buod
Inilalarawan ng papel na ito ang paraan ng paghila ng data ng telemetry at pagpapakita nito sa pamamagitan ng paglikha ng mga graph. Partikular na pinag-uusapan ng papel na ito ang tungkol sa mga sensor ng AI/ML, parehong native at openconfig ngunit maaaring gamitin ang setup para sa lahat ng uri ng sensor. Nagsama rin kami ng mga solusyon para sa maraming isyu na maaari mong kaharapin habang ginagawa ang setup. Ang mga hakbang at output na inilalarawan sa papel na ito ay partikular sa mga bersyon ng TIG stack na binanggit kanina. Ito ay maaaring magbago depende sa bersyon ng software, ang mga sensor at ang bersyon ng Junos.
Mga sanggunian
Juniper Yang Data Model Explorer para sa lahat ng opsyon sa sensor
https://apps.juniper.net/ydm-explorer/
Openconfig forum para sa mga openconfig sensor
https://www.openconfig.net/projects/models/
Corporate at Sales Headquarters
Juniper Networks, Inc.
1133 Paraan ng Pagbabago
Sunnyvale, CA 94089 USA
Telepono: 888. JUNIPER (888.586.4737)
o +1.408.745.2000
Fax: +1.408.745.2100
www.juniper.net
APAC at EMEA Headquarters
Juniper Networks International BV
Boeing Avenue 240
1119 PZ Schiphol-Rijk
Amsterdam, Netherlands
Telepono: +31.207.125.700
Fax: +31.207.125.701
Copyright 2023 Juniper Networks. Inc. Ang mga karapatan ay nakalaan. Ang Juniper Networks, ang logo ng Juniper Networks, Juniper, Junos, at iba pang mga trademark ay mga rehistradong trademark ng Juniper Networks. inc. at/o mga kaakibat nito sa Estados Unidos at iba pang mga bansa. Ang ibang mga pangalan ay maaaring mga trademark ng kani-kanilang mga may-ari. Ang Juniper Networks ay walang pananagutan para sa anumang mga kamalian sa dokumentong ito. Inilalaan ng Juniper Networks ang karapatang magbago. baguhin. ilipat, o kung hindi man ay baguhin ang publikasyong ito nang walang abiso.
Magpadala ng feedback sa: design-center-comments@juniper.net V1.0/240807/ejm5-telemetry-junos-ai-ml
Mga Dokumento / Mga Mapagkukunan
![]() |
Juniper NETWORKS Telemetry Sa Junos para sa AI ML Workloads Software [pdf] Gabay sa Gumagamit Telemetry Sa Junos para sa AI ML Workloads Software, Junos para sa AI ML Workloads Software, AI ML Workloads Software, Workloads Software, Software |