Հեռաչափություն Junos-ում AI/ML աշխատանքային ծանրաբեռնվածության համար
Հեղինակ՝ Շալինի Մուխերջի
Ներածություն
Քանի որ AI կլաստերի երթևեկությունը պահանջում է անկորուստ ցանցեր՝ բարձր թողունակությամբ և ցածր ուշացումով, AI ցանցի կարևոր տարրը մոնիտորինգի տվյալների հավաքումն է: Junos Telemetry-ն թույլ է տալիս վերահսկել հիմնական կատարողականի ցուցանիշները, ներառյալ գերբեռնվածության կառավարման և երթևեկության բեռի հավասարակշռման շեմերը և հաշվիչները: gRPC նիստերն աջակցում են հեռաչափության տվյալների հոսքին: gRPC-ն ժամանակակից, բաց կոդով, բարձր արդյունավետության շրջանակ է, որը կառուցված է HTTP/2 տրանսպորտի վրա: Այն հզորացնում է մայրենի երկկողմանի հոսքային հնարավորությունները և ներառում է ճկուն հատուկ մետատվյալներ հարցումների վերնագրերում: Հեռաչափության սկզբնական քայլը իմանալն է, թե ինչ տվյալներ պետք է հավաքվեն: Այնուհետև մենք կարող ենք վերլուծել այս տվյալները տարբեր ձևաչափերով: Տվյալները հավաքելուց հետո կարևոր է դրանք ներկայացնել այնպիսի ձևաչափով, որը հեշտ է վերահսկել, որոշումներ կայացնել և բարելավել առաջարկվող ծառայությունը: Այս հոդվածում մենք օգտագործում ենք հեռաչափության կույտ, որը բաղկացած է Telegraf-ից, InfluxDB-ից և Grafana-ից: Հեռաչափության այս կույտը հավաքում է տվյալներ՝ օգտագործելով push մոդելը: Ավանդական ձգողական մոդելները ռեսուրսներ են պահանջում, պահանջում են ձեռքով միջամտություն և կարող են ներառել տեղեկատվության բացերը իրենց հավաքած տվյալների մեջ: Push մոդելները հաղթահարում են այս սահմանափակումները՝ փոխանցելով տվյալները ասինխրոն: Նրանք հարստացնում են տվյալները՝ օգտագործելով օգտագործողի համար հարմար tags և անուններ։ Երբ տվյալները ավելի ընթեռնելի ձևաչափ են ստանում, մենք դրանք պահում ենք տվյալների բազայում և օգտագործում ինտերակտիվ վիզուալիզացիայի մեջ web ցանցի վերլուծության հավելված: Նկար. 1-ը ցույց է տալիս, թե ինչպես է այս կույտը նախագծված տվյալների արդյունավետ հավաքագրման, պահպանման և վիզուալիզացիայի համար՝ սկսած ցանցային սարքերից, որոնք տվյալները մղում են դեպի կոլեկցիոներ, մինչև վերլուծության համար վահանակների վրա ցուցադրվող տվյալները:
TIG Stack
Մենք օգտագործեցինք Ubuntu սերվեր՝ ամբողջ ծրագրակազմը, ներառյալ TIG փաթեթը, տեղադրելու համար:
Telegraph
Տվյալներ հավաքելու համար մենք օգտագործում ենք Telegraf-ը Ubuntu սերվերի վրա, որն աշխատում է 22.04.2. Այս ցուցադրությունում աշխատող Telegraf-ի տարբերակը 1.28.5 է:
Telegraf-ը պլագինների վրա հիմնված սերվերի գործակալ է չափումների հավաքագրման և հաշվետվությունների համար: Այն օգտագործում է պրոցեսոր plugins հարստացնել և նորմալացնել տվյալները։ Արդյունքը plugins օգտագործվում են այս տվյալները տարբեր տվյալների խանութներ ուղարկելու համար: Այս փաստաթղթում մենք օգտագործում ենք երկու pluginsմեկը openconfig սենսորների համար, իսկ մյուսը Juniper բնիկ սենսորների համար:
InfluxDB
Տվյալները ժամանակային շարքերի տվյալների բազայում պահելու համար մենք օգտագործում ենք InfluxDB: Telegraf-ի ելքային պլագինը տվյալները ուղարկում է InfluxDB, որը պահպանում է դրանք շատ արդյունավետ կերպով: Մենք օգտագործում ենք V1.8-ը, քանի որ V2-ի և վերևի համար CLI չկա:
Գրաֆանա
Grafana-ն օգտագործվում է այս տվյալները պատկերացնելու համար: Grafana-ն տվյալները վերցնում է InfluxDB-ից և թույլ է տալիս օգտվողներին ստեղծել հարուստ և ինտերակտիվ վահանակներ: Այստեղ մենք գործարկում ենք 10.2.2 տարբերակը:
Կազմաձևում անջատիչի վրա
Այս փաթեթն իրականացնելու համար մենք նախ պետք է կարգավորենք անջատիչը, ինչպես ցույց է տրված Նկար 2-ում: Մենք օգտագործել ենք պորտ 50051: Այստեղ կարող է օգտագործվել ցանկացած պորտ: Մուտք գործեք QFX անջատիչ և ավելացրեք հետևյալ կոնֆիգուրացիան:
Նշում. Այս կոնֆիգուրացիան նախատեսված է լաբորատորիաների/POC-ների համար, քանի որ գաղտնաբառը փոխանցվում է հստակ տեքստով: Խուսափելու համար օգտագործեք SSL:
Շրջակա միջավայր
Նգինքս
Սա անհրաժեշտ է, եթե դուք չեք կարողանում բացահայտել այն նավահանգիստը, որի վրա տեղակայված է Grafana-ն: Հաջորդ քայլը nginx-ի տեղադրումն է Ubuntu սերվերի վրա՝ որպես հակադարձ պրոքսի գործակալ: Երբ nginx-ը տեղադրվի, ավելացրեք Նկար 4-ում ներկայացված տողերը «կանխադրված» ֆայլին և ֆայլը տեղափոխեք /etc/nginx-ից դեպի /etc/nginx/sites-enabled:
Համոզվեք, որ firewall-ը հարմարեցված է nginx ծառայությանը լիարժեք մուտք ապահովելու համար, ինչպես ցույց է տրված Նկար 5-ում:
Երբ nginx-ը տեղադրվի և անհրաժեշտ փոփոխությունները կատարվեն, մենք պետք է կարողանանք մուտք գործել Grafana a-ից web զննարկիչը՝ օգտագործելով Ubuntu սերվերի IP հասցեն, որտեղ տեղադրված է ամբողջ ծրագրակազմը:
Grafana-ում փոքր անսարքություն կա, որը թույլ չի տալիս վերականգնել կանխադրված գաղտնաբառը: Օգտագործեք այս քայլերը, եթե հանդիպեք այս խնդրին:
Քայլեր, որոնք պետք է կատարվեն Ubuntu սերվերում՝ Grafana-ում գաղտնաբառը սահմանելու համար.
- Գնացեք /var/lib/grafana/grafana.db
- Տեղադրեք sqllite3
o sudo apt տեղադրել sqlite3 - Գործարկեք այս հրամանը ձեր տերմինալում
o sqlite3 grafana.db - Sqlite հրամանի տողը բացվում է; գործարկել հետևյալ հարցումը.
>ջնջել օգտվողից որտեղ login='admin' - Վերագործարկեք grafana-ն և մուտքագրեք admin որպես օգտվողի անուն և գաղտնաբառ: Այն հուշում է նոր գաղտնաբառ:
Ամբողջ ծրագրաշարը տեղադրելուց հետո Telegraf-ում ստեղծեք կազմաձևման ֆայլը, որը կօգնի հեռացնել հեռաչափության տվյալները անջատիչից և մղել այն InfluxDB:
Openconfig Sensor Plugin
Ubuntu սերվերում խմբագրեք /etc/telegraf/telegraf.conf ֆայլը՝ ավելացնելու բոլոր պահանջվողները plugins և սենսորներ: Opencong սենսորների համար մենք օգտագործում ենք gNMI plugin-ը, որը ներկայացված է Նկար 6-ում: Դեմո նպատակների համար ավելացրեք հոսթի անունը որպես «spine1», պորտի համարը «50051», որն օգտագործվում է gRPC-ի համար, անջատիչի օգտանունը և գաղտնաբառը, և համարը: վայրկյաններ՝ ձախողման դեպքում կրկին հավաքելու համար:
Բաժանորդագրության տողում ավելացրեք եզակի անուն՝ «cpu» այս կոնկրետ սենսորի համար, սենսորի ուղին և այս տվյալները անջատիչից վերցնելու ժամանակային ընդմիջումը: Ավելացրեք նույն plugin inputs.gnmi և inputs.gnmi.subscription բոլոր բաց կազմաձևման սենսորների համար: (Նկար 6)
Native Sensor Plugin
Սա Juniper հեռաչափության ինտերֆեյսի պլագին է, որն օգտագործվում է բնիկ սենսորների համար: Նույն telegraf.conf ֆայլում ավելացրեք բնիկ սենսորային պլագին inputs.jti_openconfig_telemetry, որտեղ դաշտերը գրեթե նույնն են, ինչ openconfig. Օգտագործեք եզակի հաճախորդի ID յուրաքանչյուր սենսորի համար. այստեղ մենք օգտագործում ենք «telegraf3»: Այս սենսորի համար այստեղ օգտագործվող եզակի անունը «mem» է (Նկար 7):
Վերջապես, ավելացրեք outputs.influxdb ելքային հավելված՝ այս սենսորային տվյալները InuxDB ուղարկելու համար: Այստեղ տվյալների բազան կոչվում է «telegraf»՝ օգտանունով որպես «inux» և գաղտնաբառով «inuxdb» (Նկար 8):
Telegraf.conf ֆայլը խմբագրելուց հետո վերագործարկեք telegraf ծառայությունը: Այժմ ստուգեք InfluxDB CLI-ում, որպեսզի համոզվեք, որ չափումներ են ստեղծվել բոլոր եզակի սենսորների համար: Մուտքագրեք «inux»՝ InfluxDB CLI մուտքագրելու համար:
Ինչպես երևում է Նկարում: 9, մուտքագրեք influxDB հուշումը և օգտագործեք «telegraf» տվյալների բազան: Սենսորներին տրված բոլոր եզակի անունները թվարկված են որպես չափումներ:
Ցանկացած չափման արդյունքը տեսնելու համար պարզապես համոզվելու համար, որ telegraf ֆայլը ճիշտ է, և սենսորն աշխատում է, օգտագործեք «ընտրել * պրոցեսորի սահմանաչափից 1» հրամանը, ինչպես ցույց է տրված Նկար 10-ում:
Ամեն անգամ, երբ telegraf.conf ֆայլում փոփոխություններ են կատարվում, համոզվեք, որ դադարեցնեք InfluxDB-ն, վերագործարկեք Telegraf-ը և այնուհետև գործարկեք InfluxDB-ն:
Մուտք գործեք Grafana զննարկիչից և ստեղծեք վահանակներ՝ համոզվելով, որ տվյալները ճիշտ են հավաքվում:
Գնացեք Միացումներ > InfuxDB > Ավելացնել տվյալների նոր աղբյուր:
- Անուն տվեք այս տվյալների աղբյուրին: Այս ցուցադրությունում դա «թեստ-1» է:
- HTTP տողի ներքո օգտագործեք Ubuntu սերվերի IP-ն և 8086 նավահանգիստը:
- InfluxDB-ի մանրամասներում օգտագործեք տվյալների բազայի նույն անունը՝ «telegraf» և տրամադրեք Ubuntu սերվերի օգտանունն ու գաղտնաբառը:
- Սեղմեք Պահպանել և փորձարկել: Համոզվեք, որ տեսնում եք «հաջող» հաղորդագրությունը:
- Տվյալների աղբյուրը հաջողությամբ ավելացնելուց հետո գնացեք Dashboards և սեղմեք Նոր: Եկեք ստեղծենք մի քանի վահանակներ, որոնք կարևոր են AI/ML աշխատանքային բեռների համար խմբագրման ռեժիմում:
ExampՍենսորային գրաֆիկների les
Հետևյալներն են նախկինampորոշ հիմնական հաշվիչներ, որոնք կարևոր են AI/ML ցանցի մոնիտորինգի համար:
ՊերչենtagՕգտագործում ներթափանցման ինտերֆեյսի համար et-0/0/0 ողնաշարի 1-ի վրա
- Ընտրեք տվյալների աղբյուրը որպես թեստ-1:
- FROM բաժնում ընտրեք չափումը որպես «ինտերֆեյս»: Սա եզակի անունն է, որն օգտագործվում է այս սենսորային ուղու համար:
- WHERE բաժնում ընտրեք սարքը՝tag, և մեջ tag արժեքը, ընտրեք անջատիչի հոսթի անունը, այսինքն՝ spine1:
- SELECT բաժնում ընտրեք սենսորային ճյուղը, որը ցանկանում եք վերահսկել. այս դեպքում ընտրեք «field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)»: Այժմ նույն բաժնում կտտացրեք «+» և ավելացրեք այս հաշվարկային մաթեմատիկան (/50000000000 * 100): Մենք հիմնականում հաշվում ենք տոկոսըtage 400G ինտերֆեյսի օգտագործում:
- Համոզվեք, որ FORMAT-ը «ժամանակային շարք է» և անվանեք գրաֆիկը ALIAS բաժնում:
Բուֆերների առավելագույն զբաղվածություն ցանկացած հերթի համար
- Ընտրեք տվյալների աղբյուրը որպես թեստ-1:
- FROM բաժնում ընտրեք չափումը որպես «բուֆեր»:
- WHERE բաժնում կա երեք դաշտ, որը պետք է լրացվի: Ընտրել սարքը::tag, և մեջ tag արժեքը ընտրել անջատիչի հոսթի անունը (այսինքն՝ ողնաշար-1); ԵՎ ընտրեք /cos/interfaces/interface/@name::tag և ընտրեք միջերեսը (այսինքն et- 0/0/0); ԵՎ ընտրեք նաև հերթը, /cos/interfaces/interface/queues/queue/@queue::tag և ընտրեք հերթի համարը 4:
- SELECT բաժնում ընտրեք սենսորային ճյուղը, որը ցանկանում եք վերահսկել. այս դեպքում ընտրեք «field(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy)»:
- Համոզվեք, որ FORMAT-ը «ժամանակային շարք» է և անվանեք գրաֆիկը ALIAS բաժնում:
Դուք կարող եք տվյալների համադրում մի քանի ինտերֆեյսների համար նույն գրաֆիկի վրա, ինչպես երևում է Նկար 17-ում et-0/0/0, et-0/0/1, et-0/0/2 և այլն:
PFC և ECN միջին ածանցյալ
Միջին ածանցյալը (արժեքի տարբերությունը ժամանակային միջակայքում) գտնելու համար օգտագործեք հում հարցման ռեժիմը:
Սա ներհոսքի հարցումն է, որը մենք օգտագործել ենք՝ մեկ վայրկյանում Spine-0-ի et-0/0/1 PFC արժեքների միջև միջին ածանցյալը գտնելու համար:
SELECT ածանցյալ(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) FROM “interface” WHERE (“սարք”::tag = 'Spine-1') ԵՎ $timeFilter GROUP ԸՍՏ ժամանակի ($interval)
SELECT ածանցյալ(mean(“/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts”), 1s) FROM “interface” WHERE (“սարք”::tag = 'Spine-1') ԵՎ $timeFilter GROUP ԸՍՏ ժամանակի ($interval)
Մուտքային ռեսուրսի սխալները նշանակում են ածանցյալ
Ռեսուրսների սխալների միջին ածանցյալ հարցումը հետևյալն է.
SELECT ածանցյալ(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) FROM “interface” WHERE (“սարք”::tag = 'Spine-1') ԵՎ $timeFilter GROUP ԸՍՏ ժամանակի ($interval)
Պոչի կաթիլները նշանակում են ածանցյալ
Պոչի կաթիլների հում հարցումը միջին ածանցյալն է.
SELECT ածանցյալ (mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s) FROM “buer” WHERE (“device”::tag = 'Leaf-1' ԵՎ «/cos/interfaces/interface/@name»::tag = 'et-0/0/0' ԵՎ «/cos/interfaces/interface/queues/queue/@queue»::tag = '4') ԵՎ $timeFilter GROUP BY time ($__interval) fill(null)
CPU-ի օգտագործումը
- Ընտրեք տվյալների աղբյուրը որպես թեստ-1:
- FROM բաժնում ընտրեք չափումը որպես «newcpu»
- WHERE-ում կա երեք դաշտ, որը պետք է լրացվի: Ընտրել սարքը::tag և մեջ tag արժեքը ընտրեք անջատիչի հոսթի անունը (այսինքն՝ ողնաշար-1): AND /components/component/properties/property/name:tag, և ընտրեք cputilization-total AND անունով::tag ընտրեք RE0:
- SELECT բաժնում ընտրեք սենսորային ճյուղը, որը ցանկանում եք վերահսկել: Այս դեպքում ընտրեք «դաշտ (պետություն/արժեք)»:
Պոչի ոչ բացասական ածանցյալը գտնելու հում հարցումն ընկնում է բազմաթիվ ինտերֆեյսների մի քանի անջատիչների համար բիթ/վրկ:
SELECT non_negative_derivative(mean(«/cos/interfaces/interface/queues/queue/tailDropBytes»), 1s)*8 FROM «bur» WHERE (սարք՝:tag =~ /^Spine-[1-2]$/) և (“/cos/interfaces/interface/@name”::tag =~ /et-0\/0\/[0-9]/ կամ «/cos/interfaces/interface/@name»::tag=~/et-0\/0\/1[0-5]/) ԵՎ $timeFilter GROUP BY ժամանակ ($__interval),device::tag լրացնել (null)
Սրանք նախկիններից մի քանիսն էինampգրաֆիկների les, որոնք կարող են ստեղծվել AI/ML ցանցի մոնիտորինգի համար:
Ամփոփում
Այս հոդվածը ցույց է տալիս հեռաչափության տվյալները քաշելու և դրանք վիզուալացնելու մեթոդը՝ ստեղծելով գրաֆիկներ: Այս հոդվածում մասնավորապես խոսվում է AI/ML սենսորների մասին՝ ինչպես բնիկ, այնպես էլ բաց կոնֆիգուրացիայով, սակայն կարգավորումը կարող է օգտագործվել բոլոր տեսակի սենսորների համար: Մենք նաև ներառել ենք լուծումներ բազմաթիվ խնդիրների համար, որոնց կարող եք հանդիպել կարգավորումը ստեղծելիս: Այս թղթում նկարագրված քայլերն ու արդյունքները հատուկ են վերը նշված TIG փաթեթի տարբերակներին: Այն ենթակա է փոփոխման՝ կախված ծրագրաշարի տարբերակից, սենսորներից և Junos տարբերակից:
Հղումներ
Juniper Yang Data Model Explorer-ը բոլոր սենսորային տարբերակների համար
https://apps.juniper.net/ydm-explorer/
Openconfig ֆորում openconfig սենսորների համար
https://www.openconfig.net/projects/models/
Կորպորատիվ և վաճառքի շտաբ
Juniper Networks, Inc.
1133 նորարարության ուղի
Sunnyvale, CA 94089 ԱՄՆ
Հեռ.՝ 888. JUNIPER (888.586.4737)
կամ +1.408.745.2000թ
Ֆաքս՝ +1.408.745.2100
www.juniper.net
APAC-ի և EMEA-ի գլխավոր գրասենյակը
Juniper Networks International BV
Boeing Avenue 240
1119 PZ Schiphol-Rijk
Ամստերդամ, Նիդեռլանդներ
Հեռախոս՝ +31.207.125.700
Ֆաքս՝ +31.207.125.701
Հեղինակային իրավունք 2023 Juniper Networks. Inc. Օդային իրավունքները պաշտպանված են: Juniper Networks-ը, Juniper Networks-ի լոգոն, Juniper, Junos և այլ ապրանքանիշեր Juniper Networks-ի գրանցված ապրանքանիշերն են: inc. և/կամ նրա մասնաճյուղերը Միացյալ Նահանգներում և այլ երկրներում: Այլ անունները կարող են լինել իրենց համապատասխան սեփականատերերի ապրանքանիշերը: Juniper Networks-ը պատասխանատվություն չի կրում այս փաստաթղթում առկա որևէ անճշտության համար: Juniper Networks-ը վերապահում է փոփոխության իրավունքը: փոփոխել. փոխանցել կամ այլ կերպ վերանայել այս հրապարակումը առանց ծանուցման:
Հետադարձ կապ ուղարկել հետևյալ հասցեին՝ design-center-comments@juniper.net V1.0/240807/ejm5-telemetry-junos-ai-ml
Փաստաթղթեր / ռեսուրսներ
![]() |
Juniper NETWORKS Telemetry In Junos-ում AI ML Workloads Software-ի համար [pdf] Օգտագործողի ուղեցույց Telemetry In Junos for AI ML Workloads Software, Junos for AI ML Workloads Software, AI ML Workloads Software, Workloads Software, Software |