Documentation
Descubre el modo de configuración cero

APM y rastreos distribuidos

El APM y el tracing distribuido de ServicePilot proporcionan un análisis en tiempo real del comportamiento de las aplicaciones y de los problemas de rendimiento.

Los rastreos distribuidos son los registros de los caminos que toma cada consulta a través de los múltiples microservicios que constituyen la aplicación. El rastreo se vuelve muy complejo de observar y analizar en cuanto se encuentra este tipo de arquitectura. Ciertamente, cuando una aplicación consta de cientos de microservicios que se comunican con otros tantos o más hosts, ya no es posible confiar en la traza única. Además, las páginas estáticas son servidas por CDN, lo que bloquea completamente la visibilidad de ciertas partes de la aplicación. En comparación con las aplicaciones más "clásicas" y monolíticas, en las que el rastreo es trivial, la complejidad natural de las arquitecturas modernas lo convierte en un verdadero reto.

Distributed Traces

En el siguiente diagrama, para una misma transacción, un usuario envía varias consultas. Estas consultas se propagan entonces por toda la aplicación. Por lo tanto, si se produce algún problema, es imposible identificar la causa sin los rastreos distribuidos.

Por lo tanto, se necesitan herramientas modernas para comprender la complejidad y aquí es donde entra ServicePilot Technologies, que ofrece una solución concreta y sencilla basada en el potente Root Cause Analysis.

Las rastreos distribuidos se correlacionan automáticamente con los registros, los Checks sintéticos y las métricas de red e infraestructura.

Tipos de APM

APM & RUM

Para tener una visión completa del comportamiento de la propia aplicación, es importante saber lo que ocurre en su totalidad, ya sea en el lado del cliente o del servidor. Por eso RUM y APM van de la mano y se complementan perfectamente.
Acoplando RUM y APM, es posible aprovechar al máximo la potencia del tracing distribuido para tener una visión precisa de cada etapa de cada transacción. Uno sin el otro conduce a una gran cantidad de pérdida de información en las consultas y hace que la solución de problemas sea mucho más difícil.

APM & Synthetic Monitoring

El Synthetic Monitoring es una técnica de monitorización que simula una acción o una serie de acciones que un usuario podría realizar en un sitio web. Debido a que estas acciones son monitoreadas continúa, las métricas de disponibilidad, tiempo de respuesta y rendimiento pueden ser monitoreadas 24/7.
Cuando se añaden tecnologías como APM a Synthetic Monitoring, es posible obtener una visión mucho más profunda del rendimiento y la disponibilidad de la funcionalidad y los servicios prestados por un sitio web.

APM & Application Traces

Para comprender mejor las acciones de los microservicios y los hosts distribuidos en una infraestructura, es necesario utilizar APPTrace. Esta herramienta permite al usuario de ServicePilot rastrear todas las solicitudes realizadas por los microservicios y conocer los enlaces entre clientes y servidores y sobre todo saber quién envía qué a quién y cómo.
Si se juntan APPTrace y APM, es posible tener una visión general de todos los microservicios que componen las aplicaciones ubicadas en la infraestructura.

APM & Registros del servidor web

Los registros del servidor web en formato W3C pueden integrarse con la instrumentación de ServicePilot APM. Sigue siendo preferible instrumentar el código de la aplicación web con las trazas de la aplicación como se ha indicado anteriormente. Las trazas de la aplicación permiten la correlación de las llamadas de la sub-aplicación, por ejemplo, las consultas a la base de datos.

Los registros W3C pueden ser ampliados con Request Headers si las aplicaciones web son instrumentadas para RUM. Añada un Agente ServicePilot en el servidor y un package de monitorización W3C para permitir la monitorización APM del servidor web.

APM & Network Traces

Network Tracing es una técnica de monitorización que pretende estudiar todos los flujos de datos de entrada y salida de un host o grupo de hosts. Con este método es posible tener un monitoreo visual de las comunicaciones dentro de una red y recuperar todos los datos en un archivo pcap.
Cuando Nettrace y APM se combinan, es posible obtener una gran cantidad de información sobre la propia red y los hosts que la ocupan, con diferentes formas de ver y filtrar los datos.

Instrumentos para el Tracing

La tecnología APM de ServicePilot permite la correlación de varias tecnologías dependientes:

  • Browser: supervisión pasiva de todas las interacciones de los usuarios con una aplicación.
  • Synthetic Monitoring: supervisión activa de la disponibilidad y el rendimiento de un sitio web.
  • Rastros de aplicación: supervisión de todas las transacciones y consultas entre los diferentes microservicios de una aplicación monitorizada.
  • Rastros de la red: supervisión de todas las comunicaciones de red entrantes y salientes de los hosts supervisados.
  • Sistemas métricos: supervisión de los sistemas, como los CPU Load, Memory usage, Disk I/O ... servidores.

La elección de la instrumentación de la aplicación es importante y puede ser muy sencilla incluso con aplicaciones muy complejas:

Integrar scripts para informar de las métricas de RUM en las páginas web. Esto puede hacerse mediante:

  • Uso automático de un plugin para integrar el script de informes de métricas RUM en las páginas web servidas por Tomcat y Jetty
  • Configurar servidores web o proxies para reescribir las páginas web servidas para incorporar scripts RUM (por ejemplo, utilizando la extensión IIS URL Rewrite)
  • Añediendo manualmente el script RUM a las páginas web clave

Consulte las instrucciones del RUM de ServicePilot en AJUSTES > Configuración > Básico > Instrumentación APM > Instrumentación RUM

Para llevar a cabo el Synthetic monitoring, se pueden utilizar diferentes packages.

  • El package user-webcheck permite monitorizar las respuestas del servidor mediante una consulta HTTP(S) emitida por el agente ServicePilot.
  • También es posible utilizar el package user-web-scenario que ofrece la monitorización de los tiempos de respuesta del servidor a través de una serie de consultas HTTP(S) emitidas por el agente ServicePilot.

Todas las consultas son emitidas por el agente ServicePilot en un intervalo definido, lo que permite una supervisión continua del rendimiento y la disponibilidad de un sitio web.

Para recoger las trazas de la red, basta con utilizar el provisioning-auto de ServicePilot. Al crear una regla de provisioning-auto, asegúrese de establecer el tipo de detección como SP Agent y marque la casilla NPM en la pestaña Instrumentación APM/NPM.
NETTRACE Auto Prov

Para recoger las trazas de las aplicaciones, basta con utilizar el provisioning-auto de ServicePilot. Al crear una regla de provisioning-auto, asegúrese de establecer el tipo de detección como SP Agent y marque las casillas necesarias en la pestaña Instrumentación APM/NPM.

Para recoger las métricas del sistema, el principio es el mismo que para las trazas de red, esta vez debe asegurarse de que la casilla Packages del sistema está marcada.
System Auto Prov

Para recoger trazas APM de servidores web como IIS o Apache, puede desplegar el package apptrace-appservice-w3c.
Este package recoge los logs de la ruta definida durante su configuración.
APM W3C

Rastros de aplicaciones

Cómo recoger las trazas distribuidas

En función de la aplicación a monitorizar, existen tres formas de instrumentar el código de la aplicación:

  1. Fully automatic: Para Linux, el Agente ServicePilot modifica automáticamente las variables de entorno del programa y la línea de comandos para insertar las librerías APM. Será necesario reiniciar el programa para que este cambio surta efecto.
  2. Automatic: La instrumentación de monitorización APM se inserta en el código de la aplicación automáticamente después de que el operador modifique las variables de entorno del programa y la línea de comandos y el programa se reinicie con estos nuevos parámetros.
  3. Manual: La instrumentación de monitorización APM necesita ser añadida manualmente al código de la aplicación.

ServicePilot utiliza varias tecnologías de instrumentación de código abierto que le permiten elegir qué librerías de instrumentación y métodos prefiere para recopilar datos:

Cuando existe una instrumentación Open Source

Si ya está utilizando las tecnologías de instrumentación mencionadas anteriormente, el Agente ServicePilot se integra de forma nativa con ellas.

Casos en los que no existe instrumentación

Si aún no ha instrumentado su aplicación, ServicePilot soporta varios idiomas:

Idioma Fully automatic Automatic Manual
.NET X X
Java X X X
Node.js X X X
Python X X
PHP X X
Ruby X X
Go X

Para más información, póngase en contacto con el servicio técnico.

Datadog

Los Agentes ServicePilot pueden recibir trazas y métricas de APM desde las Datadog Tracing Libraries.

Para recoger las trazas de las aplicaciones, basta con utilizar el provisioning-auto de ServicePilot. Al crear una regla de provisioning-auto, asegúrese de establecer el tipo de detección como SP Agent y marque las casillas necesarias en la pestaña Instrumentación APM/NPM.

  • Seleccionar Puertos APM para la colección Datadog: 8125, 8126
  • Seleccione la descarga automática de librerías dependiendo del idioma de la aplicación que necesita ser instrumentada
  • Para las librerías que no soportan instrumentación centralizada, siga la documentación de Datadog para enviar trazas de APM al Agente ServicePilot en los puertos 8125, 8126

OpenTelemetry

OpenTelemetry también conocido como OTel para abreviar, es un framework de código abierto de Observabilidad para instrumentar, generar, recoger y exportar datos de telemetría como trazas, métricas, logs. Los Agentes ServicePilot actúan como Recolectores de OTel para trazas enviadas desde código de aplicación instrumentado usando la instrumentación automática de OTel, instrumentación con una librería de OTel o enviando datos manualmente usando los protocolos OTLP/HTTP o Zipkin/HTTP.

La instrumentación automática OpenTelemetry está disponible para un número de lenguajes con librerías y código documentado desde el sitio web de OpenTelemetry.

Para recoger las trazas de las aplicaciones, basta con utilizar el provisioning-auto de ServicePilot. Al crear una regla de provisioning-auto, asegúrese de establecer el tipo de detección como SP Agent y marque las casillas necesarias en la pestaña Instrumentación APM/NPM.

  • Seleccionar APM Ports para la colección OpenTelemetry: 4318
  • Seleccione la descarga automática de librerías dependiendo del idioma de la aplicación que necesita ser instrumentada
  • Para las librerías que no soportan instrumentación centralizada, siga la documentación de OpenTelemetry para enviar trazas de APM al Agente ServicePilot en el puerto 4318.

Zipkin

Zipkin es un sistema de rastreo distribuido. Ayuda a recopilar los datos de tiempo necesarios para solucionar problemas de latencia en arquitecturas de servicios. Los Agentes ServicePilot actúan como Recolectores de Zipkin para rastreos enviados desde código de aplicación instrumentado usando librerías de instrumentación de Zipkin o enviando datos manualmente usando el protocolo Zipkin/HTTP.

Zipkin Tracers and Instrumentation documenta librerías que soportan la instrumentación de código de aplicación para enviar trazas a un Agente ServicePilot.

Para recoger las trazas de las aplicaciones, basta con utilizar el provisioning-auto de ServicePilot. Al crear una regla de provisioning-auto, asegúrese de establecer el tipo de detección como SP Agent y marque las casillas necesarias en la pestaña Instrumentación APM/NPM.

  • Seleccionar APM Ports para la colección Zipkin: 9411
  • Siga la documentación de Zipkin para enviar trazas APM al Agente ServicePilot en el puerto 9411

Cómo ver los rastros de APM

Monitor topología (live)

Dependencias de los servicios

La información se representa de dos formas diferentes: dependencias verticales y dependencias horizontales. Las dependencias verticales se representan como un sistema de capas en el que cada capa tiene una categoría. En la parte superior están las Aplicaciones, luego los Servicios, luego los Procesos, etc. Mientras que las dependencias verticales representarán las comunicaciones entre los elementos de la misma capa como enlaces entre los diferentes hosts.

Identificación de problemas y Root Cause Analysis (en tiempo real)

A través de la página Topología, se crea una visualización relacional por secciones de sus distintos sistemas. Es posible identificar los diferentes problemas que pueden encontrar los sistemas monitorizados en su red. Así, gracias a la visualización de la arquitectura, podrá descubrir rápidamente qué servidor está en el origen de la incidencia y solucionar el problema lo antes posible.

Se utilizan siete pestañas para navegar por las vistas verticales: Applications, Services, Processes, Hosts, Network, Security et Misc.

En cada una de estas pestañas se encuentra el código de colores de las alertas de los elementos que aparecen en la parte central de la página. Cada color puede ser seleccionado y sólo mostrará los artículos del color solicitado.
Fullstack tab

Dependencia Explicación
View Dependencies Visualización de los diferentes elementos de las pestañas según el nivel de vista en el que se encuentran en la jerarquía de vistas. Por ejemplo, un elemento en MAIN > Francia encontrará el mismo camino en esta dependencia. Fullstack view
APP Dependencies Visualización de los diferentes enlaces entre elementos en relación con sus rastros de aplicación. Un elemento en comunicación con otro será visto como dependiente de él. Fullstack APP
NET Dependencies Visualización de los diferentes enlaces entre los elementos según su comunicación en red. Un elemento en comunicación con otro será visto como dependiente de él. Fullstack NET
Table Visualización en forma de tabla. Proporciona: "status", "ressource", "package", "host", "Mbps", "TCPReject", "TcpStartPublic", "RPM", "AvgDuration" y "errors." Fullstack table
Métricas Explicación
Spring layout Visualización de dependencias según una arquitectura descubierta dinámicamente. Los elementos se colocan automáticamente según sus enlaces Fullstack Spring layout
Horizontal layout Visualización de una vista con elementos organizados de izquierda a derecha. Los elementos de comunicación están representados por una arquitectura más estructurada que la pantalla de Spring layout Fullstack Horizontal layout

Tooltip: al pasar el ratón por encima de una almohadilla se obtiene información sobre ella, como su tipo (Linux o Windows, por ejemplo), el host, el recurso y el package.

En la pantalla de la derecha hay una visualización dividida. En la parte superior, la pantalla de dependencias verticales muestra una estructura de árbol que representa las diferentes capas.

Debajo, un menú con tres pestañas ofrece información adicional sobre el servidor seleccionado.

Nota: es cuando se selecciona un elemento que se muestran las dependencias verticales y los detalles.

Sección Contenido
Status Detalles del elemento seleccionado Fullstack details
Cause Causas de los diferentes estados Fullstack cause

Cuadros de mando de las métricas de APM (Análisis histórico)

Las páginas de Cuadros de mando de las métricas de APM presentan un resumen de todos los datos relacionados con las trazas de las aplicaciones y de la red que se han recogido. Para acceder a los cuadros de mando de APM, basta con ir a ANALIZAS > Traces y seleccionar los recursos APPTrace y NetTrace.

Los datos recogidos pueden verse globalmente seleccionando la categoría deseada. Category selection
Los datos también pueden verse para un artículo específico de una categoría. Unique selection

Aquí se presentan tres categorías, AppService, NetProcess y NetServer.

AppService

En esta categoría se encuentra el análisis de las trazas de las aplicaciones monitorizadas y el apoyo de la tecnología APM. Los datos presentados proporcionan un análisis preciso del rendimiento y el comportamiento de las aplicaciones supervisadas, incluido el número de solicitudes por minuto, la satisfacción de los usuarios y otras métricas de la aplicación.

AppService page

NetProcess

En la categoría NetProcess están disponibles los datos relacionados con las trazas de red de cada proceso de las aplicaciones supervisadas. Se muestran varias métricas, especialmente la cantidad de paquetes "Retransmits" y "Rejected", pero también el rendimiento máximo y el volumen de datos que circulan en los procesos supervisados.

NetProcess page

NetServer

La categoría NetServer muestra las mismas métricas que NetProcess, sin embargo, en esta categoría los datos son para cada servidor en su conjunto y no sólo para los procesos que están siendo monitoreados.

NetServer page

Página Transacciones (Análisis histórico)

La página Transacciones ofrece un análisis de todas las transacciones que han tenido lugar entre los clientes y las máquinas monitorizadas por la tecnología ServicePilot APM. Para acceder a la página de Transacciones, basta con ir a ANALIZAS > Traces y luego elegir la pestaña Transacciones.

Datos presentados

Esta página de Transacciones proporciona una visión general de las diferentes transacciones, incluyendo las diferentes respuestas HTTP(S), los tiempos de respuesta, los hosts involucrados, los métodos utilizados y las rutas tomadas. Los datos se resumen en gráficos que proporcionan una visión completa del flujo de transacciones dentro de una aplicación.
También es posible obtener los detalles de cada transacción con todos los datos relevantes (traceID, duration, httppath, httpstatuscode...):

Transactions details

Filtrar las transacciones

Esta página dispone de una función de filtro que permite afinar los datos para comprender y analizar mejor múltiples transacciones.

La parte izquierda de la página permite seleccionar filtros predefinidos en función de las transacciones registradas. Basta con hacer clic en un filtro para aplicarlo. Para eliminar un filtro, basta con desmarcarlo. Para filtros más avanzados es posible utilizar la barra de consulta.

Página APPTrace (Análisis de rastros en tiempo real)

La pestaña APPTrace permite el análisis en tiempo real de las aplicaciones en los servidores, que se supervisan mediante aprovisionamiento automático o mediante packages etiquetados como microservicios. Esta página ofrece una vista general de las aplicaciones supervisadas y permite comprender mejor cómo funcionan y sus comunicaciones con el mundo exterior. Para acceder a la página de APPTrace, basta con ir a ANALIZAS > Traces y luego elegir la pestaña APPTrace.

Explorador

Utilizando el menú de la izquierda, es posible navegar por los diferentes hosts y micro-servicios que tienen APPTrace. Es posible obtener información de todos los hosts al mismo tiempo, de sólo un host y de sólo un microservicio específico.

Menú principal

En la interfaz principal, 3 tipos de datos son accesibles. Para cada tipo de datos, están disponibles los detalles de cada traza de aplicación con información sobre los hosts implicados en la traza recogida (IP del cliente, IP del servidor, nombre del host...). Cada tipo de datos tiene datos específicos adicionales:

Tipo de datos Descripción
Hosts button - Hosts Muestra los rastros de la aplicación por host. Se muestra información sobre el sistema y los processes responsables de las trazas recogidas, así como indicaciones sobre las propias consultas (método HTTP, código de respuesta HTTP, tiempo de consulta)
Processes button - Processes Muestra las trazas de la aplicación por process. La información disponible es idéntica a la descrita para los rastreos por hosts (Un dato adicional es el puerto utilizado por el process ubicado en el servidor)
Conversations button - Conversations Muestra las trazas de la aplicación por conversación. Se muestra información sobre las consultas (método HTTP, código de respuesta HTTP, tiempo de la consulta, ruta de la consulta...)

Las diferentes vistas

Los datos pueden visualizarse en diferentes modos utilizando los 5 botones de la parte superior derecha de la interfaz.

Modo de visualización Descripción
Details button - Details Presenta los datos en una tabla detallando cada una de las trazas recogidas
Topo graph button - Topo graph Presenta los datos como un gráfico dinámico
Topo top-down button - Topo top-down Presenta los datos en forma de gráfico jerárquico de arriba a abajo
Topo left-right button - Topo left-right Presenta los datos como un gráfico jerárquico de izquierda a derecha
Host map button - Host map Presenta los datos en un mapa mundial geolocalizando los hosts (el mapa de hosts es principalmente útil y utilizable para los microservicios que utilizan direcciones IP públicas)

Es posible pausar la captura en cualquier momento pulsando el botón pausar, situado en la parte superior derecha de la ventana. También puedes refrescar los datos en la página para borrar los datos actuales.

Página NetTrace (Análisis de rastros en tiempo real)

La página NetTrace le permite ver los rastros de red en vivo de los recursos supervisados por los agentes de ServicePilot. Para acceder a la página de NetTrace, basta con ir a ANALIZAS > Traces y luego elegir la pestaña NetTrace.

La página NetTrace proporciona una visión rápida y precisa de todo el tráfico en vivo de una red. Más concretamente, NetTrace permite visualizar las diferentes conexiones establecidas entre los servidores supervisados por los agentes ServicePilot y los clientes. Para cada conexión detectada, se dispondrá de varios datos como la IP de los hosts que se comunican entre sí, pero también datos más precisos (conversaciones, conexiones bloqueadas y rechazadas, bytes por segundo, etc.).
El destacado y la resolución de problemas dentro de la infraestructura de la red es mucho más trivial con el uso de NetTrace.

Nettrace data

Los datos pueden visualizarse de forma más o menos global:

Los datos recogidos pueden verse en toda una red seleccionando la red deseada. Nettrace network
Los datos también se pueden ver para un host específico de una red. Nettrace host

Una vez seleccionada la red o el host, es posible ver los datos y los distintos enlaces asociados de varias maneras, ya sea en forma de tabla para obtener información más detallada sobre cada comunicación, o en forma de gráficos para obtener una visión general del estado de la red seleccionada.
Nettrace graphs

NetTrace también ofrece una función muy interesante que permite capturar el tráfico de la red en cualquier momento y hacer un rastreo PCAP según varios filtros que se pueden establecer (IP, puertos, protocolo, ...):

1. Abrir ANALIZAS > Traces
2. Abrir la pestaña NetTrace
3. Seleccione en la lista de la izquierda el servidor en el que se realizará la captura.
4. Haga clic en el botón Trace situado en la parte superior izquierda, o junto a un host.
5. Modificar o añadir filtros en IPs y/o puertos.
6. Inicie el rastreo durante el tiempo que desee.
7. Detenga el rastreo y se descargará automáticamente como un archivo PCAP.