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

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

instalar deps básicos

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

configurar repositorio

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

instalar 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

empezar a activar grafana

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

verificar grafana

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.

login graphana

Ahora cambia la contraseña admin por defecto por una nueva contraseña. A continuación, haz clic en Enviar para confirmar.

cambiar contraseña admin

Cuando el proceso haya terminado, deberías ver el panel de control de Grafana como el siguiente:

panel de control grafana

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

instalar 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‘.

configurar proxy inverso nginx

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.

comprobar nginx

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.

inicio de sesión en grafana

Ahora deberías obtener el panel de administración de Grafana.

panel de administración

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

instala apache2-utils

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

generar contraseña

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ñadir basic_auth

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.

modificar ExecStart

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.

comprobar prometheus

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.

inicio de sesión prometheus

Si la configuración es correcta, deberías ver el panel de Prometheus como el siguiente.

tablero prometheus

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.

fuente de datos de conexión

Haz clic en Añadir fuente de datos para continuar.

añadir fuente de datos

Selecciona la base de datos de series temporales Prometheus.

añadir fuente de datos 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.

configurar fuente de datos 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.

añadir prometheus

Importar la monitorización del panel de control

Haz clic en el menú + de la parte superior derecha y selecciona Importar Cuadro de Mando.

importar base de datos

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.

cargar panel

Introduce el nombre del panel y selecciona la fuente de datos Prometheus. A continuación, haz clic en Importar para confirmar.

salpicadero de importación

A continuación se muestra un ejemplo del Cuadro de Mando de Grafana mejorado con Prometheus para supervisar el sistema.

salpicadero importado

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.

Scroll al inicio