Monitoreo de PostgreSQL usando Zabbix

Monitoreo de PostgreSQL usando Zabbix
Informe de Daria Vilkova para Zabbix Meetup Online

Quiero presentarles la herramienta de monitoreo del sistema operativo y PostgreSQL, que está siendo desarrollada por nuestra empresa usando Zabbix.

Elegimos Zabbix como nuestra herramienta de monitoreo durante mucho tiempo porque es una plataforma de código abierto respaldada por una comunidad activa que es muy popular en Rusia.

Creamos un agente activo: Mamonsu, que proporcionaba una supervisión más flexible de lo que permitían las herramientas estándar en ese momento, y garantizaba la recopilación de métricas y su envío al servidor Zabbix. En nuestra empresa, Mamonsu se utiliza en la auditoría.

mamonsu

Mamonsu es un agente activo (Zabbix Trapper) para monitorear PostgreSQL y el sistema operativo. Mamonsu (escrito en Python) le permite configurar PostgreSQL y la configuración de monitoreo del sistema operativo en cinco minutos.

Mamonsu tiene herramientas adicionales:

  • mamonsu tune es un comando que edita la configuración en el archivo de configuración de PostgreSQL para la máquina en la que está instalado el agente Mamonsu.
  • mamonsu report es un comando que genera respuestas sobre el sistema operativo y PostgreSQL.

Mamonsu está instalado en el servidor DBMS, recopila información, la compone en JSON, que la envía al servidor Zabbix para su visualización, donde debe haber una plantilla para sus métricas.

Monitoreo de PostgreSQL usando Zabbix

esquema de trabajo mamonsu

Características Mamonsu

  • Trabajo eficiente con PostgreSQL. Una conexión persistente a PostgreSQL es la principal ventaja de Mamonsu. En este caso, el número máximo de conexiones es igual al número máximo de bases de datos a las que se conecta.
  • Extensibilidad. Mamonsu es un agente completamente de "complemento", y debido a la estructura fija de cada complemento y la relativa simplicidad de Python, uno puede aprender fácilmente cómo escribir nuevos o editar complementos estándar, es decir, parámetros de recopilación de métricas.
  • Amplia cobertura de métricas de seguimiento para PotgreSQL, incluidas las métricas específicas de la extensión.
  • comida rápida, disponibilidad lista para usar.
  • Carga de plantillas y archivos de configuración, así como la carga en el servidor Zabbix.
  • Multiplataforma, lo cual es importante para nuestros clientes que usan varias distribuciones de Linux, incluidas las domésticas.
  • Licencia con cláusula BSD.

Por el momento ofrecemos muchos complementos y en cada próxima versión tratamos de agregar algo nuevo.

  • 14 complementos para PostgreSQL,
  • 8 complementos para OS Linux,
  • 4 complementos para el sistema operativo Windows.

Mamonsu recopila más de 110 métricas de PostgreSQL y del sistema operativo:

  • 70 métricas de PostgreSQL,
  • 40 métricas del sistema operativo Linux,
  • 8 métricas del sistema operativo Windows.

Las métricas clave incluyen la disponibilidad de DBMS, la cantidad de conexiones, el tamaño de la base de datos, los puntos de control, la velocidad de lectura/escritura, los bloqueos, la cantidad de procesos de vacío automático y la velocidad de generación de WAL. Una lista completa de métricas disponibles, así como una descripción detallada de todas las herramientas, está disponible en repositorios en el sitio de GitHub.

Monitoreo de PostgreSQL usando Zabbix

Lista de métricas disponibles en GitHub

Corre Mamonsu en 5 minutos

Para configurar el monitoreo de PostgreSQL y el sistema operativo usando Mamonsu, puede hacerlo en 5 minutos siguiendo 5 simples pasos.

  1. Instalando Mamonsu. Mamonsu se puede compilar desde el código fuente o utilizar los paquetes disponibles.

$ git clone ... && cd mamonsu && python setup.py

build && python setup.py install

  1. Configuración de la conexión. Es necesario establecer los parámetros de conexión para PostgreSQL y Zabbix Server en el archivo agent.conf.

/etc/mamonsu/agent.conf

  1. Exportar plantilla al servidor Zabbix.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Agregar un host al servidor Zabbix. La plantilla exportada se conectará automáticamente al nuevo host en el servidor Zabbix.

$ mamonsu zabbix host create mamonsu-demo

  1. Lanzar.

$ service mamonsu start

Direcciones de desarrollo de Mamonsu

Como parte del desarrollo de Mamonsu, planeamos refinar las métricas y crear nuevos complementos, como un complemento para monitorear el tamaño de las tablas individuales. También planeamos mejorar y crear herramientas adicionales, así como expandir las capacidades de ajuste automático a través del comando melodía mamonsu.

Módulo de monitoreo de PostgreSQL como parte de Zabbix Agent 2

Se utiliza un controlador rápido y popular para conectarse a PostgreSQL pgx (controlador PG y juego de herramientas para Go).

Hasta ahora, estamos usando dos interfaces: Exporter, que llama al controlador por clave, y Configurator Zabbix Agent 2, que lee y verifica los parámetros de conexión con el servidor especificado en el archivo de configuración.

Intentamos optimizar el trabajo del DBMS agrupando métricas y usando un controlador (handler) para métricas y grupos de métricas, además de usar grupos de métricas en JSON como variables dependientes (elementos de dependencia) y descubrimiento de bajo nivel (reglas de descubrimiento). ).

Características principales

  • mantener una conexión persistente a PostgreSQL entre comprobaciones;
  • soporte para intervalos de sondeo flexibles;
  • compatibilidad con las versiones de PostgreSQL a partir de la 10 y Zabbix Server a partir de la versión 4.4;
  • la capacidad de conectar y monitorear múltiples instancias de PostgreSQL al mismo tiempo debido al hecho de que Zabbix Agent 2 le permite crear múltiples sesiones.

Niveles de parámetros de conexión de PostgreSQL

En total, hay tres niveles de parámetros de conexión de PostgreSQL, es decir, tareas y configuraciones:

  • General,
  • Sesiones,
  • Macros.

  1. Los parámetros globales se establecen a nivel de agente, los parámetros de sesión y macros definen los parámetros de conexión de la base de datos.

  2. Parámetros de conexión a PostgreSQL: las sesiones se establecen en el archivo zabbix_agent2.conf.

Monitoreo de PostgreSQL usando Zabbix

Opciones de conexión de PostgreSQL - Sesiones

  • Después de la palabra clave Talleres se especifica un nombre de sesión único, que debe especificarse en la clave (plantilla).
  • Parámetros URI и Nombre de usuario necesario para cada sesión.
  • Si no se especifica el nombre base, se usa el nombre base común predeterminado para todas las sesiones de PostgreSQL, que también se establece en el archivo de configuración.

  1. Los parámetros de conexión a PostgreSQL: las macros se establecen en la clave métrica en la plantilla (similar al método utilizado en Zabbix Agent 1), es decir, se crean en la plantilla y luego se especifican como parámetros en la clave. En este caso, la secuencia de macros es fija, es decir, por ejemplo, URI siempre aparece en primer lugar.

Monitoreo de PostgreSQL usando Zabbix

Parámetros de conexión de PostgreSQL - Macros

El módulo de monitoreo de PostgreSQL ya incluye más de 95 métricas que le permiten cubrir una gama bastante amplia de parámetros de PostgreSQL, que incluyen:

  • número de conexiones
  • tamaño de la base de datos,
  • archivar archivos wal,
  • puntos de control,
  • el número de mesas "infladas",
  • estado de replicación,
  • retraso de la réplica.

Las métricas de PostgreSQL no son informativas sin los parámetros del sistema operativo. Pero Zabbix Agent 2 ya sabe cómo recopilar los parámetros del sistema operativo, por lo que para obtener una imagen completa, simplemente conectamos las plantillas necesarias al host.

Manipulador

El handler es la unidad principal del módulo en el que se ejecuta la propia petición y que te permite recibir métricas.

Para obtener una métrica simple:

  1. Cree un archivo para obtener una nueva métrica:

zabbix/src/go/plugins/postgres/handler_uptime.go

  1. Conectamos el paquete y especificamos la clave única (claves) de las métricas:

Monitoreo de PostgreSQL usando Zabbix

  1. Creamos un handler (handler) con una petición, es decir, iniciamos una variable que contendrá el resultado:

Monitoreo de PostgreSQL usando Zabbix

  1. Ejecutamos la petición:

Monitoreo de PostgreSQL usando Zabbix

Es necesario verificar la solicitud de errores, después de lo cual el proceso Zabbix Agent 2 recogerá el resultado.

  1. Registre la nueva clave métrica:

Monitoreo de PostgreSQL usando Zabbix

Después de registrar la métrica, puede reconstruir el agente con la nueva métrica.

El módulo está disponible a partir de Zabbix 5.0 en el sitio https://www.zabbix.com/download. En esta versión de Zabbix, los parámetros se configuran por separado a través del host y el puerto. En Zabbix 5.0.2, que se lanzará pronto, los parámetros de conexión se empaquetarán en un único URI.

Gracias por su atención!

Enlaces de interés

GitHub Mamonsu

Documentación Mamonsu

Zabbix Git

Fuente: habr.com

Añadir un comentario