Supervisión del sistema operativo - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Supervisión del sistema operativo

Una instancia de base de datos en Amazon RDS para MySQL o MariaDB se ejecuta en el sistema operativo Linux, que utiliza los recursos del sistema subyacentes: CPU, memoria, red y almacenamiento.

MySQL [(none)]> SHOW variables LIKE 'version%'; +-------------------------+---------------------+ | Variable_name | Value | +-------------------------+---------------------+ | version | 8.0.28 | | version_comment | Source distribution | | version_compile_machine | aarch64 | | version_compile_os | Linux | | version_compile_zlib | 1.2.11 | +-------------------------+---------------------+ 5 rows in set (0.00 sec)

El rendimiento general de la base de datos y del sistema operativo subyacente depende en gran medida del uso de los recursos del sistema. Por ejemplo, la CPU es el componente clave del rendimiento del sistema, ya que ejecuta las instrucciones del software de la base de datos y administra otros recursos del sistema. Si la CPU está sobreutilizada (es decir, si la carga requiere más potencia de la CPU que la aprovisionada para la instancia de base de datos), este problema afectaría al rendimiento y a la estabilidad de la base de datos y, en consecuencia, de la aplicación.

El motor de base de datos asigna y libera memoria de manera dinámica. Cuando no hay suficiente memoria en la RAM para hacer el trabajo actual, el sistema graba páginas de memoria en la memoria de intercambio, que se encuentra en el disco. Como el disco es mucho más lento que la memoria, incluso si el disco usa la tecnología SSD NVMe, la asignación excesiva de memoria provoca una degradación del rendimiento. El uso elevado de la memoria provoca un aumento de la latencia de las respuestas de la base de datos, ya que el tamaño de un archivo de paginación aumenta para admitir más memoria. Si la asignación de memoria es tan alta que agota los espacios de la RAM y la memoria de intercambio, es posible que el servicio de base de datos deje de estar disponible y los usuarios observen errores como [ERROR] mysqld: Out of memory (Needed xyz bytes).

Los sistemas de administración de bases de datos de MySQL y MariaDB utilizan el subsistema de almacenamiento, que consta de discos que almacenan estructuras en el disco, como tablas, índices, registros binarios, registros de redo, registros de undo y archivos de búfer de doble escritura. Por lo tanto, la base de datos, a diferencia de otros tipos de software, debe llevar a cabo mucha actividad en el disco. Para obtener un funcionamiento óptimo de la base de datos, es importante que supervise y ajuste la utilización de E/S del disco y la asignación del espacio en disco. El rendimiento de la base de datos puede verse afectado cuando la base de datos alcanza las limitaciones del máximo de IOPS o del rendimiento que admite el disco. Por ejemplo, las ráfagas de acceso aleatorio ocasionadas por un análisis de índices pueden provocar una gran cantidad de operaciones de E/S por segundo, lo que, en última instancia, podría afectar a las limitaciones del almacenamiento subyacente. Es posible que los escaneos de tabla completa no alcancen el límite de IOPS, pero pueden provocar un alto rendimiento, que se mide en megabytes por segundo. Es fundamental supervisar y generar las alertas sobre la asignación de espacio en disco, ya que los errores como OS error code 28: No space left on device pueden provocar la falta de disponibilidad de la base de datos y dañarla.

Amazon RDS proporciona métricas en tiempo real para el sistema operativo en el que se ejecuta la instancia de base de datos. Amazon RDS publica de manera automática un conjunto de métricas del sistema operativo en CloudWatch. Estas métricas están disponibles para su visualización y análisis en la consola de Amazon RDS y en los paneles de CloudWatch. Puede configurar las alarmas en las métricas seleccionadas en CloudWatch. Entre los ejemplos se incluyen:

  • CPUUtilization: porcentaje de uso de la CPU.

  • BinLogDiskUsage: cantidad de espacio en disco que ocupan los registros binarios.

  • FreeableMemory: cantidad de memoria de acceso aleatorio disponible. Representa el valor del campo MemAvailable de /proc/meminfo.

  • ReadIOPS: número promedio de operaciones de E/S de lectura en disco por segundo.

  • WriteThroughput: número promedio de bytes que se escribe en el disco por segundo del almacenamiento local.

  • NetworkTransmitThroughput: tráfico de red de salida en el nodo de la base de datos, que combina el tráfico de la base de datos y el tráfico de Amazon RDS utilizado en la supervisión y la replicación.

Para obtener una referencia completa de todas las métricas publicadas por Amazon RDS en CloudWatch, consulte Métricas de Amazon CloudWatch para Amazon RDS en la documentación de Amazon RDS.

En el siguiente gráfico se muestran ejemplos de las métricas de CloudWatch para Amazon RDS que se muestran en la consola de Amazon RDS.

Métricas de CloudWatch para Amazon RDS que se muestran en la consola de Amazon RDS

En el siguiente gráfico se muestran métricas similares que se muestran en el panel de CloudWatch.

Métricas de CloudWatch para Amazon RDS que se muestran en la consola de CloudWatch

Enhanced Monitoring para Amazon RDS recopila el otro conjunto de métricas del sistema operativo. Esta herramienta le ofrece una mayor visibilidad del estado de las instancias de base de datos de Amazon RDS para MariaDB y Amazon RDS para MySQL, ya que proporciona las métricas del sistema y la información sobre los procesos del sistema operativo en tiempo real. Cuando habilita Enhanced Monitoring en la instancia de base de datos y establece la granularidad deseada, la herramienta recopila las métricas del sistema operativo y la información del proceso, que puede mostrar y analizar en la consola de Amazon RDS, como se muestra en la siguiente pantalla.

Métricas del sistema operativo recopiladas por Enhanced Monitoring

Algunas de las métricas clave que proporciona Enhanced Monitoring son:

  • cpuUtilization.total: porcentaje total de CPU utilizado.

  • cpuUtilization.user: porcentaje de CPU utilizado por los programas de usuario.

  • memory.active: cantidad de memoria asignada, en kilobytes.

  • memory.cached: cantidad de memoria utilizada para almacenar en la caché las E/S basadas en el sistema de archivos.

  • loadAverageMinute.one: número de procesos que solicitaron tiempo de la CPU durante el último minuto.

Para obtener una lista completa de las métricas, consulte Métricas del sistema operativo en Enhanced Monitoring en la documentación de Amazon RDS.

En la consola de Amazon RDS, la lista de procesos del sistema operativo proporciona detalles de cada proceso que se ejecuta en la instancia de base de datos. La lista está organizada en tres secciones:

  • Procesos del sistema operativo: esta sección representa un resumen agregado de todos los procesos del núcleo y del sistema. Por lo general, estos procesos tienen un impacto mínimo en el rendimiento de la base de datos.

  • Procesos de RDS: esta sección representa un resumen de los procesos de AWS necesarios para admitir una instancia de base de datos de Amazon RDS. Por ejemplo, incluye el agente de administración de Amazon RDS, los procesos de supervisión y diagnóstico y procesos similares.

  • Procesos secundarios de RDS: esta sección representa un resumen de los procesos de Amazon RDS que admiten la instancia de base de datos, en este caso, el proceso mysqld y sus subprocesos. Los subprocesos de mysqld aparecen anidados debajo del proceso principal mysqld.

En la ilustración siguiente de la pantalla se muestra la lista de procesos del sistema operativo en la consola de Amazon RDS.

Lista de procesos de los sistemas operativos en la consola de Amazon RDS

Amazon RDS envía las métricas de Enhanced Monitoring a su cuenta de Registros de CloudWatch. Los datos de supervisión que se muestran en la consola de Amazon RDS se obtienen de Registros de CloudWatch. También puede obtener las métricas de una instancia de base de datos en forma de flujo de registro de Registros de CloudWatch. Estas métricas se almacenan en formato JSON. Además, puede consumir la salida JSON de monitorización mejorada desde registros de Amazon Cloudwatch en un sistema de monitoreo de su elección.

Para mostrar los gráficos en el panel de CloudWatch y crear las alarmas que inicien una acción si una métrica supera el umbral definido, debe crear los filtros de las métricas en CloudWatch a partir de Registros de CloudWatch. Para obtener instrucciones detalladas, consulte el artículo de AWS re:Post sobre cómo filtrar los registros de Registros de CloudWatch de Enhanced Monitoring para generar las métricas personalizadas automatizadas para Amazon RDS.

El siguiente ejemplo ilustra la métrica personalizada CPU.User en el espacio de nombres Custom/RDS. Esta métrica personalizada se crea al filtrar la métrica de Enhanced Monitoring cpuUtilization.user de Registros de CloudWatch.

Métrica personalizada de uso de la CPU

Cuando la métrica está disponible en el repositorio de CloudWatch, puede mostrarla y analizarla en los paneles de CloudWatch, aplicar más operaciones matemáticas y de consulta y configurar una alarma para supervisar esta métrica concreta y generar alertas si los valores observados no se ajustan a las condiciones de alarma definidas.