Monitorización de bases de datos con Prometheus + Grafana
MonitorizaciónNivel: IntermedioDuración: 60–120 minInstala un servidor de monitorización central (Prometheus, Alertmanager, Grafana) y añade a los servidores monitorizados node_exporter y los exporters de base de datos que elija: PostgreSQL, MySQL, Oracle, SQL Server, MongoDB, Redis, Elasticsearch. Incluye usuarios de monitorización con privilegios mínimos, servicios systemd, reglas de alerta básicas, notificación por correo/webhook, provisioning de datasources y dashboards listos. Es la continuación del paso 'Conectar la monitorización' del final de las guías de instalación de bases de datos; el resultado es un sistema de monitorización que muestra las métricas de todos los servidores en una sola pantalla y envía una notificación cuando hay un problema.
Topología: 1 servidor de monitorización + servidores monitorizados
Antes de empezar
- El servidor de monitorización y los servidores Linux monitorizados usan un sistema operativo soportado; los relojes están sincronizados (chrony). La diferencia horaria provoca en Prometheus errores "out of bounds" y alertas falsas.
- El servidor de monitorización tiene disco suficiente para /var/lib/prometheus: al menos unos GB para … servidores × … días; se recomienda un disco/LV aparte. Se necesitan al menos 2 CPU y 4 GB de RAM.
- Los puertos de los exporters están abiertos desde el servidor de monitorización (…) a cada servidor: 9100 (node)…, 9187 (PostgreSQL)……, 9104 (MySQL)……, 9161 (Oracle)……, 9216 (MongoDB)……, 9121 (Redis)……, 9114 (Elasticsearch)……; … a los servidores SQL Server…. … (Grafana) desde los usuarios al servidor de monitorización.
- Los servidores llegan por HTTPS a github.com (binarios de exporters y Prometheus) y el servidor de monitorización además a …rpm.grafana.com…apt.grafana.com…; si no es posible, descargue los archivos en otra máquina y cópielos.
- En los servidores PostgreSQL, pg_hba.conf contiene host all all 127.0.0.1/32 scram-sha-256 (o una regla más estricta): el exporter se conecta en local por TCP con contraseña.
- Dispone en cada base de datos de una cuenta de administración que puede crear el usuario de monitorización (PostgreSQL: postgres, MySQL: root, Oracle: SYSDBA, SQL Server: sysadmin, MongoDB: userAdmin, Redis: un usuario con privilegios ACL, Elasticsearch: elastic).
- Cree entradas en la caja fuerte de contraseñas para las contraseñas de los usuarios de monitorización. Las contraseñas se piden de forma interactiva en los pasos y solo se escriben en archivos (0600) que puede leer el usuario del exporter correspondiente.
Fases de la guía
- Preparación — Instalar las herramientas básicas y sincronizar la hora · Firewall: abrir los puertos de los exporters al servidor de monitorización · Firewall: abrir el puerto de Grafana
- node_exporter (métricas del sistema operativo) — Descargar e instalar node_exporter · Definir el servicio node_exporter · Iniciar node_exporter
- PostgreSQL: postgres_exporter — Crear el rol de monitorización (pg_monitor) · Establecer la contraseña del rol de monitorización · Descargar e instalar postgres_exporter · Escribir los ajustes de conexión y el archivo de contraseña · Definir el servicio postgres_exporter · Iniciar postgres_exporter
- MySQL: mysqld_exporter — Crear el usuario de monitorización y el archivo de credenciales del exporter · Descargar e instalar mysqld_exporter · Definir el servicio mysqld_exporter · Iniciar mysqld_exporter
- Oracle: oracledb_exporter — Crear el usuario de monitorización · Descargar e instalar oracledb_exporter · Escribir la configuración del exporter · Definir el servicio oracledb_exporter · Iniciar oracledb_exporter
- SQL Server: sql_exporter — Crear el login de monitorización (en el SQL Server …) · Descargar e instalar sql_exporter · Escribir la configuración del target (…) · Definir la plantilla de servicio de sql_exporter · Iniciar sql_exporter (…)
- MongoDB: mongodb_exporter — Crear el usuario de monitorización (mongosh) · Descargar e instalar mongodb_exporter · Escribir el archivo de credenciales · Definir el servicio mongodb_exporter · Iniciar mongodb_exporter
- Redis: redis_exporter — Crear el usuario de monitorización (ACL) · Descargar e instalar redis_exporter · Escribir el archivo de credenciales · Definir el servicio redis_exporter · Iniciar redis_exporter
- Elasticsearch: elasticsearch_exporter — Crear el rol y el usuario de monitorización · Descargar e instalar elasticsearch_exporter · Escribir el certificado CA y el archivo de credenciales · Definir el servicio elasticsearch_exporter · Iniciar elasticsearch_exporter
- Prometheus — Descargar e instalar Prometheus · Definir los targets de scrape (prometheus.yml) · Escribir las reglas de alerta · Validar la configuración · Definir el servicio Prometheus · Iniciar Prometheus
- Alertmanager — Descargar e instalar Alertmanager · Escribir la configuración de notificaciones · Validar la configuración · Definir el servicio Alertmanager · Iniciar Alertmanager
- Grafana — Definir el repositorio de Grafana · Definir el repositorio de Grafana · Instalar Grafana · Aplicar los ajustes de seguridad · Definir el datasource de Prometheus (provisioning) · Definir el provisioning de dashboards …
- Verificación — Comprobar que todos los targets están UP · Comprobar que las reglas están cargadas · Enviar una alerta de prueba · Comprobar los dashboards de Grafana
- Después de la instalación — Hacer copia de seguridad del sistema de monitorización · Aplicar la lista de comprobación de seguridad