Analizamos las herramientas para monitorear aplicaciones distribuidas



Cuando la aplicaci贸n era monol铆tica y repentinamente, una vez que se distribu铆a, se agrega otro desconocido a la f贸rmula de c谩lculo de disponibilidad: la red. Debido a problemas con las llamadas entre componentes, las aplicaciones a menudo se caen y comienzan a sacudirse las piernas. Y descubrir las razones del trabajo inestable de una aplicaci贸n distribuida es otra tarea. Los kubernetes condicionales crean un desorden adicional en la estructura de la aplicaci贸n, que, a su propia discreci贸n, puede distribuir arbitrariamente pods condicionales por nodos condicionales. Estoy escribiendo "condicional", porque en lugar de kubernetes puede haber Swarm y OpenShift, y otros y otros.

Quiero decir, sin una visualizaci贸n normal, descubrir d贸nde est谩 la temperatura puede ser muy dif铆cil. Debajo del corte, mi idea de las capacidades potenciales de las herramientas que pueden dibujar un mapa de aplicaci贸n y resaltar los lugares para aplicar un pl谩tano, as铆 como una lista de estas herramientas con capturas de pantalla.

Comencemos a descubrir qu茅 es deseable ver en el mapa de la aplicaci贸n, luego consideraremos los enfoques de monitoreo y luego pasaremos a proveedores espec铆ficos.

Lo que quiero ver en el mapa de la aplicaci贸n


Lo primero que viene a la mente es la capacidad de agrupar nodos de aplicaci贸n seg煤n ciertos criterios. Por ejemplo, digo que en este grupo tengo una interfaz, y en este backend o aqu铆 tengo instancias del servicio de Pagos, y aqu铆 Env铆o. Bueno, y as铆 sucesivamente. Y las personas responsables de esta o aquella parte ven de inmediato la imagen completa de lo que sucede dentro de su 谩rea de responsabilidad.

El segundo es dise帽ar la aplicaci贸n por niveles con la capacidad de ver, por ejemplo, en t茅rminos de infraestructura, servicio, instancias de servicio, etc. Adem谩s del primer caso, ayuda a identificar la capa problem谩tica.

En tercer lugar , las salidas y entradas de estos nodos, incluidas las conexiones entre ellos. En estas cadenas, me gustar铆a ver las se帽ales doradas que describe Google en la Ingenier铆a de confiabilidad del sitio 6 en el Cap铆tulo 6 de Monitoreo de sistemas distribuidos. Ya publiqu茅 una traducci贸n de este cap铆tulo en un blog sobre el Medio . Y las se帽ales son las siguientes: latencia, tr谩fico (rendimiento), errores (tasa de error) y saturaci贸n (saturaci贸n).

Tal vez no tom茅 en cuenta algo. Vaya a los comentarios si cree que faltan otras cosas importantes.

驴Cu谩les son los diferentes enfoques de monitoreo?


No s茅 qu茅 m谩s se puede llamar, por lo tanto, llamar茅 a los enfoques agente y monitoreo sin agente. Ahora explicar茅 hu de hu.

Monitoreo del agente


La supervisi贸n de agentes significa la necesidad de implementar agentes de supervisi贸n especiales en una aplicaci贸n controlada. Los agentes incrustan la identificaci贸n de rastreo en los encabezados de los paquetes.

Este tipo incluye soluciones de monitoreo APM y todas aquellas que se integran mediante la inyecci贸n de SDK en el c贸digo de la aplicaci贸n.

Pros: ayuda a encontrar la causa ra铆z del problema, los encabezados pueden rastrear con precisi贸n la ruta de las transacciones.

Contras: posibles gastos generales debido a una modificaci贸n del algoritmo de la aplicaci贸n, la incapacidad de incrustar en aplicaciones heredadas, soporte para un conjunto limitado de lenguajes de programaci贸n

Monitoreo sin agente


Seguimiento sin modificaci贸n de la aplicaci贸n. Este tipo incluye registros, rastreo a nivel del sistema operativo y monitoreo del tr谩fico de red.

Pros: la cobertura de monitoreo de varios marcos y lenguajes de programaci贸n puede funcionar donde la inyecci贸n de identificaci贸n de rastreo no es posible, no hay sobrecarga en una aplicaci贸n controlada.

Contras: sin una identificaci贸n de seguimiento, puede ser dif铆cil restaurar el contexto de una transacci贸n comercial, la incapacidad de escuchar el tr谩fico si la encapsulaci贸n SSL est谩 configurada y no hay claves,

驴Qu茅 ofrecen los vendedores?


Vendorov se desarm贸 sobre la base de agente / sin agente, puede solicitar otras caracter铆sticas en los comentarios o en un mensaje personal. La mayor experiencia que tuve con Instana, Appdynamics y New Relic, si quieres mirar, puedo ayudar con las licencias de demostraci贸n por un per铆odo superior a 14 d铆as (como se ofrecen en sus sitios por defecto).

Monitoreo del agente


Instana es una herramienta para monitorear sistemas distribuidos. Una caracter铆stica clave es un agente 煤nico para todas las tecnolog铆as compatibles y la recopilaci贸n de m茅tricas una vez por segundo.

imagen

Appdynamics es una soluci贸n bien conocida para el monitoreo APM. Capaz de construir un mapa de aplicaci贸n basado en llamadas entre componentes de la aplicaci贸n. Se requiere la supervisi贸n del agente para supervisar las llamadas.

imagen

New Relic es un competidor directo de Appdynamics. La diferencia clave es que solo es posible el monitoreo desde la nube (los agentes tambi茅n se instalan en los servidores de destino). Crea un mapa de aplicaciones basado en llamadas.

imagen

Dynatrace es una herramienta de monitoreo APM. Admite el monitoreo de varios lenguajes de programaci贸n y puede funcionar tanto desde la nube como en las instalaciones.

imagen

AWS X-Ray : supervise las aplicaciones alojadas en AWS. Admite la visualizaci贸n del mapa de la aplicaci贸n, requiere la instalaci贸n de su propio SDK.

imagen

OpenTracing es una API para instrumentaci贸n de aplicaciones distribuidas. Muchas soluciones comerciales y no comerciales se basan en esta API.

Jaeger es una herramienta comercial gratuita de c贸digo abierto. Construido sobre la base de OpenTracing.

imagen

Datadog APM es una herramienta comercial para monitorear aplicaciones distribuidas. Funciona sobre la base del mencionado OpenTracing.

imagen

Monitoreo sin agente


OpenZipkin es una herramienta gratuita para rastrear aplicaciones distribuidas. Una caracter铆stica de su trabajo es la recopilaci贸n de datos sobre llamadas utilizando las bibliotecas de instrumentaci贸n y el posterior env铆o de estos datos al recopilador de OpenZipkin.

imagen

Linkerd es una herramienta gratuita para rastrear llamadas dentro de la aplicaci贸n. Es un complemento para OpenZipkin, se instala en la infraestructura de kubernetes como un contenedor de sidecar.

imagen

Envoy es una herramienta gratuita. Funciona como un proxy al que se env铆an los datos de la llamada entre los componentes de la aplicaci贸n. No hay una interfaz web propia, los datos pueden recibirse a trav茅s de solicitudes HTTP GET o enviarse a statsd.

Netsil es una herramienta para monitorear aplicaciones distribuidas basadas en escuchar tr谩fico. Funciona independientemente del idioma en el que se escribe la aplicaci贸n.

imagen

Indica qui茅n us贸 qu茅 y qu茅 impresi贸n qued贸.

Source: https://habr.com/ru/post/es422931/


All Articles