Telemetría en Junos para cargas de trabajo de IA/ML
Autor: Shalini Mukherjee
Introducción
Como el tráfico de un clúster de IA requiere redes sin pérdidas con alto rendimiento y baja latencia, un elemento crítico de la red de IA es la recopilación de datos de monitoreo. Junos Telemetry permite el monitoreo granular de indicadores clave de rendimiento, incluidos umbrales y contadores para la gestión de la congestión y el equilibrio de la carga de tráfico. Las sesiones gRPC admiten la transmisión de datos de telemetría. gRPC es un marco moderno, de código abierto y de alto rendimiento que se basa en el transporte HTTP/2. Potencia las capacidades de transmisión bidireccional nativa e incluye metadatos personalizados flexibles en los encabezados de solicitud. El paso inicial en la telemetría es saber qué datos se deben recopilar. Luego, podemos analizar estos datos en varios formatos. Una vez que recopilamos los datos, es importante presentarlos en un formato que sea fácil de monitorear, tomar decisiones y mejorar el servicio que se ofrece. En este documento, utilizamos una pila de telemetría que consta de Telegraf, InfluxDB y Grafana. Esta pila de telemetría recopila datos utilizando un modelo push. Los modelos de extracción tradicionales consumen muchos recursos, requieren intervención manual y podrían incluir lagunas de información en los datos que recopilan. Los modelos de inserción superan estas limitaciones al entregar datos de forma asincrónica. Enriquecen los datos mediante el uso de tags y nombres. Una vez que los datos están en un formato más legible, los almacenamos en una base de datos y los usamos en una visualización interactiva. web Aplicación para analizar la red. La Figura 1 nos muestra cómo está diseñada esta pila para la recolección, el almacenamiento y la visualización eficiente de datos, desde los dispositivos de red que envían datos al recopilador hasta los datos que se muestran en los paneles para su análisis.
Pila TIG
Usamos un servidor Ubuntu para instalar todo el software, incluida la pila TIG.
Telégrafo
Para recopilar datos, utilizamos Telegraf en un servidor Ubuntu con la versión 22.04.2. La versión de Telegraf que se ejecuta en esta demostración es la 1.28.5.
Telegraf es un agente de servidor basado en complementos para recopilar y generar informes de métricas. Utiliza procesadores plugins para enriquecer y normalizar los datos. la salida plugins se utilizan para enviar estos datos a varios almacenes de datos. En este documento utilizamos dos plugins:uno para sensores openconfig y el otro para sensores nativos de Juniper.
InfluxDB
Para almacenar los datos en una base de datos de series temporales, utilizamos InfluxDB. El complemento de salida de Telegraf envía los datos a InfluxDB, que los almacena de forma muy eficiente. Estamos utilizando la versión 1.8, ya que no hay una interfaz de línea de comandos disponible para las versiones 2 y posteriores.
Grafana
Para visualizar estos datos se utiliza Grafana. Grafana extrae los datos de InfluxDB y permite a los usuarios crear paneles de control interactivos y completos. Aquí, estamos ejecutando la versión 10.2.2.
Configuración en el conmutador
Para implementar esta pila, primero debemos configurar el conmutador como se muestra en la Figura 2. Hemos utilizado el puerto 50051. Aquí se puede utilizar cualquier puerto. Inicie sesión en el conmutador QFX y agregue la siguiente configuración.
Nota: Esta configuración es para laboratorios o POC, ya que la contraseña se transmite en texto sin cifrar. Utilice SSL para evitar esto.
Ambiente
Nginx
Esto es necesario si no puede exponer el puerto en el que se aloja Grafana. El siguiente paso es instalar nginx en el servidor Ubuntu para que actúe como agente de proxy inverso. Una vez que nginx esté instalado, agregue las líneas que se muestran en la Figura 4 al archivo “predeterminado” y mueva el archivo de /etc/nginx a /etc/nginx/sites-enabled.
Asegúrese de que el firewall esté ajustado para brindar acceso completo al servicio nginx como se muestra en la Figura 5.
Una vez que nginx esté instalado y se realicen los cambios necesarios, deberíamos poder acceder a Grafana desde un web navegador utilizando la dirección IP del servidor Ubuntu donde está instalado todo el software.
Hay un pequeño fallo en Grafana que no te permite restablecer la contraseña predeterminada. Siga estos pasos si se encuentra con este problema.
Pasos a realizar en el servidor Ubuntu para establecer la contraseña en Grafana:
- Vaya a /var/lib/grafana/grafana.db
- Instalar sqllite3
el sudo apt install sqlite3 - Ejecute este comando en su terminal
El sqlite3 grafana.db - Se abre el símbolo del sistema de SQLite; ejecute la siguiente consulta:
>eliminar del usuario donde login='admin' - Reinicie Grafana y escriba admin como nombre de usuario y contraseña. Se le solicitará una nueva contraseña.
Una vez instalado todo el software, cree el archivo de configuración en Telegraf que ayudará a extraer los datos de telemetría del conmutador y enviarlos a InfluxDB.
Complemento de sensor Openconfig
En el servidor Ubuntu, edite el archivo /etc/telegraf/telegraf.conf para agregar todos los archivos requeridos. plugins y sensores. Para los sensores de openconfig, utilizamos el complemento gNMI que se muestra en la Figura 6. Para fines de demostración, agregue el nombre de host como "spine1", el número de puerto "50051" que se utiliza para gRPC, el nombre de usuario y la contraseña del conmutador, y la cantidad de segundos para volver a marcar en caso de falla.
En la sección de suscripción, agregue un nombre único, “cpu” para este sensor en particular, la ruta del sensor y el intervalo de tiempo para obtener estos datos del conmutador. Agregue los mismos complementos inputs.gnmi e inputs.gnmi.subscription para todos los sensores de configuración abierta. (Figura 6)
Complemento de sensor nativo
Este es un complemento de interfaz de telemetría de Juniper que se utiliza para sensores nativos. En el mismo archivo telegraf.conf, agregue el complemento de sensor nativo inputs.jti_openconfig_telemetry, donde los campos son casi los mismos que los de openconfig. Use un ID de cliente único para cada sensor; aquí, usamos “telegraf3”. El nombre único que se usa aquí para este sensor es “mem” (Figura 7).
Por último, agregue un complemento de salida outputs.influxdb para enviar los datos de este sensor a InfluxDB. Aquí, la base de datos se llama “telegraf” con el nombre de usuario “influx” y la contraseña “influxdb” (Figura 8).
Una vez que haya editado el archivo telegraf.conf, reinicie el servicio telegraf. Ahora, verifique en la CLI de InfluxDB para asegurarse de que se creen mediciones para todos los sensores únicos. Escriba “influx” para ingresar a la CLI de InfluxDB.
Como se ve en la Figura 9, ingrese al indicador influxDB y utilice la base de datos “telegraf”. Todos los nombres únicos dados a los sensores se enumeran como mediciones.
Para ver el resultado de cualquier medición, solo para asegurarse de que el archivo telegraf sea correcto y que el sensor esté funcionando, use el comando “select * from cpu limit 1” como se muestra en la Figura 10.
Cada vez que se realicen cambios en el archivo telegraf.conf, asegúrese de detener InfluxDB, reiniciar Telegraf y luego iniciar InfluxDB.
Inicie sesión en Grafana desde el navegador y cree paneles después de asegurarse de que los datos se recopilan correctamente.
Vaya a Conexiones > InfuxDB > Agregar nueva fuente de datos.
- Dale un nombre a esta fuente de datos. En esta demostración, es “test-1”.
- En la estrofa HTTP, utilice la IP del servidor Ubuntu y el puerto 8086.
- En los detalles de InfluxDB, use el mismo nombre de base de datos, “telegraf”, y proporcione el nombre de usuario y la contraseña del servidor Ubuntu.
- Haga clic en Guardar y probar. Asegúrese de ver el mensaje "ejecutado correctamente".
- Una vez que se haya agregado correctamente la fuente de datos, vaya a Paneles y haga clic en Nuevo. Vamos a crear algunos paneles que son esenciales para las cargas de trabajo de IA/ML en modo de editor.
Examparchivos de gráficos de sensores
Los siguientes son ejemplosamparchivos de algunos contadores importantes que son esenciales para monitorear una red AI/ML.
Porcentajetage utilización de una interfaz de ingreso et-0/0/0 en la columna vertebral-1
- Seleccione la fuente de datos como prueba-1.
- En la sección FROM, seleccione la medición como “interfaz”. Este es el nombre exclusivo que se utiliza para esta ruta del sensor.
- En la sección DÓNDE, seleccione dispositivo::tag, y en el tag valor, seleccione el nombre de host del conmutador, es decir, spin1.
- En la sección SELECCIONAR, elija la rama del sensor que desea monitorear; en este caso, elija “campo(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)”. Ahora, en la misma sección, haga clic en “+” y agregue este cálculo matemático (/50000000000 * 100). Básicamente, estamos calculando el porcentajetagy utilización de una interfaz 400G.
- Asegúrese de que el FORMATO sea “serie de tiempo” y nombre el gráfico en la sección ALIAS.
Ocupación máxima del buffer para cualquier cola
- Seleccione la fuente de datos como prueba-1.
- En la sección DESDE, seleccione la medida como “buffer”.
- En la sección WHERE hay tres campos para completar. Seleccione el dispositivo:tag, y en el tag valor selecciona el nombre de host del conmutador (es decir, spin-1); Y selecciona /cos/interfaces/interface/@name::tag y seleccione la interfaz (es decir, et- 0/0/0); Y seleccione también la cola, /cos/interfaces/interface/queues/queue/@queue::tag y elige la cola número 4.
- En la sección SELECCIONAR, elija la rama del sensor que desea monitorear; en este caso, elija “campo(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy)”.
- Asegúrese de que el FORMATO sea “serie de tiempo” y nombre el gráfico en la sección ALIAS.
Puede cotejar datos para múltiples interfaces en el mismo gráfico como se ve en la Figura 17 para et-0/0/0, et-0/0/1, et-0/0/2, etc.
Derivada media de PFC y ECN
Para encontrar la derivada media (la diferencia de valor dentro de un rango de tiempo), utilice el modo de consulta sin procesar.
Esta es la consulta de afluencia que hemos utilizado para encontrar la derivada media entre dos valores de PFC en et-0/0/0 de Spine-1 en un segundo.
SELECCIONAR derivada(media(“/interfaces/interfaz[si_nombre='et-0/0/0′]/estado/pfc-counter/tx_pkts”), 1s) DE “interfaz” DONDE (“dispositivo”::tag = 'Spine-1') Y $timeFilter GRUPO POR tiempo($intervalo)
SELECCIONAR derivada(media(“/interfaces/interfaz[if_name='et-0/0/8′]/estado/contadores-de-errores/ecn_ce_marked_pkts”), 1s) DE “interfaz” DONDE (“dispositivo”::tag = 'Spine-1') Y $timeFilter GRUPO POR tiempo($intervalo)
Los errores de recursos de entrada significan derivada
La consulta sin procesar para la derivada media de errores de recursos es:
SELECCIONAR derivada(media(“/interfaces/interfaz[si_nombre='et-0/0/0′]/estado/contadores-de-errores/si_hay_errores_en_recursos”), 1s) DE “interfaz” DONDE (“dispositivo”::tag = 'Spine-1') Y $timeFilter GRUPO POR tiempo($intervalo)
Las caídas de cola significan derivada
La consulta sin formato para la derivada media de caídas de cola es:
SELECCIONAR derivada(media(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s) DE “buffer” DONDE (“dispositivo”::tag = 'Hoja-1' AND “/cos/interfaces/interface/@nombre”::tag = 'et-0/0/0' AND “/cos/interfaces/interface/queues/queue/@queue”::tag = '4') Y $timeFilter AGRUPAR POR tiempo($__intervalo) rellenar(nulo)
Utilización de la CPU
- Seleccione la fuente de datos como prueba-1.
- En la sección FROM, seleccione la medida como “newcpu”
- En el WHERE hay tres campos para completar. Seleccione el dispositivo:tag y en el tag Valor: seleccione el nombre de host del conmutador (es decir, el espinazo 1). Y en /componentes/componente/propiedades/propiedad/nombre:tagy seleccione cpuutilization-total AND en nombre::tag seleccione RE0.
- En la sección SELECCIONAR, elija la rama del sensor que desea monitorear. En este caso, elija “campo(estado/valor)”.
Consulta sin procesar para encontrar la derivada no negativa de las pérdidas de cola para múltiples conmutadores en múltiples interfaces en bits/seg.
SELECCIONAR derivada_no_negativa(media(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 DE “buffer” DONDE (dispositivo::tag =~ /^Spine-[1-2]$/) y (“/cos/interfaces/interface/@nombre”::tag =~ /et-0\/0\/[0-9]/ o “/cos/interfaces/interfaz/@nombre”::tag=~/et-0\/0\/1[0-5]/) Y $timeFilter AGRUPAR POR tiempo($__intervalo),dispositivo::tag rellenar(nulo)
Estos fueron algunos de los examparchivos de los gráficos que se pueden crear para monitorear una red AI/ML.
Resumen
Este artículo ilustra el método de extracción de datos de telemetría y visualización de los mismos mediante la creación de gráficos. Este artículo habla específicamente sobre sensores de IA/ML, tanto nativos como de configuración abierta, pero la configuración se puede utilizar para todo tipo de sensores. También hemos incluido soluciones para múltiples problemas que puede enfrentar al crear la configuración. Los pasos y los resultados que se describen en este artículo son específicos de las versiones de la pila TIG mencionadas anteriormente. Está sujeto a cambios según la versión del software, los sensores y la versión de Junos.
Referencias
Explorador de modelos de datos de Juniper Yang para todas las opciones de sensores
https://apps.juniper.net/ydm-explorer/
Foro de Openconfig para sensores Openconfig
https://www.openconfig.net/projects/models/
Sede Corporativa y de Ventas
Redes Juniper, Inc.
1133 Camino de la innovación
Sunnyvale, CA 94089 EE. UU.
Teléfono: 888. JUNIPER (888.586.4737)
o +1.408.745.2000
Teléfono: +1.408.745.2100
www.juniper.net
Sede de APAC y EMEA
Juniper Networks Internacional BV
Avenida Boeing 240
1119 PZ Schiphol-Rijk
Ámsterdam, Países Bajos
Teléfono: +31.207.125.700
Teléfono: +31.207.125.701
Copyright 2023 Juniper Networks. Inc. Todos los derechos reservados. Juniper Networks, el logotipo de Juniper Networks, Juniper, Junos y otras marcas comerciales son marcas comerciales registradas de Juniper Networks. Inc. y/o sus filiales en los Estados Unidos y otros países. Otros nombres pueden ser marcas comerciales de sus respectivos propietarios. Juniper Networks no asume ninguna responsabilidad por las imprecisiones de este documento. Juniper Networks se reserva el derecho de cambiar, modificar, transferir o revisar de otro modo esta publicación sin previo aviso.
Envíe sus comentarios a: centro-de-diseño-comentarios@juniper.net V1.0/240807/ejm5-telemetria-junos-ai-ml
Documentos / Recursos
![]() |
Telemetría Juniper NETWORKS en Junos para software de cargas de trabajo AI ML [pdf] Guía del usuario Telemetría en Junos para software de cargas de trabajo AI ML, Junos para software de cargas de trabajo AI ML, Software de cargas de trabajo AI ML, Software de cargas de trabajo, Software |