Тэлеметрыя ў Junos для працоўных нагрузак AI/ML
Аўтар: Шаліні Мукерджы
Уводзіны
Паколькі кластарны трафік штучнага інтэлекту патрабуе сетак без страт з высокай прапускной здольнасцю і нізкай затрымкай, найважнейшым элементам сеткі штучнага інтэлекту з'яўляецца збор даных маніторынгу. Junos Telemetry забяспечвае дэталёвы маніторынг ключавых паказчыкаў прадукцыйнасці, уключаючы парогі і лічыльнікі для кіравання перагрузкамі і балансавання нагрузкі трафіку. Сеансы gRPC падтрымліваюць струменевую перадачу тэлеметрычных даных. gRPC - гэта сучасная высокапрадукцыйная структура з адкрытым зыходным кодам, пабудаваная на аснове транспарту HTTP/2. Ён пашырае ўласныя магчымасці двухнакіраванай плыні і ўключае гнуткія карыстальніцкія метададзеныя ў загалоўках запытаў. Пачатковы крок у тэлеметрыі - ведаць, якія дадзеныя трэба збіраць. Затым мы можам аналізаваць гэтыя даныя ў розных фарматах. Пасля збору даных важна прадставіць іх у фармаце, які лёгка кантраляваць, прымаць рашэнні і паляпшаць паслугі, якія прапануюцца. У гэтым артыкуле мы выкарыстоўваем стэк тэлеметрыі, які складаецца з Telegraf, InfluxDB і Grafana. Гэты стэк тэлеметрыі збірае даныя з дапамогай націскной мадэлі. Традыцыйныя мадэлі прыцягнення патрабуюць рэсурсаў, патрабуюць ручнога ўмяшання і могуць утрымліваць інфармацыйныя прабелы ў дадзеных, якія яны збіраюць. Push-мадэлі пераадольваюць гэтыя абмежаванні, дастаўляючы даныя асінхронна. Яны ўзбагачаюць дадзеныя, выкарыстоўваючы зручны tags і імёны. Калі даныя пераходзяць у больш зручны для чытання фармат, мы захоўваем іх у базе даных і выкарыстоўваем у інтэрактыўнай візуалізацыі web Прыкладанне для аналізу сеткі. Малюнак. 1 паказвае нам, як гэты стэк распрацаваны для эфектыўнага збору, захоўвання і візуалізацыі даных, ад сеткавых прылад, якія адпраўляюць даныя ў калектар, да даных, якія адлюстроўваюцца на прыборных панэлях для аналізу.
Стэк TIG
Мы выкарыстоўвалі сервер Ubuntu для ўстаноўкі ўсяго праграмнага забеспячэння, уключаючы стэк TIG.
Тэлеграф
Для збору даных мы выкарыстоўваем Telegraf на серверы Ubuntu пад кіраваннем 22.04.2. У гэтай дэманстрацыі працуе версія Telegraf 1.28.5.
Telegraf - гэта серверны агент, які кіруецца плагінам для збору паказчыкаў і справаздачнасці. Ён выкарыстоўвае працэсар plugins для ўзбагачэння і нармалізацыі дадзеных. Выхад plugins выкарыстоўваюцца для адпраўкі гэтых даных у розныя сховішчы даных. У гэтым дакуменце мы выкарыстоўваем два plugins: адзін для датчыкаў openconfig, а другі для ўласных датчыкаў Juniper.
InfluxDB
Каб захоўваць даныя ў базе дадзеных часовых шэрагаў, мы выкарыстоўваем InuxDB. Убудова для вываду ў Telegraf адпраўляе дадзеныя ў InuxDB, які захоўвае іх вельмі эфектыўным спосабам. Мы выкарыстоўваем V1.8, таму што няма CLI для V2 і вышэй.
Графана
Grafana выкарыстоўваецца для візуалізацыі гэтых даных. Grafana выцягвае дадзеныя з InfluxDB і дазваляе карыстальнікам ствараць насычаныя інтэрактыўныя панэлі. Тут мы выкарыстоўваем версію 10.2.2.
Канфігурацыя на камутатары
Каб рэалізаваць гэты стэк, нам спачатку трэба наладзіць камутатар, як паказана на малюнку 2. Мы выкарысталі порт 50051. Тут можна выкарыстоўваць любы порт. Увайдзіце ў камутатар QFX і дадайце наступную канфігурацыю.
Заўвага: Гэтая канфігурацыя прызначана для лабараторый/POC, паколькі пароль перадаецца адкрытым тэкстам. Выкарыстоўвайце SSL, каб пазбегнуць гэтага.
Асяроддзе
Nginx
Гэта неабходна, калі вы не можаце паказаць порт, на якім размешчаны Grafana. Наступным крокам з'яўляецца ўстаноўка nginx на сэрвэры Ubuntu, які будзе служыць зваротным проксі-агентам. Пасля ўстаноўкі nginx дадайце радкі, паказаныя на малюнку 4, у файл «па змаўчанні» і перамясціце файл з /etc/nginx у /etc/nginx/sites-enabled.
Пераканайцеся, што брандмаўэр настроены на поўны доступ да службы nginx, як паказана на малюнку 5.
Пасля ўстаноўкі nginx і ўнясення неабходных змяненняў мы зможам атрымаць доступ да Grafana з a web браўзер, выкарыстоўваючы IP-адрас сервера Ubuntu, на якім усталявана ўсё праграмнае забеспячэнне.
У Grafana ёсць невялікі збой, які не дазваляе скінуць пароль па змаўчанні. Калі вы сутыкнуліся з гэтай праблемай, скарыстайцеся гэтымі крокамі.
Крокі, якія неабходна выканаць на серверы Ubuntu, каб усталяваць пароль у Grafana:
- Перайдзіце ў /var/lib/grafana/grafana.db
- Усталюйце sqllite3
o sudo apt для ўстаноўкі sqlite3 - Запусціце гэтую каманду на сваім тэрмінале
аб sqlite3 grafana.db - Адкрываецца камандны радок Sqlite; запусціце наступны запыт:
> выдаліць ад карыстальніка, дзе лагін='admin' - Перазапусціце grafana і ўвядзіце admin у якасці імя карыстальніка і пароля. Ён запытвае новы пароль.
Пасля ўстаноўкі ўсяго праграмнага забеспячэння стварыце канфігурацыйны файл у Telegraf, які дапаможа атрымліваць даныя тэлеметрыі з камутатара і адпраўляць іх у InuxDB.
Убудова датчыка Openconfig
На серверы Ubuntu адрэдагуйце файл /etc/telegraf/telegraf.conf, каб дадаць усе неабходныя plugins і датчыкі. Для датчыкаў openconfig мы выкарыстоўваем плагін gNMI, паказаны на малюнку 6. У дэманстрацыйных мэтах дадайце імя хоста як «spine1», нумар порта «50051», які выкарыстоўваецца для gRPC, імя карыстальніка і пароль камутатара і нумар секунд для паўторнага набору ў выпадку няўдачы.
У страфе падпіскі дадайце унікальнае імя, «cpu» для гэтага канкрэтнага датчыка, шлях датчыка і інтэрвал часу для захопу гэтых даных з камутатара. Дадайце аднолькавы плагін inputs.gnmi і inputs.gnmi.subscription для ўсіх датчыкаў адкрытай канфігурацыі. (Малюнак 6)
Родны ўбудова датчыка
Гэта убудова тэлеметрычнага інтэрфейсу Juniper, які выкарыстоўваецца для ўласных датчыкаў. У той жа файл telegraf.conf дадайце родны плагін датчыка inputs.jti_openconfig_telemetry, дзе палі амаль такія ж, як у openconfig. Выкарыстоўвайце унікальны ідэнтыфікатар кліента для кожнага датчыка; тут мы выкарыстоўваем «telegraf3». Унікальная назва, якая выкарыстоўваецца тут для гэтага датчыка, - "mem" (малюнак 7).
Нарэшце, дадайце плагін вываду outputs.influxdb, каб адправіць гэтыя даныя датчыка ў InfluxDB. Тут база дадзеных называецца «telegraf» з імем карыстальніка «inux» і паролем «inuxdb» (малюнак 8).
Пасля таго, як вы адрэдагавалі файл telegraf.conf, перазапусціце службу Telegraf. Цяпер праверце InuxDB CLI, каб пераканацца, што вымярэнні створаны для ўсіх унікальных датчыкаў. Каб увайсці ў InuxDB CLI, увядзіце «influx».
Як відаць на малюнку. 9, увядзіце каманду inuxDB і выкарыстоўвайце базу дадзеных “telegraf”. Усе унікальныя назвы, прысвоеныя датчыкам, пералічаны як вымярэнні.
Каб убачыць вынікі любога вымярэння, каб пераканацца, што тэлеграфны файл правільны і датчык працуе, выкарыстоўвайце каманду «select * from cpu limit 1», як паказана на малюнку 10.
Кожны раз, калі ўносяцца змены ў файл telegraf.conf, абавязкова спыняйце InuxDB, перазапускайце Telegraf, а потым запускайце InuxDB.
Увайдзіце ў Grafana з браўзера і стварыце панэлі кіравання, пераканаўшыся, што даныя збіраюцца правільна.
Перайдзіце ў раздзел «Падключэнні > InfuxDB > Дадаць новую крыніцу даных».
- Дайце назву гэтай крыніцы даных. У гэтай дэманстрацыі гэта «тэст-1».
- Пад строфай HTTP выкарыстоўвайце IP-адрас сервера Ubuntu і порт 8086.
- У падрабязных звестках InfluxDB выкарыстоўвайце тую самую назву базы дадзеных, «telegraf», і ўвядзіце імя карыстальніка і пароль сервера Ubuntu.
- Націсніце Захаваць і праверыць. Пераканайцеся, што вы бачыце паведамленне "паспяхова".
- Пасля таго, як крыніца даных будзе паспяхова дададзена, перайдзіце да панэлі кіравання і націсніце «Новы». Давайце створым некалькі прыборных панэляў, якія важныя для працоўных нагрузак AI/ML у рэжыме рэдактара.
ExampLes Of Sensor Graphs
Наступныя эксampнекаторыя асноўныя лічыльнікі, неабходныя для маніторынгу сеткі AI/ML.
Працэнтtage выкарыстанне для ўваходнага інтэрфейсу et-0/0/0 на spine-1
- Выберыце крыніцу даных як test-1.
- У раздзеле FROM выберыце вымярэнне як «інтэрфейс». Гэта ўнікальная назва, якая выкарыстоўваецца для шляху датчыка.
- У раздзеле "ДЗЕ" абярыце прыладу::tag, і ў tag значэнне, выберыце імя хаста камутатара, гэта значыць spine1.
- У раздзеле ВЫБРАЦЬ абярыце галінку датчыка, якую вы хочаце кантраляваць; у гэтым выпадку выберыце «field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)». Цяпер у тым жа раздзеле націсніце на «+» і дадайце гэтую матэматыку разліку (/50000000000 * 100). Мы ў асноўным разлічваем працэнтыtage выкарыстанне інтэрфейсу 400G.
- Упэўніцеся, што FORMAT мае "часовы шэраг", і назавіце графік у раздзеле псеўданім.
Пікавая загрузка буфера для любой чаргі
- Выберыце крыніцу даных як test-1.
- У раздзеле FROM выберыце вымярэнне як «буфер».
- У раздзеле WHERE ёсць тры палі для запаўнення. Выберыце прыладу ::tag, і ў tag значэнне выбраць імя хаста камутатара (г.зн. spine-1); І абярыце /cos/interfaces/interface/@name::tag і абярыце інтэрфейс (г.зн. et- 0/0/0); І таксама выберыце чаргу, /cos/interfaces/interface/queues/queue/@queue::tag і выбіраем чаргу пад нумарам 4.
- У раздзеле ВЫБРАЦЬ абярыце галінку датчыка, якую вы хочаце кантраляваць; у гэтым выпадку абярыце «field(/cos/interfaces/interface/queues/queue/PeakBuerOccupancy)».
- Упэўніцеся, што ФАРМАТ з'яўляецца «часовым шэрагам» і назавіце графік у раздзеле псеўданім.
Вы можаце супаставіць даныя для некалькіх інтэрфейсаў на адным графіку, як паказана на малюнку 17 для et-0/0/0, et-0/0/1, et-0/0/2 і г.д.
PFC і ECN азначаюць вытворную
Для вызначэння сярэдняга вытворнага (розніцы ў значэнні ў дыяпазоне часу) выкарыстоўвайце рэжым неапрацаванага запыту.
Гэта запыт прытоку, які мы выкарыстоўвалі, каб знайсці сярэднюю вытворную паміж двума значэннямі PFC на et-0/0/0 Spine-1 за секунду.
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') І $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 (“device”::tag = 'Spine-1') І $timeFilter GROUP BY time($interval)
Памылкі ўваходных рэсурсаў азначаюць вытворную
Неапрацаваны запыт для памылак рэсурсу азначае вытворную:
SELECT derivative(mean(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) FROM “interface” WHERE (“device”::tag = 'Spine-1') І $timeFilter GROUP BY time($interval)
Хвост азначае вытворнае
Неапрацаваны запыт для вытворнай сярэдняга падзення хваста:
SELECT derivative(mean(“/cos/interfaces/interface/queues/queue/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)
Загрузка працэсара
- Выберыце крыніцу даных як test-1.
- У раздзеле FROM выберыце вымярэнне як «newcpu»
- У WHERE ёсць тры палі для запаўнення. Выберыце прыладу ::tag і ў tag значэнне выберыце імя хаста камутатара (напрыклад, spine-1). І ў /components/component/properties/property/name:tagі абярыце cpuutilization-total І ў name::tag выбраць RE0.
- У раздзеле ВЫБРАЦЬ абярыце галінку датчыка, якую вы хочаце кантраляваць. У гэтым выпадку абярыце «поле (стан/значэнне)».
Неапрацаваны запыт для знаходжання неадмоўнай вытворнай хваставога падзення для некалькіх пераключальнікаў на некалькіх інтэрфейсах у бітах/с.
SELECT non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 FROM “buer” WHERE (device::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 time($__interval),device::tag запоўніць (нуль)
Гэта былі адны з былыхampфайлы графікаў, якія можна стварыць для маніторынгу сеткі AI/ML.
Рэзюмэ
Гэты артыкул ілюструе метад атрымання тэлеметрычных даных і візуалізацыі іх шляхам стварэння графікаў. У гэтым артыкуле канкрэтна распавядаецца пра датчыкі AI/ML, як уласныя, так і openconfig, але ўстаноўку можна выкарыстоўваць для ўсіх відаў датчыкаў. Мы таксама ўключылі рашэнні для шматлікіх праблем, з якімі вы можаце сутыкнуцца падчас стварэння наладкі. Этапы і вынікі, апісаныя ў гэтым дакуменце, спецыфічныя для версій стэка 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 Інавацыйны шлях
Санівейл, Каліфорнія 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 Схіпхол-Рэйк
Амстэрдам, Нідэрланды
Тэлефон: +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 у праграмным забеспячэнні Junos for AI ML Workloads [pdfКіраўніцтва карыстальніка Тэлеметрыя ў Junos для праграмнага забеспячэння працоўных нагрузак AI ML, праграмнага забеспячэння Junos для працоўных нагрузак AI ML, праграмнага забеспячэння працоўных нагрузак AI ML, праграмнага забеспячэння працоўных нагрузак, праграмнага забеспячэння |