Exportador de métricas para PostgreSQL
El Exportador de PostgreSQL es una herramienta diseñada para integrarse con el sistema de monitoreo Prometheus. Su función es recopilar datos operativos de los servidores de bases de datos PostgreSQL y transformarlos en el formato que Prometheus puede interpretar y almacenar. Soporta múltiples versiones de PostgreSQL, facilitando a los administradores la supervisión del rendimiento de la base de datos a través de paneles y consultas en Prometheus.
Requisitos previos
Antes de iniciar, confirme que su entorno cuenta con los siguientes componentes:
- Servidor de base de datos PostgreSQL en funcionamiento.
- Instancia de Prometheus configurada y operativa.
- Docker (opcional, para un despliegue simplificado).
Implementación rápida usando Docker
Para realizar una prueba funcional, puede levantar un contenedor de PostgreSQL y luego ejecutar el exportador.
1. Iniciar un contenedor de PostgreSQL
docker run -d --name pg-test -e POSTGRES_PASSWORD=miClaveSegura -p 5432:5432 postgres:14
2. Configurar y ejecutar el Exportador de PostgreSQL
docker run -d --name pg-exporter \
--link pg-test:postgres-host \
-e DATA_SOURCE_URI="postgres-host:5432/postgres?sslmode=disable" \
-e DATA_SOURCE_USER="postgres" \
-e DATA_SOURCE_PASS="miClaveSegura" \
-p 9187:9187 \
quay.io/prometheuscommunity/postgres-exporter
El exportador comenzará a exponer métricas en el puerto 9187 del host.
Configuración manual sin Docker
Para enstalar directamente en el servidor, descargue el binario y configure un archivo de servicio o script de inicio. La conexión se puede definir mediante variables de entorno.
# Ejemplo de variables para el servicio
export PG_EXPORTER_DATA_SOURCE_NAME="host=localhost port=5432 dbname=app_db user=monitor_user password=contraseña_segura"
export PG_EXPORTER_WEB_LISTEN_ADDRESS=":9187"
./postgres_exporter
Configuración para el monitoreo
Una vez el exportador está en ejecución, añada un nuevo objetivo (target) en la configuración de Prometheus (prometheus.yml):
scrape_configs:
- job_name: 'postgresql'
static_configs:
- targets: ['direccion-del-exportador:9187']
Estrategias de uso y recolección múltiple
El exportador puede configurarse para recolectar métricas de varias bases de datos PostgreSQL de forma simultánea. Esto se logra utilizando una cadena de conexión compuesta que liste los orígenes de datos separados por el carácter dos puntos (:).
export PG_EXPORTER_DATA_SOURCE_NAME="host=server1 dbname=db1 user=u1 password=p1 : host=server2 dbname=db2 user=u2 password=p2"
./postgres_exporter
Las métricas recopiladas, como las consultas activas, estadísticas de tablas, uso de disco y actividad de bloqueos, se pueden visualizar en Grafana creando paneles conectados a Prometheus. Además, se pueden definir alertas en Alertmanager para notificar sobre condiciones aómalas, como un alto número de bloqueos o una caída en la tasa de transacciones.