Cómo usar el monitoreo para solucionar problemas de la plataforma de automatización de Ansible

En nuestro artículo anterior, detallamos los problemas comunes que se encuentran al implementar la automatización de TI a escala. En este artículo, exploramos cómo solucionar estos problemas mediante la supervisión. Aquí hay un ejemplo de un escenario a considerar:

La empresa establece la plataforma de automatización de Ansible como la columna vertebral de su implementación global de automatización de TI. La arquitectura consta de media docena de clústeres de controladores de automatización de Ansible, cada uno con hasta 10 instancias que se ejecutan en contenedores sobre OpenShift. Algunos de estos clústeres admiten cientos de usuarios que ejecutan miles de tareas por día en decenas de miles de hosts. Eventualmente, algunos clústeres comienzan a experimentar problemas de rendimiento, incluidos los siguientes síntomas:

  • Una interfaz de usuario web que no responde
  • Trabajos en cola y atascados en estado pendiente
  • Trabajos suspendidos que nunca terminan
  • Aparecen errores aleatorios 500 y 404 en la interfaz de usuario y la API

Estos clústeres a veces se volvieron casi inutilizables debido a una interfaz de usuario web que no respondía a la imposibilidad de realizar tareas y otros errores aleatorios. Esto afecta a cientos de usuarios que no pueden ejecutar la automatización de forma constante. Tras semanas de investigación, descubren múltiples problemas y soluciones.

En este artículo, explicamos cómo solucionar estos problemas.

Índice

Ejecución de un controlador de automatización en contenedores

Ejecute un controlador de automatización Ansible en OpenShift proporciona una manera fácil de escalar un controlador de automatización Ansible. Sin embargo, como con cualquier plataforma de virtualización, debe habilitar Ansible Automation Controller para que funcione de la manera más eficiente posible.

A menudo, OpenShift se ejecuta en una plataforma de virtualización diferente, y es fundamental comprender cómo se utilizan los recursos en los diferentes niveles de virtualización. La sobrecarga de los recursos de CPU y memoria de su plataforma de virtualización puede afectar el rendimiento de OpenShift. Por lo tanto, es importante tener una proporción de compromiso de 1:1 para CPU y memoria en su plataforma de virtualización y dejar que OpenShift maneje el exceso de compromiso de recursos. Además de observar el exceso de compromiso de la CPU y la memoria, debe comprender qué otros pods se ejecutan en las instancias de OpenShift para evitar la contención de recursos.

La gestión adecuada de OpenShift garantiza la disponibilidad de Ansible Automation Controller y otras aplicaciones que se ejecutan en el entorno OpenShift. Las cuotas de espacio de nombres definen la cantidad máxima de recursos de CPU y memoria que puede consumir un proyecto, lo que limita el impacto que un proyecto puede tener en otros proyectos. Además, la consulta del contenedor de tareas y la configuración de límites definen los recursos de CPU y memoria disponibles para que el controlador de automatización de Ansible realice tareas.

De forma predeterminada, el instalador del controlador de automatización de Ansible establece la demanda de CPU en 1500 milicores y la demanda de memoria en 2 GB. task_cpu_request y task_mem_request variables para establecer los tamaños de solicitud para el contenedor de tareas en el inventario del instalador de Ansible Automation Controller. Esta configuración tiene un impacto directo en la cantidad de bifurcaciones que una instancia de controlador de automatización de Ansible tiene para realizar tareas.

Supervisión de clústeres

Incluso cuando utilice estas técnicas, aún debe monitorear los clústeres para garantizar el estado y el rendimiento del controlador de automatización de Ansible. Existen diferentes formas de monitorear y registrar los controladores de automatización, ya sea con capacidades integradas o con software externo.

El controlador de automatización Ansible viene con métricas integradas para el monitoreo. La API tiene varios puntos finales que proporcionan datos importantes sobre el estado del clúster. El punto final más útil es /api/v2/metrics. Al consultarlo, puede obtener toneladas de información, incluidas estadísticas sobre la ejecución del trabajo, la cantidad de recursos, el procesador, la memoria y los datos de capacidad. Otros puntos finales útiles incluyen /api/v2/ping y /api/v2/instance_groups.

Aquí hay un ejemplo de /api/v2/metrics punto final para el controlador de automatización de Ansible.

(Brant Evans, Nicholas Awtry, CC BY-SA 4.0)

Los puntos finales métricos se vuelven aún más útiles cuando se combinan con herramientas de monitoreo externas. Puede configurar Prometheus para recuperar datos del controlador de automatización de Ansible y organizarlos en un solo lugar. Entonces Grafana puede usar estos datos y visualizarlos como gráficos para una fácil interpretación. Ambas herramientas permiten cierto grado de alerta para notificar a los administradores cuando algo anda mal con el clúster. La supervisión activa del controlador de automatización de Ansible es necesaria tanto para prevenir como para resolver posibles problemas de rendimiento.

[ You might also be interested in reading An introduction to Prometheus metrics and performance monitoring. ]

Este es un ejemplo de un gráfico de Grafana para la infraestructura del controlador de automatización de Ansible.

(Brant Evans, Nicholas Awtry, CC BY-SA 4.0)

Prometheus proporciona una funcionalidad más avanzada para recopilar métricas de nivel inferior: el exportador de nodos de Prometheus. El exportador de nodos permite monitorear el sistema operativo y los datos de OpenShift (si corresponde), lo que permite una visión holística del estado del controlador de automatización de Ansible. Dado que la configuración de la infraestructura subyacente puede causar problemas de rendimiento, es importante estar atento a este tipo de métricas.

[ Learn more about Red Hat OpenShift Container Platform.]

Además de la supervisión activa, la gestión de registros es importante para mantener en buen estado el controlador de automatización de Ansible. Si bien el controlador de automatización almacena sus registros de forma predeterminada en su base de datos y en el servidor, puede configurarlo para exportar registros. Ansible Automation Controller tiene capacidades nativas para integrarse con agregadores de registros externos, como Splunk o Elasticsearch. La exportación de registros ayuda a reducir el tamaño de la base de datos y proporciona una forma más sencilla de investigar los problemas de rendimiento. Las herramientas externas tienen interfaces fáciles de usar y capacidades de búsqueda que facilitan la localización de errores en los registros cuando se combinan con paneles gráficos.

Conclusión

El uso de Ansible para la automatización permite a los equipos realizar tareas de forma repetida y precisa en la infraestructura y las aplicaciones del servidor y la red. A medida que aumenta el uso de Ansible en una empresa, el controlador de automatización de Ansible se convierte en una parte importante de la arquitectura de automatización, ya que proporciona una forma coherente de realizar la automatización y proporciona controles como el control de acceso basado en roles (RBAC) en torno a la ejecución de la automatización.

Es importante evolucionar el controlador de automatización de Ansible para satisfacer las necesidades de los usuarios y la automatización. El escalado adecuado del controlador de automatización de Ansible permite la adopción continua de la automatización dentro de una organización y la empresa. Al seguir las prácticas descritas aquí, puede evolucionar Ansible para cumplir con el uso creciente de la automatización en su organización.

Artículos de interés

Subir