sql >> Base de Datos >  >> RDS >> PostgreSQL

Monitoreo de base de datos PostgreSQL:consejos sobre qué monitorear

Una vez que tenga la infraestructura de su base de datos en funcionamiento, deberá estar al tanto de lo que sucede. La supervisión es imprescindible si quiere asegurarse de que todo va bien o si necesita cambiar algo.

Para cada tecnología de base de datos hay varias cosas que monitorear. Algunos de estos son específicos del motor de la base de datos o del proveedor, o incluso de la versión específica que está utilizando.

En este blog, veremos lo que necesita monitorear en un entorno PostgreSQL.

Qué monitorear en PostgreSQL

Al monitorear un clúster o nodo de base de datos, hay dos cosas principales a tener en cuenta:el sistema operativo y la base de datos en sí. Deberá definir qué métricas va a monitorear desde ambos lados y cómo lo va a hacer. Debe monitorear la métrica siempre en el contexto de su sistema, y ​​debe buscar alteraciones en el patrón de comportamiento.

En la mayoría de los casos, necesitará usar varias herramientas (ya que es casi imposible encontrar una que cubra todas las métricas deseadas). 

Recuerde que cuando una de sus métricas se ve afectada, también puede afectar a otras, lo que hace que la solución del problema sea más compleja. Tener un buen sistema de monitoreo y alerta es importante para que esta tarea sea lo más simple posible.

Supervisión del sistema operativo

Una cosa importante (que es común a todos los motores de base de datos e incluso a todos systems) es monitorear el comportamiento del sistema operativo. Aquí hay algunos puntos para verificar aquí.

Uso de CPU

Un porcentaje excesivo de uso de la CPU podría ser un problema si no es el comportamiento habitual. En este caso, es importante identificar el proceso/procesos que están generando este problema. Si el problema es el proceso de la base de datos, deberá verificar qué sucede dentro de la base de datos.

Uso de memoria RAM o SWAP

Si ve un valor alto para esta métrica y nada ha cambiado en su sistema, probablemente necesite verificar la configuración de su base de datos. Parámetros como shared_buffers y work_mem pueden afectar esto directamente ya que definen la cantidad de memoria que se puede usar para la base de datos PostgreSQL.

Uso de disco

Un aumento anormal en el uso del espacio en disco o un consumo excesivo de acceso al disco son cosas importantes que se deben monitorear, ya que podría tener una gran cantidad de errores registrados en el archivo de registro de PostgreSQL o una mala configuración de caché que podría generar un importante consumo de acceso a disco en lugar de usar memoria para procesar las consultas.

Promedio de carga

Está relacionado con los tres puntos mencionados anteriormente. Un uso excesivo de CPU, RAM o disco podría generar un promedio de carga alto.

Red

Un problema de red puede afectar a todos los sistemas ya que la aplicación no puede conectarse (o conectar paquetes perdidos) a la base de datos, por lo que esta es una métrica importante para monitorear. Puede monitorear la latencia o la pérdida de paquetes, y el problema principal podría ser una saturación de la red, un problema de hardware o simplemente una mala configuración de la red.

Monitoreo de base de datos PostgreSQL

Supervisar su base de datos PostgreSQL no solo es importante para ver si tiene un problema, sino también para saber si necesita cambiar algo para mejorar el rendimiento de su base de datos, que es probablemente uno de los más importantes. cosas para monitorear en una base de datos. Veamos algunas métricas que son importantes para esto.

Supervisión de consultas

Por defecto, PostgreSQL está configurado teniendo en cuenta la compatibilidad y la estabilidad, por lo que debe conocer sus consultas y su patrón, y configurar sus bases de datos según el tráfico que tenga. Aquí, puede usar el comando EXPLAIN para verificar el plan de consulta para una consulta específica, y también puede monitorear la cantidad de SELECCIONAR, INSERTAR, ACTUALIZAR o ELIMINAR en cada nodo. Si tiene una consulta larga o una gran cantidad de consultas ejecutándose al mismo tiempo, eso podría ser un problema para todos los sistemas.

Supervisión de sesiones activas

También debe controlar el número de sesiones activas. Si está cerca del límite, debe verificar si algo está mal o si solo necesita incrementar el valor de max_connections. La diferencia en el número puede ser un aumento o disminución de conexiones. El mal uso de la agrupación de conexiones, el bloqueo o el problema de la red son los problemas más comunes relacionados con la cantidad de conexiones.

Bloqueos de base de datos

Si tiene una consulta en espera de otra consulta, debe verificar si esa otra consulta es un proceso normal o algo nuevo. En algunos casos, si alguien está haciendo una actualización en una tabla grande, por ejemplo, esta acción puede estar afectando el comportamiento normal de su base de datos, generando una gran cantidad de bloqueos.

Supervisión de la replicación

Las métricas clave para monitorear la replicación son el retraso y el estado de la replicación. Los problemas más comunes son problemas de red, problemas de recursos de hardware o problemas de subdimensionamiento. Si se enfrenta a un problema de replicación, deberá saberlo lo antes posible, ya que deberá solucionarlo para garantizar un entorno de alta disponibilidad.

Supervisión de copias de seguridad

Evitar la pérdida de datos es una de las tareas básicas de DBA, por lo que no solo necesita realizar la copia de seguridad, debe saber si la copia de seguridad se completó y si se puede utilizar. Por lo general, este último punto no se tiene en cuenta, pero probablemente sea la comprobación más importante en un proceso de copia de seguridad.

Supervisión de registros de la base de datos

Debe monitorear el registro de su base de datos en busca de errores como FATAL o interbloqueo, o incluso errores comunes como problemas de autenticación o consultas de ejecución prolongada. La mayoría de los errores se escriben en el archivo de registro con información detallada y útil para solucionarlo.

Impacto de la supervisión en el rendimiento de la base de datos PostgreSQL

Si bien el monitoreo es obligatorio, generalmente no es gratuito. Siempre hay un costo en el rendimiento de la base de datos, dependiendo de cuánto esté monitoreando, por lo que debe evitar monitorear cosas que no usará.

En general, hay dos formas de monitorear sus bases de datos, desde los registros o desde el lado de la base de datos mediante consultas.

En el caso de los logs, para poder utilizarlos es necesario tener un nivel de registro alto, lo que genera un alto acceso al disco y puede afectar el rendimiento de tu base de datos.

Para el modo de consulta, cada conexión a la base de datos usa recursos, por lo que dependiendo de la actividad de su base de datos y los recursos asignados, también puede afectar el rendimiento.

Herramientas de supervisión de PostgreSQL

Hay varias opciones de herramientas para monitorear su base de datos. Puede ser una herramienta PostgreSQL incorporada, como extensiones, o alguna herramienta externa. Veamos algunos ejemplos de estas herramientas.

Extensiones

  • Pg_stat_statements :Esta extensión te ayudará a conocer el perfil de consulta de tu base de datos. Realiza un seguimiento de todas las consultas que se ejecutan y almacena mucha información útil en una tabla llamada pg_stat_statements. Al consultar esta tabla, puede obtener qué consultas se ejecutan en el sistema, cuántas veces se han ejecutado y cuánto tiempo han consumido, entre otra información.
  • Pgbadger :Es un software que realiza un análisis de los registros de PostgreSQL y los muestra en un archivo HTML. Le ayuda a comprender el comportamiento de su base de datos e identificar qué consultas deben optimizarse.
  • Pgstattuple :Puede generar estadísticas para tablas e índices, mostrando cuánto espacio utilizado por cada tabla e índice, es consumido por tuplas activas, tuplas eliminadas o cuánto espacio sin usar está disponible en cada relación.
  • Pg_buffercache :con esto, puede verificar lo que sucede en el caché del búfer compartido en tiempo real, mostrando cuántas páginas se encuentran actualmente en el caché.

Herramientas de monitoreo externo

  • ClusterControl :Es un sistema de administración y monitoreo que ayuda a implementar, administrar, monitorear y escalar sus bases de datos desde una interfaz amigable. ClusterControl es compatible con las principales tecnologías de base de datos de código abierto y puede automatizar muchas de las tareas de la base de datos que debe realizar regularmente, como agregar y escalar nuevos nodos, ejecutar copias de seguridad y restauraciones, y más.
  • Nagios :Es un sistema de código abierto y una aplicación de monitoreo de red. Supervisa hosts o servicios y gestiona alertas para diferentes estados. Con esta herramienta, puede monitorear servicios de red, recursos de host y más. Para monitorear PostgreSQL, puede usar algún complemento o puede crear su propio script para verificar su base de datos.
  • Zabbix :Es un software que puede monitorear tanto redes como servidores. Utiliza un mecanismo de notificación flexible que permite a los usuarios configurar alertas por correo electrónico. También ofrece informes y visualización de datos basados ​​en los datos almacenados. Se accede a todos los informes y estadísticas de Zabbix, así como a los parámetros de configuración, a través de una interfaz web.

Paneles

La visibilidad es útil para la detección rápida de problemas. Definitivamente es una tarea que consume más tiempo leer la salida de un comando que solo mirar un gráfico. Entonces, el uso de un tablero podría ser la diferencia entre detectar un problema ahora o en los próximos 15 minutos, seguro que ese tiempo puede ser muy importante para la empresa. Para esta tarea, herramientas como PMM o Vividcortex, entre otras, podrían ser la clave para agregar visibilidad a su sistema de monitoreo de base de datos.

Monitoreo y Gestión de Percona (PMM): Es una plataforma de código abierto para administrar y monitorear el rendimiento de su base de datos. Proporciona un análisis exhaustivo basado en el tiempo para servidores MySQL, MariaDB, MongoDB y PostgreSQL para garantizar que sus datos funcionen de la manera más eficiente posible.

VividCortex: Es una plataforma alojada en la nube que proporciona un monitoreo profundo del rendimiento de la base de datos. Ofrece una visibilidad completa de las principales bases de datos de código abierto, incluidas MySQL, PostgreSQL, AWS Aurora, MongoDB y Redis.

Alertas

Solo monitorear un sistema no tiene sentido si no recibe una notificación sobre cada problema. Sin un sistema de alertas, debe ir a la herramienta de monitoreo para ver si todo está bien, y es posible que tenga un gran problema desde hace muchas horas. Este trabajo de alerta podría realizarse mediante el uso de alertas por correo electrónico, alertas de texto u otras integraciones de herramientas como Slack.

Es realmente difícil encontrar algunas herramientas para monitorear todas las métricas necesarias para PostgreSQL, en general, necesitará usar más de una e incluso será necesario realizar algunos scripts. Una forma de centralizar la tarea de monitoreo y alerta es usar ClusterControl, que le brinda funciones como administración de respaldo, monitoreo y alerta, implementación y escalado, recuperación automática y funciones más importantes para ayudarlo a administrar sus bases de datos. Todas estas características en el mismo sistema.

Monitoreo de su base de datos PostgreSQL con ClusterControl

ClusterControl le permite monitorear sus servidores en tiempo real. Tiene un conjunto de paneles predefinidos para usted, para analizar algunas de las métricas más comunes.

Te permite personalizar los gráficos disponibles en el clúster, y puedes habilite el monitoreo basado en agentes para generar tableros más detallados.

También puede crear alertas que le informen sobre eventos en su clúster, o integrar con diferentes servicios como PagerDuty o Slack.

Además, puede consultar la sección del monitor de consultas, donde puede encontrar el las consultas principales, las consultas en ejecución, los valores atípicos de las consultas y las estadísticas de las consultas.

Con estas características, puede ver cómo va su base de datos PostgreSQL.

Para la administración de copias de seguridad, ClusterControl lo centraliza para proteger, proteger y recuperar sus datos, y con la función de copia de seguridad de verificación, puede confirmar si la copia de seguridad está lista para funcionar.

Este trabajo de copia de seguridad de verificación restaurará la copia de seguridad en un host independiente separado, por lo que puede asegurarse de que la copia de seguridad esté funcionando.

Supervisión con la línea de comandos de ClusterControl

Para secuencias de comandos y tareas de automatización, o incluso si prefiere la línea de comandos, ClusterControl tiene la herramienta s9s. Es una herramienta de línea de comandos para administrar su clúster de base de datos.

Lista de grupos

Lista de nodos

Puede realizar todas las tareas (e incluso más) desde la interfaz de usuario de ClusterControl , y puedes integrar esta característica con algunas herramientas externas como Slack, para administrarla desde allí.

Conclusión

En este blog, mencionamos algunas métricas importantes para monitorear en su entorno PostgreSQL y algunas herramientas para facilitarle la vida al tener sus sistemas bajo control. También puede ver cómo usar ClusterControl para esta tarea.

Como puede ver, el monitoreo es absolutamente necesario, y la mejor manera de hacerlo depende de la infraestructura y el sistema en sí. Debe alcanzar un equilibrio entre lo que necesita monitorear y cómo afecta el rendimiento de su base de datos.