Construye un sistema de monitorización con Grafana y Prometheus en Debian 12
Grafana es una plataforma de visualización de datos de código abierto y multiplataforma desarrollada por Grafana Labs. Grafana proporciona una aplicación web interactiva de visualización de datos que incluye tablas, gráficos y alertas. Con Grafana, puedes consultar, visualizar, configurar alertas y explorar métricas, registros y trazas de TSDB. Es una potente herramienta que convierte los datos de la base de datos de series temporales (TSDB) en un gráfico y una visualización perspicaces.
En Grafana, puedes añadir los datos de tu base de datos de series temporales a través de la «Fuente de datos». Grafana admite múltiples fuentes de datos, como Prometheus, InfluxDB, PostgreSQL, Loki, Jaeger, Graphite, Google Cloud Monitoring, AWS CloudWatch, Azure Monitor y muchas más.
En esta guía, instalarás Grafana en el servidor Debian 12 con Nginx como proxy inverso, luego añadirás Prometheus como fuente de datos y configurarás el Panel de Grafana para la monitorización del sistema.
Requisitos previos
Antes de continuar, asegúrate de que tienes lo siguiente
- Un servidor Debian 12 para la instalación de Grafana.
- Un servidor Debian 12 con Prometheus y Node Exporter instalados – Cómo instalar Prometheus y Node Exporter en Debian 12.
- Un usuario no root con privilegios de administrador sudo.
Añadir el repositorio de Grafana
En esta guía, instalarás Grafana a través del repositorio oficial de Grafana. Para ello, debes añadir el repositorio de Grafana a tu servidor Debian.
Para empezar, ejecuta el siguiente comando para instalar las dependencias básicas en tu máquina Debian.
sudo apt install gnupg2 apt-transport-https software-properties-common wget
Ahora añade la clave GPG y el repositorio de Grafana ejecutando el siguiente comando.
curl -fsSL https://packages.grafana.com/gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/grafana.gpg echo 'deb [signed-by=/etc/apt/trusted.gpg.d/grafana.gpg] https://packages.grafana.com/oss/deb stable main' | sudo tee /etc/apt/sources.list.d/grafana.list
Por último, actualiza y refresca tu índice de paquetes Debian para aplicar los cambios.
sudo apt update
Instalar Grafana
Ahora que has añadido el repositorio de Grafana, instalarás Grafana mediante APT. A continuación, configurarás el usuario y la contraseña de administrador para tu instalación de Grafana.
Instala Grafana en tu sistema Debian utilizando el siguiente comando. Introduce y para proceder a la instalación.
sudo apt install grafana
Una vez finalizada la instalación, recarga el gestor systemd ejecutando el siguiente comando.
sudo systemctl daemon-reload
A continuación, inicia y habilita el servicio grafana-server utilizando el siguiente comando.
sudo systemctl start grafana-server sudo systemctl enable grafana-server
Una vez que el grafana-server se esté ejecutando, verifícalo utilizando el comando siguiente. Si todo va bien, deberías ver que el grafana-server está habilitado y en ejecución.
sudo systemctl status grafana-server
Por último, inicia tu navegador web y visita la dirección IP de tu servidor con el puerto predeterminado 3000 de Grafana, como http://192.168.5.20:3000/.
Introduce el usuario por defecto admin y la contraseña admin, y haz clic en Iniciar sesión.
Ahora cambia la contraseña admin por defecto por una nueva contraseña. A continuación, haz clic en Enviar para confirmar.
Cuando el proceso haya terminado, deberías ver el panel de control de Grafana como el siguiente:
Configurar Grafana
Con Grafana instalado, el siguiente paso es configurar Grafana modificando la configuración por defecto /etc/grafana/grafana.ini y establecer el http_addr a localhost, http_port a 3000, y el dominio con un nombre de dominio local grafana.hwdomain.io.
Abre la configuración por defecto de Grafana /etc/grafana/grafana.ini utilizando el siguiente comando del editor nano.
sudo nano /etc/grafana/grafana.ini
Cambia la configuración por defecto con las siguientes líneas. En este ejemplo, ejecutarás Grafana en localhost y con el nombre de dominio local grafana.hwdomain.io.
[server] # The IP address to bind to, empty will bind to all interfaces http_addr = localhost # The http port to use http_port = 3000
# The public facing domain name used to access grafana from a browser
domain = grafana.hwdomain.io
Cuando hayas terminado, guarda y sal del archivo.
Ahora ejecuta el siguiente comando systemctl para reiniciar el servidor grafana y aplicar los cambios. Con esto, tu instalación de Grafana se ejecutará sólo en localhost.
sudo systemctl restart grafana-server
Instalación de Nginx como Proxy Inverso
En esta guía, ejecutarás Grafana con Nginx como proxy inverso. Ahora, completa las siguientes tareas para instalar y configurar Nginx como proxy inverso para tu instalación de Grafana.
Ejecuta el siguiente comando para instalar el servidor web Nginx en tu máquina Debian. Introduce y para continuar con la instalación.
sudo apt install nginx
Una vez instalado Nginx, ejecuta el siguiente comando del editor nano para crear un nuevo archivo de bloque de servidor /etc/nginx/sites-available/grafana.conf.
sudo nano /etc/nginx/sites-available/grafana.conf
Introduce la siguiente configuración y asegúrate de cambiar el nombre de dominio dentro del parámetro server_name.
# This is required to proxy Grafana Live WebSocket connections. map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; server_name grafana.hwdomain.io; root /usr/share/nginx/html; index index.html index.htm; access_log /var/log/nginx/grafana-access.log; error_log /var/log/nginx/grafana-error.log; location / { proxy_set_header Host $http_host; proxy_pass http://localhost:3000/; } # Proxy Grafana Live WebSocket connections. location /api/live { rewrite ^/(.*) /$1 break; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $http_host; proxy_pass http://localhost:3000/; } }
Guarda y cierra el archivo cuando hayas terminado.
A continuación, ejecuta el siguiente comando para activar el archivo de bloqueo del servidor /etc/nginx/sites-available/grafana.conf. A continuación, verifica la sintaxis de Nginx para asegurarte de que tienes la sintaxis correcta.
sudo ln -s /etc/nginx/sites-available/grafana.conf /etc/nginx/sites-enabled/ sudo nginx -t
Si tienes la sintaxis correcta de Nginx, deberías obtener la salida‘test is successful – syntax is ok‘.
Lasy, ejecuta el siguiente comando systemctl para reiniciar el servicio Nginx y aplicar los cambios. A continuación, verifica Nginx para asegurarte de que el servicio se está ejecutando.
sudo systemctl restart nginx sudo systemctl status nginx
En la siguiente salida, deberías ver que el servicio Nginx se está ejecutando.
Para acceder a tu servidor Grafana, puedes modificar el archivo /etc/hosts en tu máquina local si eres usuario de Linux o MacOS. Para usuarios de Windows, edita el archivo C:\Windows\System32\drivers\etc\hosts como administración.
Introduce la siguiente configuración en el archivo.
192.168.5.15 grafana.hwdomain.io
Guarda y cierra el archivo cuando hayas terminado.
Ahora vuelve al navegador web y visita tu nombre de dominio local para el servidor de Grafana, como http://grafana.hwdomain.io/. Si la configuración se realiza correctamente, serás redirigido a la página de inicio de sesión de Grafana.
Inicia sesión con tu usuario y contraseña de administrador y, a continuación, haz clic en Iniciar sesión para confirmar.
Ahora deberías obtener el panel de administración de Grafana.
Añadir autenticación al servidor Prometheus
Antes de añadir Prometheus a Grafana, configurarás la autenticación básica para Prometheus. Generarás la contraseña de autenticación básica con apache2-utils y, a continuación, habilitarás basic_auth para el servidor Prometheus.
En este ejemplo, Prometheus y Node Exporter están instalados en servidores distintos con la dirección IP 192.168.5.15 y el nombre de host prometheus.
Accede al servidor Prometheus e instala el paquete apache2-utils mediante el comando apt que se indica a continuación.
sudo apt install apache2-utils -y
Después, genera la nueva contraseña para la autenticación básica de Prometheus. Introduce tu contraseña y copia la contraseña generada en tu nota.
htpasswd -nB promadmin
Ahora, crea una nueva configuración de Prometheus /etc/prometheus/web.yml utilizando el siguiente comando del editor nano.
sudo nano /etc/prometheus/web.yml
Añade la siguiente configuración para asegurar el panel de administración de Prometheus con el módulo basic_auth.
# basic_auth basic_auth_users: promadmin: $2y$05$UlvHd4An.oQRt2UdUXzr9eZ6ShRLe3xYbMhw8ePfvGeLuu0khO4Bu
Guarda y cierra el archivo cuando hayas terminado.
A continuación, abre la configuración por defecto de Prometheus /etc/prometheus/prometheus.y ml utilizando el siguiente comando del editor nano.
sudo nano /etc/prometheus/prometheus.yml
Añade la configuración basic_auth que aparece a continuación dentro del trabajo de Prometheus. Asegúrate de cambiar los detalles de usuario y contraseña con tus datos.
scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "prometheus"
# metrics_path defaults to ‘/metrics’
# scheme defaults to ‘http’.
# Add settings for certificate and authentication
scheme: http
basic_auth:
username: ‘promadmin’
password: ‘password’
Guarda y cierra el archivo cuando hayas terminado.
A continuación, ejecuta el siguiente comando para editar el archivo de servicio prometheus.
sudo systemctl edit --full prometheus
Cambia la opción por defecto ExecStart por la siguiente.
ExecStart=/usr/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --web.config.file=/etc/prometheus/web.yml
Guarda y cierra el archivo cuando hayas terminado.
Ahora, ejecuta el siguiente comando systemctl para recargar el gestor systemd y aplicar los cambios. A continuación, reinicia el servicio prometheus.
sudo systemctl daemon-reload sudo systemctl restart prometheus
Verifica el servicio prometheus utilizando el siguiente comando.
sudo systemctl status prometheus
Dentro de la sección ExecStart, el comando ha cambiado como se indica a continuación.
Por último, abre tu navegador web y visita la dirección IP de Prometheus con el puerto 9090 (es decir: http://192.168.10.15:9090/). Se te pedirá el Prometheus basic_auth, introduce tu usuario y contraseña de administrador, y haz clic en Iniciar sesión.
Si la configuración es correcta, deberías ver el panel de Prometheus como el siguiente.
Integración de Prometheus con el panel de control de Grafana
Después de configurar la autenticación básica en Prometheus, puedes añadir Prometheus como fuente de datos al panel de Grafana. Hay dos pasos que debes completar: añadir Prometheus como fuente de datos y, a continuación, importar o crear un panel de Grafana para la monitorización de tu sistema.
Añadir fuente de datos Prometheus
Vuelve al panel de control de Grafana, haz clic en el menú Conexiones y selecciona Fuente de datos.
Haz clic en Añadir fuente de datos para continuar.
Selecciona la base de datos de series temporales Prometheus.
Introduce el nombre de la nueva fuente de datos y el host de Prometheus en http://192.168.5.15:9090/. En la sección Autenticación, selecciona Autenticación básica e introduce el nombre de usuario y la contraseña de Prometheus.
Desplázate hacia abajo y haz clic en Guardar y probar para confirmar. El resultado«Se ha consultado correctamente la API de Prometheus» confirma que Prometheus se ha añadido a Grafana.
Importar la monitorización del panel de control
Haz clic en el menú + de la parte superior derecha y selecciona Importar Cuadro de Mando.
Busca el Dashboard que desees en https://grafana.com/grafana/dashboards/. A continuación, copia y pega el ID del panel de control y haz clic en Cargar para confirmar. En este caso, utilizaremos el ID de panel 15172.
Introduce el nombre del panel y selecciona la fuente de datos Prometheus. A continuación, haz clic en Importar para confirmar.
A continuación se muestra un ejemplo del Cuadro de Mando de Grafana mejorado con Prometheus para supervisar el sistema.
Ya has instalado correctamente Grafana en un servidor Debian 12 con Nginx como proxy inverso, has añadido Prometheus como fuente de datos a Grafana y has importado el panel de Grafana para la supervisión del sistema.