Logo Juniper NETWORKSTelemetria w Junos dla obciążeń AI/ML
Autor: Shalini Mukherjee

Wstęp

Ponieważ ruch klastra AI wymaga bezstratnych sieci o wysokiej przepustowości i niskim opóźnieniu, kluczowym elementem sieci AI jest zbieranie danych monitorujących. Junos Telemetry umożliwia szczegółowe monitorowanie kluczowych wskaźników wydajności, w tym progów i liczników do zarządzania przeciążeniem i równoważenia obciążenia ruchu. Sesje gRPC obsługują przesyłanie strumieniowe danych telemetrycznych. gRPC to nowoczesne, wysokowydajne środowisko typu open source, które opiera się na transporcie HTTP/2. Umożliwia natywne dwukierunkowe przesyłanie strumieniowe i obejmuje elastyczne niestandardowe metadane w nagłówkach żądania. Pierwszym krokiem w telemetrii jest wiedza, jakie dane mają być zbierane. Następnie możemy analizować te dane w różnych formatach. Po zebraniu danych ważne jest, aby przedstawić je w formacie, który jest łatwy do monitorowania, podejmowania decyzji i ulepszania oferowanej usługi. W tym artykule używamy stosu telemetrycznego składającego się z Telegraf, InfluxDB i Grafana. Ten stos telemetryczny zbiera dane przy użyciu modelu push. Tradycyjne modele pull są zasobochłonne, wymagają ręcznej interwencji i mogą zawierać luki informacyjne w zbieranych danych. Modele push pokonują te ograniczenia, dostarczając dane asynchronicznie. Wzbogacają dane, wykorzystując przyjazne dla użytkownika tags i imiona. Gdy dane uzyskają bardziej czytelny format, przechowujemy je w bazie danych i wykorzystujemy w interaktywnej wizualizacji web aplikacja do analizy sieci. Rysunek 1 pokazuje nam, jak ten stos jest zaprojektowany do wydajnego zbierania, przechowywania i wizualizacji danych, od urządzeń sieciowych przesyłających dane do kolektora po dane wyświetlane na pulpitach nawigacyjnych w celu analizy.

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads -

Stos TIG

Do zainstalowania całego oprogramowania, w tym stosu TIG, użyliśmy serwera Ubuntu.

telegraf
Do zbierania danych używamy Telegrafa na serwerze Ubuntu z systemem 22.04.2. Wersja Telegrafa uruchomiona w tej wersji demonstracyjnej to 1.28.5.
Telegraf to oparty na wtyczkach agent serwera do zbierania i raportowania metryk. Używa procesora plugins wzbogacać i normalizować dane. Wyjście plugins służą do wysyłania tych danych do różnych magazynów danych. W tym dokumencie używamy dwóch plugins: jeden dla czujników openconfig, a drugi dla natywnych czujników Juniper.
InfluxDB
Aby przechowywać dane w bazie danych szeregów czasowych, używamy InfluxDB. Wtyczka wyjściowa w Telegrafie wysyła dane do InfluxDB, który przechowuje je w wysoce wydajny sposób. Używamy V1.8, ponieważ nie ma CLI dla V2 i nowszych.
Grafana
Grafana służy do wizualizacji tych danych. Grafana pobiera dane z InfluxDB i pozwala użytkownikom tworzyć bogate i interaktywne pulpity nawigacyjne. Tutaj uruchamiamy wersję 10.2.2.

Konfiguracja na przełączniku

Aby wdrożyć ten stos, najpierw musimy skonfigurować przełącznik, jak pokazano na rysunku 2. Użyliśmy portu 50051. Można użyć dowolnego portu. Zaloguj się do przełącznika QFX i dodaj następującą konfigurację.

Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software - Switch

Notatka: Ta konfiguracja jest przeznaczona dla laboratoriów/POC, ponieważ hasło jest przesyłane w postaci zwykłego tekstu. Użyj SSL, aby tego uniknąć.

Środowisko

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — środowisko

Nginx
Jest to potrzebne, jeśli nie możesz udostępnić portu, na którym hostowana jest Grafana. Następnym krokiem jest zainstalowanie nginx na serwerze Ubuntu, aby służył jako odwrotny agent proxy. Po zainstalowaniu nginx dodaj wiersze pokazane na rysunku 4 do pliku „default” i przenieś plik z /etc/nginx do /etc/nginx/sites-enabled.

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Nginx

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Nginx1

Upewnij się, że zapora sieciowa jest dostosowana tak, aby zapewnić pełny dostęp do usługi nginx, jak pokazano na rysunku 5.

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Nginx2

Po zainstalowaniu Nginx i wprowadzeniu wymaganych zmian powinniśmy mieć dostęp do Grafany z poziomu pliku web przeglądarkę, korzystając z adresu IP serwera Ubuntu, na którym zainstalowane jest całe oprogramowanie.
W Grafanie występuje mały błąd, który nie pozwala zresetować domyślnego hasła. Jeśli napotkasz ten problem, wykonaj te czynności.
Kroki, które należy wykonać na serwerze Ubuntu, aby ustawić hasło w Grafanie:

  • Przejdź do /var/lib/grafana/grafana.db
  • Zainstaluj sqllite3
    o sudo apt install sqlite3
  • Uruchom to polecenie na swoim terminalu
    o sqlite3 grafana.db
  •  Otwiera się wiersz poleceń SQLite; uruchom następujące zapytanie:
    >usuń z użytkownika, gdzie login='admin'
  • Uruchom ponownie grafana i wpisz admin jako nazwę użytkownika i hasło. Zostaniesz poproszony o podanie nowego hasła.

Po zainstalowaniu całego oprogramowania należy utworzyć plik konfiguracyjny w Telegrafie, który pomoże pobrać dane telemetryczne z przełącznika i przesłać je do InfluxDB.

Wtyczka czujnika Openconfig

Na serwerze Ubuntu edytuj plik /etc/telegraf/telegraf.conf, aby dodać wszystkie wymagane plugins i czujników. W przypadku czujników openconfig używamy wtyczki gNMI pokazanej na rysunku 6. W celach demonstracyjnych dodaj nazwę hosta jako „spine1”, numer portu „50051” używany dla gRPC, nazwę użytkownika i hasło przełącznika oraz liczbę sekund ponownego wybierania w przypadku awarii.
W sekcji subskrypcji dodaj unikalną nazwę „cpu” dla tego konkretnego czujnika, ścieżkę czujnika i interwał czasowy pobierania tych danych z przełącznika. Dodaj tę samą wtyczkę inputs.gnmi i inputs.gnmi.subscription dla wszystkich otwartych czujników konfiguracji. (Rysunek 6)

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Nginx3

Natywna wtyczka czujnika

To jest wtyczka interfejsu telemetrii Juniper używana dla natywnych czujników. W tym samym pliku telegraf.conf dodaj natywną wtyczkę czujnika inputs.jti_openconfig_telemetry, gdzie pola są prawie takie same jak w pliku openconfig. Użyj unikalnego identyfikatora klienta dla każdego czujnika; tutaj używamy „telegraf3”. Unikalna nazwa użyta tutaj dla tego czujnika to „mem” (Rysunek 7).

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Nginx4

Na koniec dodaj wtyczkę wyjściową outputs.influxdb, aby wysłać te dane czujnika do InfluxDB. Tutaj baza danych nosi nazwę „telegraf”, a nazwa użytkownika to „influx” i hasło „influxdb” (Rysunek 8).

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Nginx5

Po edycji pliku telegraf.conf uruchom ponownie usługę telegraf. Teraz sprawdź w InfluxDB CLI, czy pomiary zostały utworzone dla wszystkich unikalnych czujników. Wpisz „influx”, aby wejść do InfluxDB CLI.

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Nginx6

Jak widać na Rysunku 9, wprowadź monit influxDB i użyj bazy danych „telegraf”. Wszystkie unikalne nazwy nadane czujnikom są wymienione jako pomiary.
Aby zobaczyć wynik dowolnego pomiaru, a także upewnić się, że plik telegrafu jest poprawny i czujnik działa, należy użyć polecenia „select * from cpu limit 1”, jak pokazano na rysunku 10.

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Nginx7

Za każdym razem, gdy wprowadzasz zmiany w pliku telegraf.conf, pamiętaj o zatrzymaniu InfluxDB, ponownym uruchomieniu Telegrafa, a następnie ponownym uruchomieniu InfluxDB.
Zaloguj się do Grafany z poziomu przeglądarki i utwórz pulpity nawigacyjne po upewnieniu się, że dane są zbierane prawidłowo.
Przejdź do Połączenia > InfuxDB > Dodaj nowe źródło danych.

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Nginx8

  1. Podaj nazwę tego źródła danych. W tej wersji demonstracyjnej jest to „test-1”.
  2.  W sekcji HTTP użyj adresu IP serwera Ubuntu i portu 8086.
    Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Nginx9
  3. W szczegółach InfluxDB użyj tej samej nazwy bazy danych, „telegraf”, i podaj nazwę użytkownika i hasło serwera Ubuntu.
  4. Kliknij Zapisz i przetestuj. Upewnij się, że widzisz komunikat „pomyślnie”.
    Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Nginx10
  5. Po pomyślnym dodaniu źródła danych przejdź do Dashboards i kliknij New (Nowy). Utwórzmy kilka dashboardów, które są niezbędne dla obciążeń AI/ML w trybie edytora.

Examppliki wykresów czujnika

Oto byłyamppliki niektórych głównych liczników niezbędnych do monitorowania sieci AI/ML.
ProcenttagWykorzystanie interfejsu wejściowego et-0/0/0 na kręgosłupie-1
Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — wykresy

  • Wybierz źródło danych jako test-1.
  • W sekcji FROM wybierz pomiar jako „interface”. Jest to unikalna nazwa używana dla tej ścieżki czujnika.
  • W sekcji GDZIE wybierz urządzenie:tagi w tag wartość, wybierz nazwę hosta przełącznika, czyli spine1.
  • W sekcji SELECT wybierz gałąź czujnika, którą chcesz monitorować; w tym przypadku wybierz „field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)”. Teraz w tej samej sekcji kliknij „+” i dodaj tę kalkulację matematyczną (/50000000000 * 100). Zasadniczo obliczamy procenttagWykorzystanie interfejsu 400G.
  • Upewnij się, że FORMAT jest ustawiony na „seria czasowa” i nadaj wykresowi nazwę w sekcji ALIAS.

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Graphs1Szczytowe zapełnienie bufora dla dowolnej kolejki

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Graphs2

  • Wybierz źródło danych jako test-1.
  • W sekcji OD wybierz pomiar jako „bufor”.
  • W sekcji WHERE znajdują się trzy pola do wypełnienia. Wybierz urządzenie::tagi w tag wartość wybierz nazwę hosta przełącznika (np. spine-1); ORAZ wybierz /cos/interfaces/interface/@name::tag i wybierz interfejs (np. et- 0/0/0); ORAZ wybierz także kolejkę, /cos/interfaces/interface/queues/queue/@queue::tag i wybierz kolejkę numer 4.
  • W sekcji SELECT wybierz gałąź czujnika, którą chcesz monitorować; w tym przypadku wybierz „field(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy)”.
  • Upewnij się, że FORMAT jest ustawiony na „seria czasowa” i nadaj wykresowi nazwę w sekcji ALIAS.

Dane dla wielu interfejsów można zestawiać na tym samym wykresie, jak pokazano na rysunku 17, dla et-0/0/0, et-0/0/1, et-0/0/2 itd.

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — Graphs3

PFC i ECN oznaczają pochodną
Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — pochodna

Aby znaleźć średnią pochodną (różnicę wartości w określonym przedziale czasowym), należy użyć trybu zapytania surowego.
To jest zapytanie napływowe, którego użyliśmy do znalezienia średniej pochodnej między dwiema wartościami PFC na et-0/0/0 Spine-1 w ciągu sekundy.
WYBIERZ pochodną(średnia(“/interfejsy/interfejs[if_name='et-0/0/0′]/stan/licznik-pfc/tx_pkts”), 1s) Z “interfejs” GDZIE (“urządzenie”::tag = 'Spine-1') ORAZ $timeFilter GROUP WEDŁUG czasu($interval)

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — podobnie jak w przypadku ECN

WYBIERZ pochodną(średnia(“/interfejsy/interfejs[if_name='et-0/0/8′]/stan/liczniki-błędów/pkt_oznaczone_ecn_ce”), 1s) Z “interfejs” GDZIE (“urządzenie”::tag = 'Spine-1') ORAZ $timeFilter GROUP WEDŁUG czasu($interval)

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — podobnie jak w przypadku ECN1

Błędy zasobów wejściowych oznaczają pochodną

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — podobnie jak w przypadku ECN2

Surowe zapytanie o średnią pochodną błędów zasobów wygląda następująco:
WYBIERZ pochodną(średnia(“/interfejsy/interfejs[if_name='et-0/0/0′]/stan/liczniki-błędów/błędy_jeśli_w_zasobach”), 1s) Z “interfejs” GDZIE (“urządzenie”::tag = 'Spine-1') ORAZ $timeFilter GROUP WEDŁUG czasu($interval)

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — podobnie jak w przypadku ECN3

Ogon oznacza pochodną

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — podobnie jak w przypadku ECN4

Surowe zapytanie o spadek ogona oznacza pochodną:
WYBIERZ pochodną(średnia(“/cos/interfejsy/interfejs/kolejki/kolejka/ogonDropBytes”), 1s) Z “bufor” GDZIE (“urządzenie”::tag = 'Liść-1' ORAZ „/cos/interfaces/interface/@name”::tag = 'et-0/0/0' ORAZ „/cos/interfaces/interface/queues/queue/@queue”::tag = '4') I $timeFilter GRUPUJ WEDŁUG czasu($__interval) wypelnij(null)
 Wykorzystanie procesora

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — wykorzystanie procesora

  • Wybierz źródło danych jako test-1.
  • W sekcji OD wybierz pomiar jako „newcpu”
  • W polu WHERE są trzy pola do wypełnienia. Wybierz urządzenie::tag i w tag wartość wybierz nazwę hosta przełącznika (np. spine-1). ORAZ w /components/component/properties/property/name:tagi wybierz cpuutilization-total ORAZ w nazwie::tag wybierz RE0.
  • W sekcji SELECT wybierz gałąź czujnika, którą chcesz monitorować. W tym przypadku wybierz „field(state/value)”.

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — wykorzystanie procesora1

Surowe zapytanie mające na celu znalezienie nieujemnej pochodnej spadku końcowego dla wielu przełączeń na wielu interfejsach w bitach na sekundę.
WYBIERZ nieujemną_pochodną(średnia(“/cos/interfejsy/interfejs/kolejki/kolejka/tailDropBytes”), 1s)*8 Z “bufora” GDZIE (urządzenie::tag =~ /^Spine-[1-2]$/) i („/cos/interfaces/interface/@name”::tag =~ /et-0\/0\/[0-9]/ lub „/cos/interfaces/interface/@name”::tag=~/et-0\/0\/1[0-5]/) I $timeFilter GRUPUJ WEDŁUG time($__interval),device::tag wypełnij(null)

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — wykorzystanie procesora2

To byli niektórzy z byłychamppliki wykresów, które można utworzyć w celu monitorowania sieci AI/ML.

Streszczenie

W tym artykule zilustrowano metodę pobierania danych telemetrycznych i ich wizualizacji poprzez tworzenie wykresów. W tym artykule omówiono konkretnie czujniki AI/ML, zarówno natywne, jak i openconfig, ale konfiguracja może być używana dla wszystkich rodzajów czujników. Zawarliśmy również rozwiązania dla wielu problemów, z którymi możesz się spotkać podczas tworzenia konfiguracji. Kroki i wyniki przedstawione w tym artykule są specyficzne dla wersji stosu TIG wymienionych wcześniej. Mogą ulec zmianie w zależności od wersji oprogramowania, czujników i wersji Junos.

Odniesienia

Juniper Yang Data Model Explorer dla wszystkich opcji czujników
https://apps.juniper.net/ydm-explorer/
Forum Openconfig dla czujników Openconfig
https://www.openconfig.net/projects/models/

Telemetria Juniper NETWORKS w oprogramowaniu Junos for AI ML Workloads — ikona

Centrala korporacyjna i sprzedażowa
Juniper Networks, Inc.
1133 sposób innowacji
Sunnyvale, CA 94089 Stany Zjednoczone
Telefon: 888. JUNIPER (888.586.4737)
lub +1.408.745.2000
Faks: +1.408.745.2100
www.juniper.net
Centrale APAC i EMEA
Juniper Networks International BV
Aleja Boeinga 240
1119 PZ Schiphol-Rijk
Amsterdam, Holandia
Telefon: +31.207.125.700
Faks: +31.207.125.701
Prawa autorskie 2023 Juniper Networks. Inc. Wszystkie prawa zastrzeżone. Juniper Networks, logo Juniper Networks, Juniper, Junos i inne znaki towarowe są zarejestrowanymi znakami towarowymi Juniper Networks. inc. i/lub jej podmiotów stowarzyszonych w Stanach Zjednoczonych i innych krajach. Inne nazwy mogą być znakami towarowymi ich właścicieli. Juniper Networks nie ponosi odpowiedzialności za jakiekolwiek nieścisłości w tym dokumencie. Juniper Networks zastrzega sobie prawo do zmiany, modyfikacji, przeniesienia lub w inny sposób rewizji tej publikacji bez powiadomienia.
Wyślij opinię na adres: design-center-comments@juniper.net Wersja 1.0/240807/ejm5-telemetry-junos-ai-ml

Dokumenty / Zasoby

Telemetria Juniper NETWORKS w oprogramowaniu Junos dla obciążeń AI ML [plik PDF] Instrukcja użytkownika
Telemetria w oprogramowaniu Junos do obsługi obciążeń AI ML, oprogramowanie do obsługi obciążeń AI ML Junos, oprogramowanie do obsługi obciążeń AI ML, oprogramowanie do obsługi obciążeń, oprogramowanie

Odniesienia

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *