Control y rastreo de microservicios con Application Performance Monitoring en Oracle Cloud
El control de microservicios puede ser un desafío debido a la complejidad de su arquitectura y a su modelo de despliegue distribuido.
Las aplicaciones de microservicios pueden constar de miles de servicios independientes desplegados en muchos sistemas diferentes, mientras que cada servicio se ejecuta con su proceso. Los enfoques de supervisión tradicionales que se centran en recursos específicos y monitores de estado ya no son efectivos al rastrear el flujo de transacciones o depurar problemas en aplicaciones de microservicios.
Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) permite la instrumentación automática de OpenTracing en microservicios y captura transacciones completas de usuario de extremo a extremo para ayudarle a comprender tanto la experiencia de usuario como el rendimiento de la aplicación. APM incluye una implantación de un sistema de rastreo distribuido que permite el rastreo de instancias, de extremo a extremo y de transacciones. También permite la supervisión del servidor de aplicaciones y las métricas de negocio.
Arquitectura
En esta arquitectura de referencia se muestra cómo utilizar Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) para supervisar una aplicación de microservicios desplegada en el cluster de OCI Kubernetes Engine (OKE).
Los siguientes diagramas de arquitectura muestran una aplicación de microservicios desplegada en un cluster de Kubernetes. La aplicación se aloja en un servidor de aplicaciones con dos réplicas de despliegue y se conecta a una instancia de Oracle Autonomous Database mediante JDBC. Los usuarios finales acceden a la aplicación a través de una interfaz web alojada en Oracle Cloud. Cada diagrama muestra un enfoque diferente:
-
Operador OpenTelemetry: el primer enfoque utiliza el operador de Kubernetes para simplificar la inyección automática de agentes Java en máquinas virtuales Java (JVM) que se ejecutan en pods de Kubernetes.
-
Sistema de archivos compartido: el segundo enfoque utiliza un sistema de archivos compartido para aprovisionar y desplegar un agente de APM.
Ambos métodos pueden supervisar los marcos o servidores de aplicaciones Java, como Oracle WebLogic Server o Spring Boot, desplegados en Kubernetes.
En el siguiente diagrama se muestra la implantación del operador OpenTelemetry:
apm-microservices-open-telemetry-oracle.zip
Los flujos de datos de esta arquitectura son los siguientes:
- Cree un dominio de APM en OCI y obtenga la URL de punto final de carga de datos y las claves de datos privadas y públicas del dominio.
- Cree un sistema de archivos compartido en OCI y cree objetos de almacenamiento de Kubernetes, como un volumen persistente en el cluster de OKE.
- Descargue el agente Java de APM del dominio de APM y aprovisionarlo en el volumen montado.
- Despliegue el agente de APM en la aplicación actualizando los archivos YAML para los despliegues de Kubernetes o StatefulSets.
B - OpenTelemetry Operator descarga automáticamente el agente Java en la caché local. El agente Java se instala localmente en cada una de las réplicas del cluster de OKE.
C - Los rastreos, intervalos y métricas del servidor y JDBC se envían al dominio de APM. Después de reiniciar los pods de Kubernetes, los rastreos y los intervalos del servidor se envían al dominio de APM donde se encuentra la URL de punto final de carga de datos.
D - Los rastreos, intervalos y métricas del explorador se envían al dominio de APM. Los datos recopilados se pueden visualizar en los paneles de control de APM y en el explorador de rastreo para el análisis de rendimiento y disponibilidad.
En el siguiente diagrama se muestra la implementación del sistema de archivos compartido:
apm-microservices-arc-oracle.zip
Los flujos de datos de esta arquitectura son los siguientes:
- Cree un dominio de APM en OCI y obtenga la URL de punto final de carga de datos y las claves de datos privadas y públicas del dominio.
- Cree un sistema de archivos compartido en OCI y cree objetos de almacenamiento de Kubernetes, como un volumen persistente en el cluster de OKE.
- Descargue el agente Java de APM del dominio de APM y aprovisionarlo en el volumen montado.
- Despliegue el agente de APM en la aplicación actualizando los archivos YAML para los despliegues de Kubernetes o StatefulSets.
B - Los rastreos, intervalos y métricas del servidor y JDBC se envían al dominio de APM. Después de reiniciar los pods de Kubernetes, los rastreos y los intervalos del servidor se envían al dominio de APM donde se encuentra la URL de punto final de carga de datos.
C - Los rastreos, intervalos y métricas del explorador se envían al dominio de APM. Los datos recopilados se pueden visualizar en los paneles de control de APM y en el explorador de rastreo para el análisis de rendimiento y disponibilidad.
Esta arquitectura tiene los siguientes componentes:
- Tenancy
Un arrendamiento es una partición segura y aislada que Oracle configura en Oracle Cloud al registrarse en Oracle Cloud Infrastructure. Puede crear, organizar y administrar sus recursos en OCI dentro de su arrendamiento. Un arrendamiento es sinónimo de una compañía u organización. Normalmente, una compañía tendrá un único arrendamiento y reflejará su estructura organizativa dentro de ese arrendamiento. Un único arrendamiento suele estar asociado a una única suscripción, y una única suscripción normalmente solo tiene un arrendamiento.
- Región
Una región de Oracle Cloud Infrastructure es un área geográfica localizada que contiene uno o más centros de datos, que alojan dominios de disponibilidad. Las regiones son independientes entre sí y pueden separarse grandes distancias (entre países o incluso continentes).
- Compartimento
Los compartimentos son particiones lógicas entre regiones dentro de un arrendamiento de Oracle Cloud Infrastructure. Utilice compartimentos para organizar, controlar el acceso y definir cuotas de uso para los recursos de Oracle Cloud. En un compartimento determinado, defina políticas que controlen el acceso y definan privilegios para los recursos.
- Red y subredes virtuales en la nube (VCN)
Una VCN es una red personalizable definida por software que se configura en una región de Oracle Cloud Infrastructure. Al igual que las redes de los centros de datos tradicionales, las redes virtuales le proporcionan el control de su entorno de red. Una VCN puede tener varios bloques de CIDR no superpuestos que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes, las cuales se pueden acotar a una región o a un dominio de disponibilidad. Cada subred está formada por un rango contiguo de direcciones que no se solapan con las demás subredes de la VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.
En esta arquitectura, todas las instancias informáticas que alojan el cluster de Reds están asociadas a una única subred regional.
- Listas de seguridad
Para cada subred, puede crear reglas de seguridad que especifiquen el origen, el destino y el tipo de tráfico que se permite dentro y fuera de la subred.
Esta arquitectura agrega reglas de entrada para los puertos TCP 16379 y 6379. El puerto 6379 presta servicio a los clientes de Reds y el puerto 16379 lo utiliza el bus de cluster de Reds.
- Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine u OKE) es un servicio totalmente gestionado, escalable y de alta disponibilidad que puede utilizar para desplegar las aplicaciones en contenedores en la nube. Especifique los recursos informáticos que necesitan sus aplicaciones y Kubernetes Engine los aprovisionará en Oracle Cloud Infrastructure en un arrendamiento existente. OKE utiliza Kubernetes para automatizar el despliegue, la ampliación y la gestión de aplicaciones en contenedores en clusters de hosts.
- Autonomous Transaction Processing
Oracle Autonomous Transaction Processing es un servicio de base de datos de autogestión, autoseguridad y autorreparación optimizado para las cargas de trabajo de procesamiento de transacciones. No necesita configurar ni gestionar ningún hardware, ni instalar ningún software. Oracle Cloud Infrastructure gestiona la creación, la copia de seguridad, la aplicación de parches, el cambio de versión y el ajuste de la base de datos.
- Control de Rendimiento de la Aplicación
Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) es una solución basada en plataforma como servicio (PaaS) que proporciona una visibilidad total del rendimiento de la aplicación, desde el usuario final hasta los logs de la aplicación. El servicio integra información de experiencia de usuario, métricas de aplicaciones y análisis de datos de log.
- Dominio de APM
El dominio de APM es un tipo de recurso de Oracle Cloud Infrastructure (OCI) que contiene los sistemas que supervisa APM.
Cada dominio de APM se crea en un compartimento de OCI estándar y puede definir políticas de control de acceso de OCI para otorgar acceso al dominio de APM a un juego específico de usuarios.
- Claves de datos
Las claves de datos son necesarias para garantizar que APM acepte las observaciones recopiladas por los orígenes de datos. Las claves de datos se generan cuando se crea un dominio APM y son de dos tipos: clave de datos pública y clave de datos privada.
- URL de punto final de carga de datos
el punto final de carga de datos es la URL a la que un origen de datos envía las observaciones. El punto final de carga de datos se genera cuando se crea un dominio de APM y cada dominio de APM tiene su punto final de carga de datos.
- Operador OpenTelemetry
El operador OpenTelemetry es un operador de Kubernetes diseñado para simplificar la inyección automática de agentes Java en JVM que se ejecutan en pods de Kubernetes.
- Agentes Java de APM
Los agentes de Java de APM registran los intervalos y las métricas de los servidores de aplicaciones y los envían a APM.
- Agentes de explorador de APM
Los agentes del explorador de APM registran las interacciones del usuario con los sitios web y envían períodos y métricas a APM.
- Rastreo y período
Un rastreo es el flujo completo de una solicitud que pasa por todos los componentes de un sistema distribuido en un período de tiempo determinado. Un intervalo incluye operaciones o unidades lógicas de trabajo dentro de un rastreo, y tiene un nombre, una hora de inicio y una duración.
- Dominio de APM
Recomendaciones
Sus requisitos pueden diferir de la arquitectura descrita aquí. Utilice las siguientes recomendaciones como punto de partida para Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM).
- Agente de explorador de APM
Despliegue el agente del explorador de APM en la interfaz web de la aplicación para activar la supervisión del usuario final. Los rastreos comienzan con la acción del usuario en el explorador.
- Supervisión sintética
Configure la supervisión sintética para supervisar la interfaz de usuario de la aplicación y los puntos finales de API a fin de detectar de forma proactiva los problemas de disponibilidad y rendimiento. Puede crear supervisiones basadas en explorador o en REST y programarlas para que se ejecuten periódicamente desde ubicaciones globales o desde la red virtual en la nube (VCN) del inquilino.
Consideraciones
Al utilizar Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM), tenga en cuenta lo siguiente.
- Claves de datos
Utilice claves de datos personalizadas para gestionar los datos enviados a APM. Además de las claves de datos por defecto, puede crear sus propias claves de datos para fines específicos. En el caso de despliegues de gran tamaño en los que muchas personas utilizan APM, proporcione diferentes claves a diferentes propietarios de proyectos para que, como administrador de dominio de APM, pueda controlar fácilmente qué datos entran en APM y qué datos no.
Por ejemplo, APM recibe un juego de datos de un proyecto abandonado y desea desactivar la recopilación de datos. Sin embargo, debido a que el propietario del proyecto abandonó la organización, es difícil identificar qué agentes desactivar. Puede suprimir la clave de datos utilizada por el proyecto para ignorar los datos asociados a esa clave de datos.
- Recursos de Kubernetes
Al configurar microservicios, considere utilizar StatefulSets en lugar de Despliegues al configurar recursos de pod de Kubernetes para realizar un mejor seguimiento del historial en APM. Los pods de despliegue cambian sus ID cada vez que se regeneran, StatefulSets se regeneran con el mismo índice de ID (por ejemplo, SS_0, SS_1, SS_2), lo que simplifica el rastreo del historial con APM.
- Nombre del Servicio de APM
Al aprovisionar el agente Java de APM, debe especificar el nombre de servicio utilizado en APM. Considere el uso del nombre Deployment/StatefulSet como APM serviceName para el rastreo consistente en APM.
- Muestreo
Utilice el muestreo en aplicaciones de gran volumen (por ejemplo, 1 millón de transacciones por segundo). APM recopila todos los intervalos de forma predeterminada y le permite realizar un seguimiento de todas las transacciones de la aplicación. Sin embargo, esto puede generar muchos intervalos en el caso de aplicaciones de gran volumen. En tales casos, considere especificar explícitamente la configuración de muestreo para mejorar la rentabilidad y reducir la cantidad de datos de rastreo.
Despliegue
Consulte las instrucciones paso a paso de los siguientes talleres de Oracle LiveLabs al desplegar el agente Java de APM descrito en esta arquitectura de referencia.
En los siguientes laboratorios se utilizan aplicaciones con Spring Boot y Oracle WebLogic Server como ejemplos.
Explorar más
Obtenga más información sobre las funciones de esta arquitectura y sobre la información relacionada.
Para obtener más información sobre Oracle Application Performance Monitoring, revise estos recursos adicionales: