Telemetria a Junosban AI/ML munkaterhelésekhez
Szerző: Shalini Mukherjee
Bevezetés
Mivel az AI-fürt forgalom nagy áteresztőképességű és alacsony késleltetésű veszteségmentes hálózatokat igényel, az AI-hálózat kritikus eleme a megfigyelési adatok gyűjtése. A Junos Telemetry lehetővé teszi a kulcsfontosságú teljesítménymutatók részletes megfigyelését, beleértve a torlódáskezeléshez és a forgalmi terheléselosztáshoz szükséges küszöbértékeket és számlálókat. A gRPC-munkamenetek támogatják a telemetriai adatok streamelését. A gRPC egy modern, nyílt forráskódú, nagy teljesítményű keretrendszer, amely HTTP/2 átvitelre épül. Felhatalmazza a natív kétirányú streamelési képességeket, és rugalmas egyéni metaadatokat tartalmaz a kérésfejlécekben. A telemetria kezdeti lépése annak ismerete, hogy milyen adatokat kell gyűjteni. Ezután ezeket az adatokat különféle formátumokban elemezhetjük. Miután összegyűjtöttük az adatokat, fontos, hogy azokat olyan formátumban mutassuk be, amely könnyen nyomon követhető, döntéseket hozhat és javítható a kínált szolgáltatás. Ebben a cikkben a Telegrafból, az InfluxDB-ből és a Grafana-ból álló telemetriai stacket használjuk. Ez a telemetriai verem push modell segítségével gyűjt adatokat. A hagyományos húzómodellek erőforrás-igényesek, kézi beavatkozást igényelnek, és információhiányokat tartalmazhatnak az általuk gyűjtött adatokban. A push modellek az adatok aszinkron továbbításával lépik túl ezeket a korlátokat. Felhasználóbarát használatával gazdagítják az adatokat tags és nevek. Miután az adatok olvashatóbb formátumba kerültek, adatbázisban tároljuk és interaktív vizualizációban használjuk fel web alkalmazás a hálózat elemzésére. Ábra. Az 1. ábra bemutatja, hogyan tervezték ezt a verem hatékony adatgyűjtést, tárolást és megjelenítést, a hálózati eszközöktől, amelyek adatokat továbbítanak a gyűjtőbe, egészen a műszerfalakon elemzés céljából megjelenített adatokig.
TIG Stack
Egy Ubuntu szervert használtunk az összes szoftver telepítéséhez, beleértve a TIG veremet is.
Távíró
Az adatgyűjtéshez a Telegrafot használjuk egy Ubuntu szerveren, amelyen 22.04.2 fut. A demóban futó Telegraf verzió 1.28.5.
A Telegraf egy plugin-vezérelt szerverügynök a mutatók összegyűjtésére és jelentésére. Processzort használ plugins az adatok gazdagításához és normalizálásához. A kimenet plugins arra szolgálnak, hogy ezeket az adatokat különböző adattárakba küldjék. Ebben a dokumentumban kettőt használunk plugins: az egyik az openconfig érzékelőkhöz, a másik a Juniper natív érzékelőkhöz.
InfluxDB
Az adatok idősoros adatbázisban való tárolásához az InfluxDB-t használjuk. A Telegraf kimeneti bővítménye elküldi az adatokat az InfluxDB-nek, amely rendkívül hatékony módon tárolja azokat. V1.8-at használunk, mivel a V2 és újabb verziókhoz nincs CLI.
Grafana
A Grafana segítségével jeleníthetők meg ezek az adatok. A Grafana lekéri az adatokat az InfluxDB-ből, és lehetővé teszi a felhasználók számára, hogy gazdag és interaktív irányítópultokat hozzanak létre. Itt a 10.2.2-es verziót futtatjuk.
Konfiguráció a kapcsolón
A verem megvalósításához először konfigurálnunk kell a kapcsolót a 2. ábrán látható módon. Az 50051-es portot használtuk. Itt bármelyik port használható. Jelentkezzen be a QFX kapcsolóba, és adja hozzá a következő konfigurációt.
Jegyzet: Ez a konfiguráció laboratóriumokra/POC-okra vonatkozik, mivel a jelszó tiszta szövegben kerül továbbításra. Ennek elkerülése érdekében használjon SSL-t.
Környezet
Nginx
Erre akkor van szükség, ha nem tudja felfedni azt a portot, amelyen a Grafana található. A következő lépés az nginx telepítése az Ubuntu kiszolgálóra, hogy fordított proxy ügynökként szolgáljon. Az nginx telepítése után adja hozzá a 4. ábrán látható sorokat az „alapértelmezett” fájlhoz, és helyezze át a fájlt az /etc/nginx mappából az /etc/nginx/sites-enabled mappába.
Győződjön meg arról, hogy a tűzfal úgy van beállítva, hogy teljes hozzáférést biztosítson az nginx szolgáltatáshoz, az 5. ábrán látható módon.
Az nginx telepítése és a szükséges módosítások elvégzése után el kell érnünk a Grafana-t a web böngésző annak az Ubuntu szervernek az IP-címével, amelyre az összes szoftver telepítve van.
Van egy kis hiba a Grafana-ban, amely nem teszi lehetővé az alapértelmezett jelszó visszaállítását. Ha ezzel a problémával találkozik, használja ezeket a lépéseket.
Az Ubuntu szerveren végrehajtandó lépések a Grafana jelszó beállításához:
- Lépjen a /var/lib/grafana/grafana.db oldalra
- Az sqllite3 telepítése
o sudo apt install sqlite3 - Futtassa ezt a parancsot a terminálján
o sqlite3 grafana.db - Megnyílik az Sqlite parancssor; futtassa a következő lekérdezést:
>töröl a felhasználóból ahol login='admin' - Indítsa újra a grafana-t, és írja be az admin parancsot felhasználónévként és jelszóként. Új jelszót kér.
Az összes szoftver telepítése után hozza létre a konfigurációs fájlt a Telegrafban, amely segít a telemetriai adatok kihúzásában a kapcsolóról, és az InfluxDB-be való áthelyezéshez.
Openconfig Sensor Plugin
Az Ubuntu szerveren szerkessze az /etc/telegraf/telegraf.conf fájlt az összes szükséges hozzáadásához plugins és érzékelők. Az openconfig érzékelőkhöz a 6. ábrán látható gNMI beépülő modult használjuk. Demo célból adja hozzá a gazdagép nevét „spine1”-ként, a gRPC-hez használt „50051” portszámot, a kapcsoló felhasználónevét és jelszavát, valamint a számot. másodperc az újratárcsázáshoz hiba esetén.
Az előfizetés szakaszában adjon hozzá egy egyedi nevet, a „cpu”-t az adott érzékelőhöz, az érzékelő útvonalát és az adatok kapcsolóról történő lekéréséhez szükséges időintervallumot. Adja hozzá ugyanazt az inputs.gnmi és inputs.gnmi.subscription bővítményt az összes nyitott konfigurációs érzékelőhöz. (6. ábra)
Natív érzékelő beépülő modul
Ez egy Juniper telemetriai interfész bővítmény, amelyet natív érzékelőkhöz használnak. Ugyanabban a telegraf.conf fájlban adja hozzá az inputs.jti_openconfig_telemetry natív szenzorbővítményt, ahol a mezők majdnem ugyanazok, mint az openconfig. Használjon egyedi ügyfél-azonosítót minden érzékelőhöz; itt a „telegraf3”-at használjuk. A szenzor itt használt egyedi neve „mem” (7. ábra).
Végül adjon hozzá egy outputs.influxdb kimeneti bővítményt, hogy elküldje ezeket az érzékelőadatokat az InfluxDB-nek. Itt az adatbázis neve „telegraf”, a felhasználónév „influx” és a jelszó „influxdb” (8. ábra).
Miután szerkesztette a telegraf.conf fájlt, indítsa újra a telegraf szolgáltatást. Most ellenőrizze az InfluxDB CLI-t, hogy megbizonyosodjon arról, hogy az összes egyedi érzékelőhöz létrejöttek-e mérések. Írja be az „influx” kifejezést az InfluxDB CLI megadásához.
ábrán látható módon. 9, írja be az influxDB promptot, és használja a „telegraf” adatbázist. Az érzékelőknek adott összes egyedi név mérésként szerepel.
Bármely mérés kimenetének megtekintéséhez, csak annak érdekében, hogy megbizonyosodjon arról, hogy a telegraf fájl megfelelő-e és az érzékelő működik, használja a „select * from cpu limit 1” parancsot a 10. ábrán látható módon.
Minden alkalommal, amikor módosítja a telegraf.conf fájlt, állítsa le az InfluxDB-t, indítsa újra a Telegraft, majd indítsa el az InfluxDB-t.
Jelentkezzen be a Grafana-ba a böngészőből, és hozzon létre irányítópultokat, miután megbizonyosodott arról, hogy az adatok gyűjtése megfelelő.
Nyissa meg a Kapcsolatok > InfuxDB > Új adatforrás hozzáadása menüpontot.
- Adjon nevet ennek az adatforrásnak. Ebben a demóban ez a „teszt-1”.
- A HTTP szakaszban használja az Ubuntu szerver IP-címét és 8086-os portját.
- Az InfluxDB részleteinél használja ugyanazt az adatbázisnevet, a „telegraf”-t, és adja meg az Ubuntu-kiszolgáló felhasználónevét és jelszavát.
- Kattintson a Mentés és tesztelés lehetőségre. Győződjön meg arról, hogy látja a „sikeres” üzenetet.
- Az adatforrás sikeres hozzáadása után lépjen az Irányítópultok elemre, és kattintson az Új gombra. Hozzunk létre néhány irányítópultot, amelyek elengedhetetlenek az AI/ML munkaterhelésekhez szerkesztő módban.
Examples Of Sensor Graphs
A következők plampnéhány fő számláló, amelyek elengedhetetlenek egy AI/ML hálózat megfigyeléséhez.
Százaléktage felhasználása egy et-0/0/0 bemeneti interfészhez a gerinc-1-en
- Válassza ki az adatforrást teszt-1-ként.
- A FROM részben válassza ki a mérést „interfészként”. Ez az érzékelő útvonalának egyedi neve.
- A WHERE részben válassza ki az eszközt::tag, és a tag értékét, válassza ki a kapcsoló gazdagépnevét, azaz a spine1-et.
- A KIVÁLASZTÁS részben válassza ki a figyelni kívánt szenzorágat; ebben az esetben válassza a „field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)” lehetőséget. Most ugyanabban a részben kattintson a „+” gombra, és adja hozzá ezt a számítási matematikát (/50000000000 * 100). Alapvetően a százalékot számoljuktage 400G interfész használata.
- Győződjön meg arról, hogy a FORMAT „idősoros”, és nevezze el a grafikont az ALIAS részben.
Csúcs pufferkihasználtság bármely sornál
- Válassza ki az adatforrást teszt-1-ként.
- A FROM részben válassza ki a mérést „puffer”-ként.
- A WHERE részben három mezőt kell kitölteni. Eszköz kiválasztása::tag, és a tag érték válassza ki a kapcsoló gazdagépnevét (pl. spine-1); ÉS válassza a /cos/interfaces/interface/@name::tag és válassza ki az interfészt (pl. et- 0/0/0); ÉS válassza ki a sort is, /cos/interfaces/interface/queues/queue/@queue::tag és válassza ki a 4-es sorszámot.
- A KIVÁLASZTÁS részben válassza ki a figyelni kívánt szenzorágat; ebben az esetben válassza a „field(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy)” lehetőséget.
- Győződjön meg arról, hogy a FORMAT „idősoros”, és nevezze el a grafikont az ALIAS részben.
Ugyanazon a grafikonon több interfész adatait is összeállíthatja, ahogy a 17. ábrán látható az et-0/0/0, et-0/0/1, et-0/0/2 stb.
A PFC és az ECN származékot jelent
Az átlagos derivált (az időtartományon belüli értékkülönbség) megtalálásához használja a nyers lekérdezési módot.
Ez az a beáramlási lekérdezés, amelyet a Spine-0 et-0/0/1 két PFC-értéke közötti átlagos derivált keresésére használtunk egy másodperc alatt.
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) FROM „interface” WHERE (“eszköz”::tag = 'Spine-1') ÉS $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 (“eszköz”::tag = 'Spine-1') ÉS $timeFilter GROUP BY time($interval)
A bemeneti erőforrás hibái származékot jelentenek
A nyers lekérdezés az erőforrás-hibák átlagának származéka a következő:
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) FROM „interface” WHERE (“eszköz”::tag = 'Spine-1') ÉS $timeFilter GROUP BY time($interval)
A farokcsepp származékot jelent
A farokejtések átlagának származéka nyers lekérdezése a következő:
SELECT származék(átlag("/cos/interfaces/interface/queues/queue/tailDropBytes"), 1s) FROM "puffer" WHERE ("eszköz"::tag = 'Leaf-1' ÉS "/cos/interfaces/interface/@name"::tag = 'et-0/0/0' ÉS "/cos/interfaces/interface/queues/queue/@queue"::tag = '4') ÉS $timeFilter GROUP BY time($__interval) fill(null)
CPU kihasználtság
- Válassza ki az adatforrást teszt-1-ként.
- A FROM részben válassza ki a mérést „newcpu”-ként
- A WHERE mezőben három mezőt kell kitölteni. Eszköz kiválasztása::tag és a tag érték válassza ki a kapcsoló gazdagépnevét (pl. spine-1). ÉS a /components/component/properties/property/name mappában:tag, és válassza ki a cpuutilization-total AND elemet a névben::tag válassza a RE0 lehetőséget.
- A KIVÁLASZTÁS részben válassza ki a figyelni kívánt szenzorágat. Ebben az esetben válassza a „mező(állapot/érték)” lehetőséget.
A nyers lekérdezés a több interfészen lévő több kapcsoló farokesésének nem-negatív származékának megkeresésére bit/mp-ben.
SELECT non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 FROM „puffer” WHERE (eszköz::tag =~ /^Spine-[1-2]$/) és ("/cos/interfaces/interface/@name"::tag =~ /et-0\/0\/[0-9]/ vagy „/cos/interfaces/interface/@name”::tag=~/et-0\/0\/1[0-5]/) ÉS $timeFilter GROUP BY time($__interval),eszköz::tag kitölt (null)
Ezek voltak az exek közülampAz AI/ML hálózatok monitorozására létrehozható grafikonok száma.
Összegzés
Ez a cikk a telemetriai adatok lehívásának és grafikonok létrehozásával történő megjelenítésének módszerét mutatja be. Ez a cikk kifejezetten az AI/ML érzékelőkről szól, mind a natív, mind az openconfig, de a beállítás mindenféle érzékelőhöz használható. Számos olyan problémára is megoldást kínáltunk, amelyekkel a beállítás létrehozásakor szembesülhet. Az ebben a dokumentumban bemutatott lépések és kimenetek a TIG-verem korábban említett verzióira vonatkoznak. A szoftververziótól, az érzékelőktől és a Junos verziótól függően változhat.
Hivatkozások
Juniper Yang Data Model Explorer az összes érzékelő opcióhoz
https://apps.juniper.net/ydm-explorer/
Openconfig fórum az openconfig érzékelők számára
https://www.openconfig.net/projects/models/
Vállalati és értékesítési központ
Juniper Networks, Inc.
1133 Innovációs út
Sunnyvale, CA 94089 USA
Telefon: 888. JUNIPER (888.586.4737)
vagy +1.408.745.2000
Fax: +1.408.745.2100
www.juniper.net
APAC és EMEA központja
Juniper Networks International BV
Boeing Avenue 240
1119 PZ Schiphol-Rijk
Amszterdam, Hollandia
Telefon: +31.207.125.700
Fax: +31.207.125.701
Copyright 2023 Juniper Networks. Inc. Minden jog fenntartva. A Juniper Networks, a Juniper Networks logó, a Juniper, a Junos és más védjegyek a Juniper Networks bejegyzett védjegyei. inc. és/vagy leányvállalatai az Egyesült Államokban és más országokban. Más nevek a megfelelő tulajdonosok védjegyei lehetnek. A Juniper Networks nem vállal felelősséget a jelen dokumentumban előforduló pontatlanságokért. A Juniper Networks a változtatás jogát fenntartja. módosítani. átadni, vagy más módon módosítani ezt a kiadványt előzetes értesítés nélkül.
Visszajelzés küldése a következő címre: design-center-comments@juniper.net V1.0/240807/ejm5-telemetry-junos-ai-ml
Dokumentumok / Források
![]() |
Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software [pdf] Felhasználói útmutató Telemetria a Junos for AI ML Workloads szoftverben, a Junos for AI ML Workloads szoftver, az AI ML Workloads szoftver, a Workloads szoftver, a szoftver |