Logo Juniper NETWORKSTélémétrie dans Junos pour les charges de travail IA/ML
Auteur : Shalini Mukherjee

Introduction

Étant donné que le trafic des clusters d'IA nécessite des réseaux sans perte avec un débit élevé et une faible latence, un élément essentiel du réseau d'IA est la collecte de données de surveillance. Junos Telemetry permet une surveillance granulaire des indicateurs de performance clés, notamment des seuils et des compteurs pour la gestion des congestions et l'équilibrage de la charge du trafic. Les sessions gRPC prennent en charge le streaming des données de télémétrie. gRPC est un framework moderne, open source et hautes performances basé sur le transport HTTP/2. Il renforce les capacités natives de streaming bidirectionnel et inclut des métadonnées personnalisées flexibles dans les en-têtes de requête. La première étape de la télémétrie consiste à savoir quelles données doivent être collectées. Nous pouvons ensuite analyser ces données sous différents formats. Une fois les données collectées, il est important de les présenter dans un format facile à suivre, à prendre des décisions et à améliorer le service offert. Dans cet article, nous utilisons une pile de télémétrie composée de Telegraf, InfluxDB et Grafana. Cette pile de télémétrie collecte des données à l'aide d'un modèle push. Les modèles pull traditionnels sont gourmands en ressources, nécessitent une intervention manuelle et peuvent inclure des lacunes d'information dans les données qu'ils collectent. Les modèles push surmontent ces limitations en fournissant des données de manière asynchrone. Ils enrichissent les données en utilisant des outils conviviaux tags et des noms. Une fois les données dans un format plus lisible, nous les stockons dans une base de données et les utilisons dans une visualisation interactive. web application d'analyse du réseau. Chiffre. 1 nous montre comment cette pile est conçue pour une collecte, un stockage et une visualisation efficaces des données, depuis les périphériques réseau transmettant les données au collecteur jusqu'aux données affichées sur les tableaux de bord pour analyse.

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML -

Pile TIG

Nous avons utilisé un serveur Ubuntu pour installer tous les logiciels, y compris la pile TIG.

Télégraphe
Pour collecter des données, nous utilisons Telegraf sur un serveur Ubuntu exécutant 22.04.2. La version de Telegraf exécutée dans cette démo est la 1.28.5.
Telegraf est un agent serveur piloté par plugin pour la collecte et la création de rapports de métriques. Il utilise un processeur plugins pour enrichir et normaliser les données. La sortie plugins sont utilisés pour envoyer ces données à divers magasins de données. Dans ce document, nous utilisons deux plugins: un pour les capteurs openconfig et l'autre pour les capteurs natifs Juniper.
InfluxDB
Pour stocker les données dans une base de données de séries chronologiques, nous utilisons InfluxDB. Le plugin de sortie de Telegraf envoie les données à InfluxDB, qui les stocke de manière très efficace. Nous utilisons la V1.8 car il n'y a pas de CLI présente pour la V2 et les versions supérieures.
Grafana
Grafana est utilisé pour visualiser ces données. Grafana extrait les données d'InfluxDB et permet aux utilisateurs de créer des tableaux de bord riches et interactifs. Ici, nous exécutons la version 10.2.2.

Configuration sur le commutateur

Pour implémenter cette pile, nous devons d'abord configurer le commutateur comme indiqué dans la figure 2. Nous avons utilisé le port 50051. N'importe quel port peut être utilisé ici. Connectez-vous au commutateur QFX et ajoutez la configuration suivante.

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Switch

Note: Cette configuration est destinée aux laboratoires/POC car le mot de passe est transmis en texte clair. Utilisez SSL pour éviter cela.

Environnement

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Environnement

Nginx
Ceci est nécessaire si vous ne parvenez pas à exposer le port sur lequel Grafana est hébergé. L'étape suivante consiste à installer nginx sur le serveur Ubuntu pour servir d'agent proxy inverse. Une fois nginx installé, ajoutez les lignes indiquées dans la figure 4 au fichier « par défaut » et déplacez le fichier de /etc/nginx vers /etc/nginx/sites-enabled.

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Nginx

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Nginx1

Assurez-vous que le pare-feu est ajusté pour donner un accès complet au service nginx, comme indiqué dans la figure 5.

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Nginx2

Une fois nginx installé et les modifications requises apportées, nous devrions pouvoir accéder à Grafana depuis un web navigateur en utilisant l'adresse IP du serveur Ubuntu sur lequel tous les logiciels sont installés.
Il y a un petit problème dans Grafana qui ne vous permet pas de réinitialiser le mot de passe par défaut. Utilisez ces étapes si vous rencontrez ce problème.
Étapes à effectuer sur le serveur Ubuntu pour définir le mot de passe dans Grafana :

  • Allez dans /var/lib/grafana/grafana.db
  • Installer SQLlite3
    ou sudo apt install sqlite3
  • Exécutez cette commande sur votre terminal
    o sqlite3 grafana.db
  •  L'invite de commande SQLite s'ouvre ; exécutez la requête suivante :
    > supprimer de l'utilisateur où login = 'admin'
  • Redémarrez grafana et tapez admin comme nom d'utilisateur et mot de passe. Il vous demande un nouveau mot de passe.

Une fois tous les logiciels installés, créez le fichier de configuration dans Telegraf qui vous aidera à extraire les données de télémétrie du commutateur et à les transmettre à InfluxDB.

Plugin de capteur Openconfig

Sur le serveur Ubuntu, éditez le fichier /etc/telegraf/telegraf.conf pour ajouter tous les éléments requis. plugins et des capteurs. Pour les capteurs openconfig, nous utilisons le plugin gNMI illustré à la figure 6. À des fins de démonstration, ajoutez le nom d'hôte « spine1 », le numéro de port « 50051 » utilisé pour gRPC, le nom d'utilisateur et le mot de passe du commutateur, ainsi que le numéro de secondes pour recomposer en cas d'échec.
Dans la strophe d'abonnement, ajoutez un nom unique, « cpu » pour ce capteur particulier, le chemin du capteur et l'intervalle de temps pour récupérer ces données à partir du commutateur. Ajoutez le même plugin inputs.gnmi et inputs.gnmi.subscription pour tous les capteurs de configuration ouverts. (Figure 6)

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Nginx3

Plugin de capteur natif

Il s'agit d'un plugin d'interface de télémétrie Juniper utilisé pour les capteurs natifs. Dans le même fichier telegraf.conf, ajoutez le plugin de capteur natif inputs.jti_openconfig_telemetry où les champs sont presque les mêmes qu'openconfig. Utilisez un identifiant client unique pour chaque capteur ; ici, nous utilisons « telegraf3 ». Le nom unique utilisé ici pour ce capteur est « mem » (Figure 7).

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Nginx4

Enfin, ajoutez un plugin de sortie outputs.influxdb pour envoyer ces données de capteur à InfluxDB. Ici, la base de données est nommée « telegraf » avec le nom d'utilisateur « influx » et le mot de passe « influxdb » (Figure 8).

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Nginx5

Une fois que vous avez modifié le fichier telegraf.conf, redémarrez le service telegraf. Maintenant, vérifiez dans la CLI InfluxDB pour vous assurer que des mesures sont créées pour tous les capteurs uniques. Tapez « influx » pour accéder à la CLI InfluxDB.

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Nginx6

Comme le montre la figure. 9, entrez l'invite influxDB et utilisez la base de données « telegraf ». Tous les noms uniques donnés aux capteurs sont répertoriés comme mesures.
Pour voir le résultat d'une mesure, juste pour vous assurer que le fichier telegraf est correct et que le capteur fonctionne, utilisez la commande « select * from cpu limit 1 » comme indiqué dans la figure 10.

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Nginx7

Chaque fois que des modifications sont apportées au fichier telegraf.conf, assurez-vous d'arrêter InfluxDB, de redémarrer Telegraf, puis de démarrer InfluxDB.
Connectez-vous à Grafana depuis le navigateur et créez des tableaux de bord après vous être assuré que les données sont correctement collectées.
Accédez à Connexions > InfuxDB > Ajouter une nouvelle source de données.

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Nginx8

  1. Donnez un nom à cette source de données. Dans cette démo, il s'agit de « test-1 ».
  2.  Sous la strophe HTTP, utilisez l'adresse IP du serveur Ubuntu et le port 8086.
    Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Nginx9
  3. Dans les détails d'InfluxDB, utilisez le même nom de base de données, « telegraf », et fournissez le nom d'utilisateur et le mot de passe du serveur Ubuntu.
  4. Cliquez sur Enregistrer et tester. Assurez-vous de voir le message « réussi ».
    Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Nginx10
  5. Une fois la source de données ajoutée avec succès, accédez à Tableaux de bord et cliquez sur Nouveau. Créons quelques tableaux de bord essentiels pour les charges de travail AI/ML en mode éditeur.

Exampfichiers de graphiques de capteurs

Voici quelques exemplesamples de certains compteurs majeurs essentiels à la surveillance d’un réseau AI/ML.
Pourcentagetage utilisation pour une interface d'entrée et-0/0/0 sur spine-1
Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Graphiques

  • Sélectionnez la source de données comme test-1.
  • Dans la section FROM, sélectionnez la mesure comme « interface ». Il s'agit du nom unique utilisé pour ce chemin de capteur.
  • Dans la section OÙ, sélectionnez l'appareil : :tag, et dans le tag valeur, sélectionnez le nom d’hôte du commutateur, c’est-à-dire spine1.
  • Dans la section SELECT, choisissez la branche de capteur que vous souhaitez surveiller ; dans ce cas, choisissez « field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets) ». Maintenant dans la même section, cliquez sur « + » et ajoutez ce calcul mathématique (/50000000000 * 100). Nous calculons essentiellement le pourcentagetage utilisation d'une interface 400G.
  • Assurez-vous que le FORMAT est « série chronologique » et nommez le graphique dans la section ALIAS.

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Graphs1Occupation maximale de la mémoire tampon pour n'importe quelle file d'attente

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Graphs2

  • Sélectionnez la source de données comme test-1.
  • Dans la section FROM, sélectionnez la mesure comme « tampon ».
  • Dans la section WHERE, il y a trois champs à remplir. Sélectionnez l'appareil : :tag, et dans le tag value sélectionne le nom d'hôte du commutateur (c'est-à-dire spine-1) ; ET sélectionnez /cos/interfaces/interface/@name ::tag et sélectionnez l'interface (ie et- 0/0/0) ; ET sélectionnez également la file d'attente, /cos/interfaces/interface/queues/queue/@queue::tag et choisissez le numéro de file d'attente 4.
  • Dans la section SELECT, choisissez la branche de capteur que vous souhaitez surveiller ; dans ce cas, choisissez « field(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy). »
  • Assurez-vous que le FORMAT est « série chronologique » et nommez le graphique dans la section ALIAS.

Vous pouvez rassembler les données de plusieurs interfaces sur le même graphique, comme le montre la figure 17 pour et-0/0/0, et-0/0/1, et-0/0/2, etc.

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Graphs3

Dérivée moyenne PFC et ECN
Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - dérivé

Pour trouver la dérivée moyenne (la différence de valeur dans une plage de temps), utilisez le mode de requête brute.
Il s'agit de la requête d'influx que nous avons utilisée pour trouver la dérivée moyenne entre deux valeurs PFC sur et-0/0/0 de Spine-1 en une seconde.
SELECT dérivé(mean("/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts"), 1s) FROM "interface" WHERE ("périphérique"::tag = 'Spine-1') ET $timeFilter GROUP BY time($interval)

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - De même pour ECN

SELECT dérivé(mean("/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts"), 1s) FROM "interface" WHERE ("périphérique"::tag = 'Spine-1') ET $timeFilter GROUP BY time($interval)

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - De même pour ECN1

Les erreurs de ressources d'entrée signifient la dérivée

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - De même pour ECN2

La requête brute pour la dérivée moyenne des erreurs de ressources est :
SELECT dérivé(mean("/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors"), 1s) FROM "interface" WHERE ("périphérique"::tag = 'Spine-1') ET $timeFilter GROUP BY time($interval)

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - De même pour ECN3

Les chutes de queue signifient la dérivée

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - De même pour ECN4

La requête brute pour la dérivée moyenne des chutes de queue est :
SELECT dérivé(mean("/cos/interfaces/interface/queues/queue/tailDropBytes"), 1s) FROM "buffer" WHERE ("device"::tag = 'Feuille-1' ET « /cos/interfaces/interface/@name » : tag = 'et-0/0/0' ET « /cos/interfaces/interface/queues/queue/@queue » : :tag = '4') ET $timeFilter GROUP BY time($__interval) fill(null)
 Utilisation du processeur

Télémétrie Juniper NETWORKS dans Junos pour le logiciel AI ML Workloads - Utilisation du processeur

  • Sélectionnez la source de données comme test-1.
  • Dans la section FROM, sélectionnez la mesure comme « newcpu »
  • Dans le WHERE, il y a trois champs à remplir. Sélectionnez l'appareil : :tag et dans le tag value sélectionnez le nom d'hôte du commutateur (c'est-à-dire spine-1). ET dans /components/component/properties/property/name :tag, et sélectionnez cpuutilization-total AND dans name ::tag sélectionnez RE0.
  • Dans la section SELECT, choisissez la branche de capteur que vous souhaitez surveiller. Dans ce cas, choisissez « field(state/value) ».

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Utilisation du processeur1

La requête brute pour trouver la dérivée non négative des chutes de queue pour plusieurs commutateurs sur plusieurs interfaces en bits/s.
SELECT non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 FROM “buffer” WHERE (device ::tag =~ /^Spine-[1-2]$/) et (« /cos/interfaces/interface/@name » : :tag =~ /et-0\/0\/[0-9]/ ou « /cos/interfaces/interface/@name » : :tag=~/et-0\/0\/1[0-5]/) ET $timeFilter GROUP BY time($__interval),device ::tag remplir (nul)

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - Utilisation du processeur2

C'étaient quelques-uns des exampchiers des graphiques pouvant être créés pour surveiller un réseau AI/ML.

Résumé

Cet article illustre la méthode d'extraction de données de télémétrie et de visualisation en créant des graphiques. Cet article parle spécifiquement des capteurs AI/ML, à la fois natifs et openconfig, mais la configuration peut être utilisée pour tous types de capteurs. Nous avons également inclus des solutions pour plusieurs problèmes que vous pourriez rencontrer lors de la création de la configuration. Les étapes et les résultats décrits dans cet article sont spécifiques aux versions de la pile TIG mentionnées précédemment. Elle est susceptible de changer en fonction de la version du logiciel, des capteurs et de la version Junos.

Références

Juniper Yang Data Model Explorer pour toutes les options de capteurs
https://apps.juniper.net/ydm-explorer/
Forum Openconfig pour les capteurs openconfig
https://www.openconfig.net/projects/models/

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML - icône

Siège social et commercial
Juniper Networks, Inc.
1133 Chemin de l'Innovation
Sunnyvale, Californie 94089 États-Unis
Téléphone : 888. JUNIPER (888.586.4737)
ou +1.408.745.2000
Télécopieur : +1.408.745.2100
www.juniper.net
Sièges APAC et EMEA
Juniper Networks International BV
Avenue Boeing 240
1119 PZ Schiphol-Rijk
Amsterdam, Pays-Bas
Téléphone : +31.207.125.700
Télécopieur : +31.207.125.701
Copyright 2023 Juniper Networks. Inc. Tous droits réservés. Juniper Networks, le logo Juniper Networks, Juniper, Junos et d'autres marques sont des marques déposées de Juniper Networks. inc. et/ou ses filiales aux États-Unis et dans d’autres pays. D'autres noms peuvent être des marques déposées de leurs propriétaires respectifs. Juniper Networks n'assume aucune responsabilité pour toute inexactitude contenue dans ce document. Juniper Networks se réserve le droit de modifier. modifier. transférer ou réviser de toute autre manière cette publication sans préavis.
Envoyez vos commentaires à : design-center-comments@juniper.net V1.0/240807/ejm5-telemetry-junos-ai-ml

Documents / Ressources

Télémétrie Juniper NETWORKS dans Junos pour le logiciel de charges de travail AI ML [pdf] Guide de l'utilisateur
Télémétrie dans Junos pour le logiciel AI ML Workloads, Junos pour le logiciel AI ML Workloads, Logiciel AI ML Workloads, Logiciel Workloads, Logiciel

Références

Laisser un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués *