Uno de los principales desafíos que enfrentan los administradores de sistemas, desarrolladores y otros, cuando ejecutan cargas de trabajo en Red Hat Enterprise Linux (RHEL) es cómo optimizar el rendimiento dimensionando correctamente en los sistemas, entendiendo la utilización y abordando los problemas que surgen. Para tomar decisiones basadas en datos sobre estos temas, el administrador o el desarrollador deben registrar las métricas de rendimiento y acceder a ellas.

El seguimiento de métricas de rendimiento con Performance Co-Pilot (PCP) y Grafana puede ser útil en casi cualquier entorno RHEL. Sin embargo, el proceso para configurarlo en una gran cantidad de hosts puede parecer abrumador al principio. Esta es la razón por la que Red Hat introdujo una función de sistema de métricas, que automatiza la configuración de métricas de rendimiento. 

El fondo

Antes de pasar a la demostración, veamos algunos conceptos básicos. Los roles del sistema RHEL son una colección de roles y módulos de Ansible que se incluyen en RHEL para ayudar a proporcionar flujos de trabajo consistentes y agilizar la ejecución de tareas manuales. La función del sistema de métricas le ayuda a visualizar las métricas de rendimiento en su entorno RHEL de forma más rápida y sencilla.

Red Hat admite el kit de herramientas Performance Co-Pilot (PCP) como parte de RHEL para recopilar métricas de rendimiento y Grafana para visualizar los datos. Si aún no está familiarizado con PCP y Grafana, consulte la serie que Karl Abbott publicó recientemente, en particular la parte 1 y la parte 2, que brindan una descripción general de estas herramientas. Además, la página de la serie de publicaciones de rendimiento de RHEL es un centro para nuestras publicaciones relacionadas con el rendimiento de RHEL.

Descripción general del entorno

En mi entorno de ejemplo, tengo un sistema de nodo de control llamado controlnode que ejecuta RHEL 8 y cuatro nodos administrados (dos ejecutan RHEL 8, dos ejecutan RHEL 7).

En este ejemplo, me gustaría instalar, configurar y comenzar a registrar métricas de rendimiento en los cinco de estos hosts usando PCP. También me gustaría instalar y configurar Grafana en el sistema del nodo de control, y que las métricas de rendimiento de los cinco servidores se puedan ver dentro de Grafana.

Ya configuré una cuenta de servicio Ansible en los cinco servidores, llamada ansible, y configuré la autenticación de clave SSH para que la cuenta ansible en controlnode pueda iniciar sesión en cada uno de los sistemas. Además, la cuenta de servicio ansible se ha configurado con acceso a la cuenta raíz a través de sudo en cada host. También instalé los paquetes rhel-system-roles y ansible en controlnode. Para obtener más información sobre estas tareas, consulte la publicación Introducción a los roles del sistema RHEL.

En este entorno, estoy usando un nodo de control RHEL 8, pero también puede usar Ansible Tower como su nodo de control de funciones del sistema RHEL. Ansible Tower proporciona muchas funciones y capacidades de automatización avanzadas que no están disponibles cuando se utiliza un nodo de control RHEL. Para obtener más información sobre Ansible Tower y su funcionalidad, consulte esta página de descripción general.

Definición del archivo de inventario y las variables de función

Necesito definir un inventario de Ansible para enumerar y agrupar los cinco hosts que quiero que configure el rol del sistema de métricas.

Desde el sistema de controlnode, el primer paso es crear una nueva estructura de directorio:

Estos directorios se utilizarán de la siguiente manera:

  • El directorio de métricas contendrá el libro de jugadas y el archivo de inventario.
  • metrics / group_vars definirá las variables de grupo de Ansible que se aplicarán a los grupos de hosts que se definieron en el archivo de inventario.

Crearé el archivo de inventario principal en metrics / Inventory.yml con el siguiente contenido:

Este inventario enumera los cinco hosts y los agrupa en dos grupos:

  • El grupo de servidores contiene los hosts rhel8-server1, rhel8-server2, rhel7-server1 y rhel7-server2.
  • El grupo metrics_monitor contiene el host de controlnode.

A continuación, tendré que definir las variables de función que controlarán el comportamiento de la función de métricas cuando se ejecute. El archivo README.md para el rol de métricas, disponible en /usr/share/doc/rhel-system-roles/metrics/README.md contiene información importante sobre el rol, incluida una lista de variables de rol disponibles y cómo usarlas.

Crearé un archivo que definirá variables para los cuatro sistemas enumerados en el grupo de inventario de servidores creando un archivo en metrics / group_vars / servers.yml con el siguiente contenido:

La variable metrics_retention_days establecida en 7 hará que el rol de métricas configure PCP en los sistemas de nuestro grupo de inventario de servidores y retenga los datos de rendimiento históricos durante siete días. A continuación, crearé un archivo que definirá las variables para el sistema enumerado en el grupo de inventario metrics_monitor creando un archivo en metrics / group_vars / metrics_monitor.yml con el siguiente contenido:

Las variables metrics_graph_service y metrics_query_service indicarán al rol que configure Grafana y Redis, respectivamente. Metrics_retention_days hará que se retengan siete días de datos de rendimiento históricos, los mismos que se configuraron en el archivo group_vars de los servidores.

La variable metrics_monitored_hosts debe establecerse en la lista de hosts remotos que deberían ser visibles en Grafana. En lugar de enumerar los hosts aquí, hago referencia a la variable grupos [‘servidores’], que contendrá la lista de hosts definidos en el grupo de inventario de servidores.

Creando el libro de jugadas

El siguiente paso es crear el archivo del libro de jugadas. El archivo README.md de métricas indica que la función no configura las reglas de firewall, por lo que además de llamar a la función de métricas, también necesitaré tener tareas para configurar las reglas de firewall.

Crearé el manual de estrategias en metrics / metrics.yml con el siguiente contenido:

La primera tarea, Open Firewall para pmcd, abrirá el servicio pmcd en el firewall en los cuatro sistemas enumerados en el grupo de inventario de servidores.

La tarea Open Firewall for grafana abrirá el servicio grafana en el firewall en el sistema único en el grupo de inventario metrics_monitor (el host de controlnode).

La siguiente tarea, Usar la función del sistema de métricas para configurar el registro de métricas de PCP, solo se aplica a los cuatro hosts del grupo de inventario de servidores y llama a la función del sistema de métricas. Según las variables metrics / group_vars / servers.yml, esto hará que PCP se configure en cada uno de estos cuatro hosts, y las métricas de rendimiento se retendrán durante siete días.

La tarea final, Usar la función del sistema de métricas para configurar Grafana, solo se aplica al host único en el grupo de inventario metrics_monitor (el host de controlnode). Las variables metrics / group_vars / metrics_monitor.yml harán que Grafana y Redis se configuren, PCP se configure con un período de retención de siete días y PCP también se configure para monitorear los otros cuatro servidores.

Si está utilizando Ansible Tower como su nodo de control, puede importar este manual de Ansible en Ansible Automation Platform creando un proyecto, siguiendo la documentación proporcionada aquí. Es muy común usar repositorios de Git para almacenar libros de jugadas de Ansible. Ansible Automation Platform almacena la automatización en unidades llamadas Trabajos que contienen el libro de jugadas, las credenciales y el inventario. Cree una plantilla de trabajo siguiendo la documentación aquí.

Solución alternativa para BZ 1967335

En el momento de escribir este artículo, cuando se usa el RPM rhel-system-roles en RHEL 8.4, hay un error (BZ 1967335) que causa problemas al configurar el monitoreo de PCP remoto. Estamos trabajando en una solución dirigida a RHEL 8.5.

Si usa el RPM rhel-system-roles en RHEL 8.4 o versiones anteriores, ejecute los siguientes comandos sed para solucionar el problema.

Ejecutando el libro de jugadas

En este punto, todo está en su lugar y estoy listo para ejecutar el libro de jugadas. Si está utilizando Ansible Tower como su nodo de control, puede iniciar el trabajo desde la interfaz web de Tower. Para esta demostración, estoy usando un nodo de control RHEL y ejecutaré el libro de jugadas desde la línea de comandos. Usaré el comando cd para moverme al directorio de métricas y luego usaré el comando ansible-playbook para ejecutar el libro de jugadas.

Especifico que se debe ejecutar el libro de jugadas metrics.yml, que debe escalar a la raíz (el indicador -b) y que el archivo Inventory.yml debe usarse como mi inventario de Ansible (el indicador -i). Después de completar el libro de jugadas, verifiqué que no hubo tareas fallidas:
También ejecuté el comando pcp y validé que veo los cinco hosts en las secciones pmlogger y pmie de la salida. El motor de inferencia de métricas de rendimiento (pmie) evalúa las reglas utilizando métricas a intervalos regulares y realiza acciones (como escribir advertencias en el registro del sistema) cuando cualquier regla se evalúa como verdadera. Es posible que todos los hosts tarden unos minutos en aparecer en la salida de pcp.
En mis pruebas, descubrí que es necesario reiniciar los servicios pmlogger y pmproxy en el host de Grafana en este punto para garantizar que Grafana funcione correctamente. Este problema se está rastreando en BZ 1978357. Los servicios se pueden reiniciar con este comando:
Iniciar sesión en Grafana

Ahora puedo iniciar sesión en Grafana a través de un navegador web accediendo al nombre de host de los servidores de Grafana en el puerto 3000, que en mi ejemplo será controlnode: 3000.

Se presenta una pantalla de inicio de sesión de Grafana y puede iniciar sesión con admin como nombre de usuario y contraseña.

La siguiente pantalla le pedirá que cambie la contraseña de administrador a una nueva contraseña. Una vez que se ha cambiado la contraseña de administrador, se muestra la interfaz web principal de Grafana.

A continuación, accederé al menú Configuración a la izquierda y haré clic en Fuentes de datos.

En el menú Fuentes de datos, seleccionaré PCP Redis.
Haré clic en la pestaña Paneles de control y, a continuación, en Importar para el panel de PCP Redis: descripción general del host.
A continuación, iré a la opción de menú Paneles de control a la izquierda y haré clic en Administrar
Seleccionaré el panel de PCP Redis: descripción general del host.
Desde este panel, tengo un menú desplegable donde puedo seleccionar cualquiera de los cinco hosts en mi entorno:
Cuando se selecciona un host, se muestran más de 20 gráficos de rendimiento diferentes. Tenga en cuenta que las métricas pueden tardar un par de minutos en aparecer en sus hosts si accede inmediatamente a Grafana después de ejecutar la función de métricas. Esto se debe a que las métricas que utilizan contrasemántica requieren al menos dos muestras antes de que se puedan mostrar, por lo que con el intervalo de muestreo predeterminado de un minuto, tomará dos minutos recolectar las dos muestras iniciales.
Conclusión

El rol del sistema de métricas puede ayudarlo a implementar rápida y fácilmente la supervisión de métricas de rendimiento en su entorno RHEL. Con esta información, podrá tomar decisiones basadas en datos sobre los sistemas de dimensionamiento adecuado y podrá utilizar los datos proporcionados para abordar mejor los problemas de rendimiento que surjan.

Para obtener más información sobre PCP en RHEL 8, revise los capítulos de supervisión y gestión del estado y rendimiento del sistema.

Hay muchas otras funciones del sistema RHEL que pueden ayudar a automatizar otros aspectos importantes de su entorno RHEL. Para explorar roles adicionales, revise la lista de roles del sistema RHEL disponibles y comience a administrar sus servidores RHEL de una manera más eficiente, consistente y automatizada hoy.

En mis pruebas, descubrí que es necesario reiniciar los servicios pmlogger y pmproxy en el host de Grafana en este punto para garantizar que Grafana funcione correctamente. Este problema se está rastreando en BZ 1978357. Los servicios se pueden reiniciar con este comando:
Autor:

Brian Smith es un Gerente de Producto en Red Hat enfocado en la automatización y administración de RHEL. Ha estado en Red Hat desde 2018, anteriormente trabajó con clientes del sector público como Technical Account Manager (TAM).

                                                    Queremos ser su aliado tecnológico

                 Permítanos conocer sus requerimientos y desarrollar una estrategia de automatización innovadora para su empresa.

Entradas recomendadas

Aún no hay comentarios, ¡añada su voz abajo!


Añadir un comentario