Телеметрија во Junos за оптоварување со AI/ML
Автор: Шалини Мукерџи
Вовед
Бидејќи сообраќајот на кластерот за вештачка интелигенција бара мрежи без загуби со висока пропусност и мала латентност, критичен елемент на мрежата на вештачка интелигенција е собирањето податоци за следење. Junos Telemetry овозможува грануларно следење на клучните индикатори за перформанси, вклучувајќи прагови и бројачи за управување со застојот и балансирање на сообраќајното оптоварување. Сесиите на gRPC поддржуваат стриминг на телеметриски податоци. gRPC е модерна рамка со отворен код, со високи перформанси која е изградена на HTTP/2 транспорт. Ги зајакнува можностите за природен двонасочен стриминг и вклучува флексибилни сопствени метаподатоци во заглавијата на барањата. Почетниот чекор во телеметријата е да се знае кои податоци треба да се соберат. Потоа можеме да ги анализираме овие податоци во различни формати. Откако ќе ги собереме податоците, важно е да ги претставиме во формат што е лесен за следење, донесување одлуки и подобрување на услугата што се нуди. Во овој труд, користиме стек за телеметрија што се состои од Telegraf, InfluxDB и Grafana. Овој телеметриски стек собира податоци со помош на модел на притисни. Традиционалните модели на влечење се интензивни за ресурси, бараат рачна интервенција и може да вклучат празнини во информациите во податоците што ги собираат. Push моделите ги надминуваат овие ограничувања со доставување податоци асинхроно. Тие ги збогатуваат податоците со користење на user-friendly tags и имиња. Откако податоците се во почитлив формат, ги складираме во база на податоци и ги користиме во интерактивна визуелизација web апликација за анализа на мрежата. Слика. 1 ни покажува како овој оџак е дизајниран за ефикасно собирање, складирање и визуелизација на податоци, од мрежни уреди што ги туркаат податоците до собирачот до податоците што се прикажуваат на контролните табли за анализа.
ТИГ Стак
Користивме Ubuntu сервер за да го инсталираме целиот софтвер вклучувајќи го и оџакот TIG.
Телеграф
За собирање податоци, користиме Telegraf на сервер на Ubuntu кој работи на 22.04.2. Верзијата на Телеграф што работи во ова демо е 1.28.5.
Телеграф е сервер управуван од приклучоци за собирање и известување метрика. Користи процесор plugins за збогатување и нормализирање на податоците. Излезот plugins се користат за испраќање на овие податоци до различни продавници за податоци. Во овој документ користиме два plugins: еден за сензори со отворена конфигурација, а другиот за сензори на Juniper.
InfluxDB
За да ги зачуваме податоците во база на податоци за временски серии, користиме InfluxDB. Излезниот приклучок во Телеграф ги испраќа податоците до InfluxDB, кој ги складира на многу ефикасен начин. Ние користиме V1.8 бидејќи нема присутен CLI за V2 и погоре.
Графана
Графана се користи за визуелизација на овие податоци. Графана ги извлекува податоците од InfluxDB и им овозможува на корисниците да креираат богати и интерактивни контролни табли. Еве, ние работиме со верзија 10.2.2.
Конфигурација на прекинувачот
За да го имплементираме овој стек, прво треба да го конфигурираме прекинувачот како што е прикажано на слика 2. Ја користевме портата 50051. Секоја порта може да се користи овде. Најавете се на прекинувачот QFX и додајте ја следнава конфигурација.
Забелешка: Оваа конфигурација е за лаборатории/POC, бидејќи лозинката се пренесува во јасен текст. Користете SSL за да го избегнете ова.
Животна средина
Нгинкс
Ова е потребно ако не можете да го изложите пристаништето на кое е хостирана Grafana. Следниот чекор е да се инсталира nginx на серверот Ubuntu за да служи како обратен прокси агент. Откако ќе се инсталира nginx, додајте ги линиите прикажани на Слика 4 во „стандардната“ датотека и преместете ја датотеката од /etc/nginx во /etc/nginx/sites-enabled.
Осигурете се дека заштитниот ѕид е прилагоден за да овозможи целосен пристап до услугата nginx како што е прикажано на Слика 5.
Откако ќе се инсталира nginx и ќе се направат потребните промени, треба да можеме да пристапиме до Grafana од a web прелистувач со користење на IP адресата на серверот Ubuntu каде што е инсталиран целиот софтвер.
Има мала грешка во Графана што не дозволува да ја ресетирате стандардната лозинка. Користете ги овие чекори ако наидете на овој проблем.
Чекори што треба да се извршат на серверот 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
На серверот Ubuntu, уредете ја датотеката /etc/telegraf/telegraf.conf за да ги додадете сите потребни plugins и сензори. За сензорите opencong, го користиме приклучокот gNMI прикажан на слика 6. За демо цели, додајте го името на домаќинот како „spine1“, бројот на портата „50051“ што се користи за gRPC, корисничкото име и лозинката на прекинувачот и бројот од секунди за повторно бирање во случај на дефект.
Во строфата за претплата, додадете уникатно име, „процесор“ за овој конкретен сензор, патеката на сензорот и временскиот интервал за земање на овие податоци од прекинувачот. Додајте ги истите влезови за приклучок.gnmi и inputs.gnmi.претплата за сите отворени сензори за конфигурација. (Слика 6)
Приклучок за мајчин сензор
Ова е приклучок за интерфејс за телеметрија Juniper што се користи за природни сензори. Во истата датотека telegraf.conf, додајте ги приклучоците за мајчин сензор.jti_openconfig_telemetry каде што полињата се речиси исти како openconfig. Користете уникатен клиент ID за секој сензор; овде користиме „телеграф3“. Уникатното име што се користи овде за овој сензор е „мем“ (Слика 7).
На крај, додадете излезен приклучок outputs.influxdb за да ги испратите овие податоци од сензорот до InfluxDB. Овде, базата на податоци е именувана „телеграф“ со корисничко име како „прилив“ и лозинка „inuxdb“ (Слика 8).
Откако ќе ја уредите датотеката telegraf.conf, рестартирајте ја услугата telegraf. Сега, проверете во InuxDB CLI за да се уверите дали се создадени мерења за сите уникатни сензори. Внесете „прилив“ за да влезете во InfluxDB CLI.
Како што се гледа на слика. 9, внесете го промптот influxDB и користете ја базата на податоци „телеграф“. Сите уникатни имиња дадени на сензорите се наведени како мерења.
За да го видите излезот од кое било мерење, само за да бидете сигурни дека датотеката телеграф е точна и дека сензорот работи, користете ја командата „избери * од границата на процесорот 1“ како што е прикажано на Слика 10.
Секогаш кога се прават промени во датотеката telegraf.conf, проверете дали сте го прекинале InfluxDB, рестартирајте го Telegraf и потоа стартувајте го InfluxDB.
Најавете се на Grafana од прелистувачот и креирајте контролни табли откако ќе се уверите дека податоците се собираат правилно.
Одете во Конекции > InfuxDB > Додајте нов извор на податоци.
- Дајте име на овој извор на податоци. Во оваа демонстрација е „тест-1“.
- Под строфата HTTP, користете ја IP-серверот на Ubuntu и портата 8086.
- Во деталите за InfluxDB, користете го истото име на базата на податоци „telegraf“ и наведете ги корисничкото име и лозинката на серверот Ubuntu.
- Кликнете Зачувај и тестирај. Погрижете се да ја видите пораката „успешно“.
- Откако изворот на податоци е успешно додаден, одете во Контролни табли и кликнете Ново. Дозволете ни да создадеме неколку контролни табли кои се од суштинско значење за оптоварувањата на AI/ML во режим на уредувач.
Examples на графикони на сензори
Следниве се прampнекои главни бројачи кои се од суштинско значење за следење на AI/ML мрежа.
Персенtage искористување за влезен интерфејс et-0/0/0 на 'рбетот-1
- Изберете го изворот на податоци како тест-1.
- Во делот FROM, изберете го мерењето како „интерфејс“. Ова е единственото име што се користи за оваа патека на сензорот.
- Во делот WHERE, изберете уред:tag, и во tag вредност, изберете го името на домаќинот на прекинувачот, односно 'рбетот1.
- Во делот 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, изберете ја гранката на сензорот што сакате да ја следите; во овој случај изберете „поле (/cos/interfaces/interface/queues/queue/PeakBufferOccupancy).“
- Проверете дали FORMAT-от е „временска серија“ и именувајте го графикот во делот ALIAS.
Можете да собирате податоци за повеќе интерфејси на истиот график како што е прикажано на Слика 17 за et-0/0/0, et-0/0/1, et-0/0/2 итн.
PFC и ECN значи дериват
За да го пронајдете средниот дериват (разликата во вредноста во временски опсег), користете го режимот на необработено барање.
Ова е барањето за прилив што го користевме за да го најдеме средниот дериват помеѓу две вредности на PFC на et-0/0/0 на Spine-1 во секунда.
ИЗБЕРЕТЕ извод (средно („/интерфејси/интерфејс[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts“), 1s) FROM „интерфејс“ WHERE („уред“::tag = 'Рбет-1') И $timeFilter ГРУПАЦИЈА ПО време ($интервал)
ИЗБЕРЕТЕ извод(средно(„/интерфејси/интерфејс[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts“), 1s) FROM „интерфејс“ WHERE („уред“::tag = 'Рбет-1') И $timeFilter ГРУПАЦИЈА ПО време ($интервал)
Грешките на влезните ресурси значат извод
Необработеното барање за грешки во ресурсите значи дериват е:
ИЗБЕРЕТЕ извод (средно („/интерфејси/интерфејс[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors“), 1s) FROM „интерфејс“ WHERE („уред“::tag = 'Рбет-1') И $timeFilter ГРУПАЦИЈА ПО време ($интервал)
Капките од опашката значат дериват
Необработеното барање за значителен дериват на капки од опашката е:
ИЗБЕРЕТЕ извод (средно („/cos/интерфејси/интерфејс/редици/редица/tailDropBytes“), 1s) FROM „bufer“ WHERE („уред“::tag = 'Leaf-1' И „/cos/interfaces/interface/@name“::tag = 'et-0/0/0' И „/cos/interfaces/interface/queues/queue/@queue“::tag = '4') И $timeFilter ГРУПАЦИЈА ПО време ($__интервал) пополнете (null)
Користење на процесорот
- Изберете го изворот на податоци како тест-1.
- Во делот FROM, изберете го мерењето како „newcpu“
- Во WHERE, има три полиња за пополнување. Изберете уред::tag и во tag вредност изберете го името на домаќинот на прекинувачот (т.е. 'рбетот-1). И во /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 „buer“ 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]/) И $timeФилтер ГРУПИРАЈ ПО време ($__интервал),уред::tag пополни (нула)
Ова беа некои од ексampдел од графиконите што може да се креираат за следење на AI/ML мрежа.
Резиме
Овој труд го илустрира методот на влечење на телеметриски податоци и нивно визуелизирање преку создавање графикони. Овој труд конкретно зборува за сензори за AI/ML, и природна и отворена конфигурација, но поставувањето може да се користи за сите видови сензори. Вклучивме и решенија за повеќе проблеми со кои може да се соочите при креирањето на поставката. Чекорите и излезите прикажани во овој труд се специфични за верзиите на оџакот TIG споменати претходно. Тоа е предмет на промена во зависност од верзијата на софтверот, сензорите и верзијата на Junos.
Референци
Juniper Yang Data Model Explorer за сите опции на сензорот
https://apps.juniper.net/ydm-explorer/
Opencong форум за 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
Боинг авенија 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. вк. и/или нејзините филијали во Соединетите Американски Држави и други земји. Други имиња може да бидат заштитни знаци на нивните соодветни сопственици. 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] Упатство за корисникот Телеметрија во Junos за софтвер за оптоварување на AI ML, софтвер за оптоварување на AI ML, софтвер за оптоварување на AI ML, софтвер за оптоварување на работа, софтвер |