Juniper NETWORKS - логотипТелеметрія в Junos для робочих навантажень AI/ML
Автор: Шаліні Мукерджі

вступ

Оскільки для кластерного трафіку штучного інтелекту потрібні мережі без втрат із високою пропускною здатністю та низькою затримкою, критичним елементом мережі штучного інтелекту є збір даних моніторингу. Junos Telemetry забезпечує детальний моніторинг ключових показників ефективності, включаючи порогові значення та лічильники для управління перевантаженнями та балансування навантаження трафіку. Сесії gRPC підтримують потокову передачу телеметричних даних. gRPC — це сучасна високопродуктивна платформа з відкритим вихідним кодом, яка побудована на транспорті HTTP/2. Він розширює можливості рідної двонаправленої потокової передачі та включає гнучкі спеціальні метадані в заголовках запитів. Початковий крок у телеметрії – це знати, які дані збираються. Потім ми можемо аналізувати ці дані в різних форматах. Коли ми збираємо дані, важливо представити їх у форматі, який легко контролювати, приймати рішення та покращувати пропоновані послуги. У цьому документі ми використовуємо стек телеметрії, що складається з Telegraf, InfluxDB і Grafana. Цей стек телеметрії збирає дані за допомогою моделі push. Традиційні моделі вилучення ресурсомісткі, вимагають ручного втручання та можуть містити інформаційні прогалини в даних, які вони збирають. Push-моделі долають ці обмеження, доставляючи дані асинхронно. Вони збагачують дані, використовуючи зручні для користувача tags і імена. Коли дані перебувають у більш зручному для читання форматі, ми зберігаємо їх у базі даних і використовуємо в інтерактивній візуалізації web додаток для аналізу мережі. малюнок. 1 показано, як цей стек розроблено для ефективного збору, зберігання та візуалізації даних, від мережевих пристроїв, що надсилають дані до збирача, до даних, які відображаються на інформаційних панелях для аналізу.

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software -

TIG стек

Ми використовували сервер Ubuntu для встановлення всього програмного забезпечення, включаючи стек TIG.

Телеграф
Для збору даних ми використовуємо Telegraf на сервері Ubuntu під керуванням 22.04.2. Версія Telegraf, яка працює в цій демонстрації, — 1.28.5.
Telegraf — це плагін-керований серверний агент для збору показників і звітності. Він використовує процесор plugins для збагачення та нормалізації даних. Вихід plugins використовуються для надсилання цих даних до різних сховищ даних. У цьому документі ми використовуємо два plugins: один для датчиків openconfig, а інший для власних датчиків Juniper.
InfluxDB
Щоб зберігати дані в базі даних часових рядів, ми використовуємо InfluxDB. Плагін виводу в Telegraf надсилає дані до InfluxDB, яка зберігає їх у високоефективний спосіб. Ми використовуємо V1.8, оскільки немає CLI для V2 і вище.
Графана
Grafana використовується для візуалізації цих даних. Grafana отримує дані з InfluxDB і дозволяє користувачам створювати різноманітні та інтерактивні інформаційні панелі. Тут ми використовуємо версію 10.2.2.

Конфігурація на комутаторі

Щоб реалізувати цей стек, нам спочатку потрібно налаштувати комутатор, як показано на малюнку 2. Ми використали порт 50051. Тут можна використовувати будь-який порт. Увійдіть до комутатора QFX і додайте наступну конфігурацію.

Телеметрія Juniper NETWORKS у програмному забезпеченні Junos for AI ML Workloads – Switch

Примітка: Ця конфігурація призначена для лабораторій/POC, оскільки пароль передається відкритим текстом. Щоб уникнути цього, використовуйте SSL.

Навколишнє середовище

Телеметрія Juniper NETWORKS у програмному забезпеченні Junos for ML ML Workloads – середовище

Nginx
Це потрібно, якщо ви не можете відкрити порт, на якому розміщено Grafana. Наступним кроком є ​​встановлення nginx на сервері Ubuntu, який буде служити агентом зворотного проксі. Після встановлення nginx додайте рядки, показані на малюнку 4, до файлу «за замовчуванням» і перемістіть файл із /etc/nginx до /etc/nginx/sites-enabled.

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software – Nginx

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software – Nginx1

Переконайтеся, що брандмауер налаштовано для повного доступу до служби nginx, як показано на малюнку 5.

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software – Nginx2

Після встановлення nginx і внесення необхідних змін ми зможемо отримати доступ до Grafana з a web браузер за допомогою IP-адреси сервера Ubuntu, на якому встановлено все програмне забезпечення.
У 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

На сервері Ubuntu відредагуйте файл /etc/telegraf/telegraf.conf, щоб додати всі необхідні plugins і датчики. Для датчиків openconfig ми використовуємо плагін gNMI, показаний на малюнку 6. Для демонстраційних цілей додайте ім’я хоста як «spine1», номер порту «50051», який використовується для gRPC, ім’я користувача та пароль комутатора та номер секунд для повторного набору в разі невдачі.
У розділі підписки додайте унікальну назву «cpu» для цього конкретного датчика, шлях датчика та часовий інтервал для отримання цих даних із комутатора. Додайте той самий плагін inputs.gnmi та inputs.gnmi.subscription для всіх датчиків відкритої конфігурації. (Малюнок 6)

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software – Nginx3

Нативний плагін датчика

Це плагін інтерфейсу телеметрії Juniper, який використовується для рідних датчиків. У той самий файл telegraf.conf додайте власний плагін датчика inputs.jti_openconfig_telemetry, де поля майже такі ж, як у openconfig. Використовуйте унікальний ідентифікатор клієнта для кожного датчика; тут ми використовуємо «telegraf3». Унікальна назва, яка використовується тут для цього датчика, — «mem» (рис. 7).

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software – Nginx4

Нарешті, додайте вихідний модуль outputs.influxdb, щоб надіслати ці дані датчиків до InuxDB. Тут база даних називається «telegraf» з іменем користувача «influx» і паролем «influxdb» (рис. 8).

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software – Nginx5

Після редагування файлу telegraf.conf перезапустіть службу telegraf. Тепер перевірте в InfluxDB CLI, щоб переконатися, що вимірювання створено для всіх унікальних датчиків. Введіть “influx”, щоб увійти в InfluxDB CLI.

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software – Nginx6

Як видно на малюнку. 9, увійдіть у запит influxDB і використовуйте базу даних “telegraf”. Усі унікальні назви, надані датчикам, перераховані як вимірювання.
Щоб побачити результат будь-якого вимірювання, щоб переконатися, що телеграфний файл правильний і датчик працює, скористайтеся командою «select * from cpu limit 1», як показано на малюнку 10.

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software – Nginx7

Кожного разу, коли вносяться зміни до файлу telegraf.conf, обов’язково зупиняйте InfluxDB, перезапускайте Telegraf, а потім запускайте InfluxDB.
Увійдіть у Grafana з браузера та створіть інформаційні панелі, переконавшись, що дані збираються правильно.
Перейдіть до З’єднання > InfuxDB > Додати нове джерело даних.

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software – Nginx8

  1. Дайте назву цьому джерелу даних. У цій демонстрації це «test-1».
  2.  У розділі HTTP використовуйте IP-адресу сервера Ubuntu і порт 8086.
    Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software – Nginx9
  3. У деталях InfluxDB використовуйте ту саму назву бази даних, «telegraf», і вкажіть ім’я користувача та пароль сервера Ubuntu.
  4. Натисніть Зберегти та перевірити. Переконайтеся, що ви бачите повідомлення «успішно».
    Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software – Nginx10
  5. Після успішного додавання джерела даних перейдіть до панелей інструментів і натисніть «Створити». Давайте створимо кілька інформаційних панелей, які необхідні для роботи AI/ML у режимі редактора.

ExampLes Of Sensor Graphs

Нижче наведено напрampдеякі основні лічильники, необхідні для моніторингу мережі AI/ML.
Відсотокtage використання для вхідного інтерфейсу et-0/0/0 на spine-1
Телеметрія Juniper NETWORKS у програмному забезпеченні Junos for ML ML Workloads – графіки

  • Виберіть джерело даних як 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 має значення «time-series», і назвіть графік у розділі ALIAS.

Телеметрія Juniper NETWORKS у програмному забезпеченні Junos for AI ML Workloads – Graphs1Пікова зайнятість буфера для будь-якої черги

Телеметрія Juniper NETWORKS у програмному забезпеченні Junos for AI ML Workloads – Graphs2

  • Виберіть джерело даних як 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)».
  • Переконайтеся, що FORMAT має значення «time-series» і назвіть графік у розділі ALIAS.

Ви можете порівнювати дані для кількох інтерфейсів на одному графіку, як показано на малюнку 17 для et-0/0/0, et-0/0/1, et-0/0/2 тощо.

Телеметрія Juniper NETWORKS у програмному забезпеченні Junos for AI ML Workloads – Graphs3

PFC і ECN середня похідна
Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software – похідне

Щоб знайти середню похідну (різниця в значенні в межах діапазону часу), використовуйте режим необробленого запиту.
Це запит на приплив, який ми використали, щоб знайти середню похідну між двома значеннями 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 ГРУПУВАННЯ ЗА часом ($interval)

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software - аналогічно для ECN

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 ГРУПУВАННЯ ЗА часом ($interval)

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software - аналогічно для ECN1

Помилки вхідного ресурсу означають похідну

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software - аналогічно для ECN2

Необроблений запит для помилок ресурсу означає похідну:
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 ГРУПУВАННЯ ЗА часом ($interval)

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software - аналогічно для ECN3

Хвостик означає похідне

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software - аналогічно для ECN4

Необроблений запит для похідної середнього значення:
SELECT derivative(mean(“/cos/interfaces/interface/queues/queue/queue/tailDropBytes”), 1s) FROM “buer” WHERE (“пристрій”::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)
 Завантаження ЦП

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software - використання ЦП

  • Виберіть джерело даних як test-1.
  • У розділі FROM виберіть вимірювання як «newcpu»
  • У WHERE є три поля для заповнення. Виберіть пристрій::tag і в tag значення виберіть ім'я хоста комутатора (тобто spine-1). І в /components/component/properties/property/name:tagі виберіть cpuutilization-total AND у name::tag виберіть RE0.
  • У розділі ВИБІР виберіть гілку датчика, яку потрібно контролювати. У цьому випадку виберіть «поле (стан/значення)».

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software - CPU utilization1

Необроблений запит для знаходження невід’ємної похідної хвоста для кількох комутаторів на кількох інтерфейсах у бітах/с.
SELECT non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 FROM “buer” 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 time($__interval),device::tag заповнити (null)

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software - CPU utilization2

Це були деякі з колишніх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 Telemetry In Junos for AI ML Workloads Software — значок

Корпоративний і торговий штаб
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 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 у програмному забезпеченні Junos for ML ML Workloads [pdfПосібник користувача
Телеметрія в Junos for AI ML Workloads Software, Junos for AI ML Workloads Software, AI ML Workloads Software, Workloads Software, Software

Список літератури

Залиште коментар

Ваша електронна адреса не буде опублікована. Обов'язкові поля позначені *