Tutorial: Implementación de un Sistema de Monitoreo con Prometheus y Grafana en Ubuntu Server 24.04
Este tutorial te guiará a través de la instalación y configuración de Prometheus y Grafana para monitorear tu Ubuntu Server 24.04. Prometheus se encargará de la recolección de métricas, y Grafana las visualizará de forma atractiva.
1. Instalación de Prometheus
Prometheus es un sistema de monitoreo y alerta de código abierto. Necesitaremos instalar el servidor de Prometheus y un exportador de nodos (Node Exporter) para recolectar métricas del sistema operativo.
1.1 Crear usuarios y directorios para Prometheus
sudo useradd --no-create-home --shell /bin/false prometheus
sudo useradd --no-create-home --shell /bin/false node_exporter
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
1.2 Descargar e instalar Prometheus
Visita la página de descargas de Prometheus para obtener la última versión estable. Reemplaza [VERSION] con la versión actual.
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v[VERSION]/prometheus-[VERSION].linux-amd64.tar.gz
tar xvf prometheus-[VERSION].linux-amd64.tar.gz
sudo cp prometheus-[VERSION].linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-[VERSION].linux-amd64/promtool /usr/local/bin/
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
sudo cp -r prometheus-[VERSION].linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-[VERSION].linux-amd64/console_libraries /etc/prometheus
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
1.3 Configurar Prometheus
Crea el archivo de configuración de Prometheus en /etc/prometheus/prometheus.yml:
sudo nano /etc/prometheus/prometheus.yml
Añade el siguiente contenido:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
Establece los permisos correctos:
sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
1.4 Crear un servicio Systemd para Prometheus
Crea el archivo de servicio en /etc/systemd/system/prometheus.service:
sudo nano /etc/systemd/system/prometheus.service
Añade el siguiente contenido:
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus
--config.file /etc/prometheus/prometheus.yml
--storage.tsdb.path /var/lib/prometheus
--web.console.templates=/etc/prometheus/consoles
--web.console.libraries=/etc/prometheus/console_libraries
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
Recarga systemd y habilita/inicia el servicio:
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus
Prometheus debería estar accesible en http://localhost:9090 (si tienes un navegador en el servidor o a través de un túnel SSH).
2. Instalación de Node Exporter
Node Exporter recolecta métricas del sistema operativo.
2.1 Descargar e instalar Node Exporter
Visita la página de descargas de Node Exporter para obtener la última versión estable. Reemplaza [VERSION] con la versión actual.
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v[VERSION]/node_exporter-[VERSION].linux-amd64.tar.gz
tar xvf node_exporter-[VERSION].linux-amd64.tar.gz
sudo cp node_exporter-[VERSION].linux-amd64/node_exporter /usr/local/bin
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
2.2 Crear un servicio Systemd para Node Exporter
Crea el archivo de servicio en /etc/systemd/system/node_exporter.service:
sudo nano /etc/systemd/system/node_exporter.service
Añade el siguiente contenido:
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
Recarga systemd y habilita/inicia el servicio:
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
sudo systemctl status node_exporter
Node Exporter debería estar accesible en http://localhost:9100.
3. Instalación de Grafana
Grafana es una plataforma de código abierto para la visualización y análisis de métricas.
3.1 Añadir el repositorio de Grafana
sudo apt update
sudo apt install -y apt-transport-https software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
3.2 Instalar Grafana
sudo apt update
sudo apt install grafana
3.3 Iniciar y habilitar Grafana
sudo systemctl daemon-reload
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
sudo systemctl status grafana-server
Grafana debería estar accesible en http://localhost:3000 (usuario/contraseña por defecto: admin/admin). Se te pedirá que cambies la contraseña en el primer inicio de sesión.
4. Configurar Grafana con Prometheus como fuente de datos
- Abre tu navegador y navega a
http://localhost:3000. - Inicia sesión con
admin/adminy cambia la contraseña. - En el menú lateral izquierdo, haz clic en el icono de engranaje (Configuración) y luego en «Data Sources».
- Haz clic en «Add data source».
- Selecciona «Prometheus».
- En el campo «URL», introduce
http://localhost:9090. - Haz clic en «Save & Test». Deberías ver un mensaje de «Data source is working».
5. Importar un Dashboard de Node Exporter en Grafana
- En el menú lateral izquierdo, haz clic en el icono de «+» (Crear) y luego en «Import».
- En el campo «Import via grafana.com», introduce el ID de un dashboard de Node Exporter (por ejemplo,
1860para «Node Exporter Full»). - Haz clic en «Load».
- En la siguiente pantalla, selecciona «Prometheus» como fuente de datos y haz clic en «Import».
Ahora deberías tener un dashboard de monitoreo completo para tu servidor.
6. Hardening y Seguridad
- Cambia las contraseñas por defecto: Asegúrate de cambiar la contraseña de
adminde Grafana. - Configura un firewall: Asegúrate de que tu firewall (nftables) solo permita el acceso a los puertos de Prometheus (9090), Node Exporter (9100) y Grafana (3000) desde IPs de confianza o a través de un proxy inverso con SSL/TLS.
- Usa SSL/TLS para Grafana: Configura un proxy inverso (Nginx o Apache) con SSL/TLS para acceder a Grafana de forma segura.
- Autenticación de Grafana: Considera integrar Grafana con un sistema de autenticación centralizado (LDAP, OAuth, etc.) para entornos de producción.
Este tutorial te proporciona una base sólida para el monitoreo de tu servidor con Prometheus y Grafana, siguiendo las mejores prácticas de seguridad.
Configuración adicional del Firewall nftables
Para asegurar tu instalación de monitoreo, configura las siguientes reglas de firewall:
# Permitir acceso a Prometheus solo desde localhost
sudo nft add rule inet filter input tcp dport 9090 ip saddr 127.0.0.1 accept
# Permitir acceso a Node Exporter solo desde localhost
sudo nft add rule inet filter input tcp dport 9100 ip saddr 127.0.0.1 accept
# Permitir acceso a Grafana desde redes de confianza
sudo nft add rule inet filter input tcp dport 3000 ip saddr 192.168.1.0/24 accept
Ajusta las direcciones IP según tu configuración de red específica.
