Cómo instalar Grafana y Prometheus en Ubuntu 24.04
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 este tutorial, aprenderás a instalar Grafana, Prometheus y node_exporter en servidores Ubuntu 24.04. También instalarás Nginx como proxy inverso para Grafana, integrarás node_exporter y Prometheus, y luego añadirás Prometheus como fuente de datos al panel de Grafana.
Requisitos previos
Antes de empezar, asegúrate de que tienes
- Dos o tres servidores Ubuntu 24.04.
- Un usuario no root con privilegios de administrador.
Instalación de Grafana en Ubuntu
Grafana es una aplicación web para la visualización de datos. Para instalar Grafana, necesitas añadir el repositorio de Grafana. En este ejemplo, también instalarás Nginx como proxy inverso para Grafana.
Instalar dependencias y añadir un repositorio
En esta sección, instalarás las dependencias, incluido Nginx, y luego añadirás el repositorio de Grafana.
En primer lugar, ejecuta el siguiente comando para instalar las dependencias para Grafana. Escribe Y
para confirmar la instalación.
sudo apt install gnupg2 apt-transport-https software-properties-common wget nginx
Ahora añade la clave GPG y el repositorio de Grafana con el siguiente comando.
wget -q -O - https://packages.grafana.com/gpg.key > grafana.key cat grafana.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/grafana.gpg > /dev/null
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
A continuación, actualiza y refresca tu índice de paquetes con el comando siguiente:
sudo apt update
Instalar y configurar Grafana
Tras añadir el repositorio de Grafana, instala el paquete de Grafana con el gestor de paquetes APT. Y luego configurarás Grafana para que se ejecute en localhost
con el dominio como hwdomain.io
.
Para instalar Grafana, ejecuta el siguiente comando apt
. Escribe Y
para proceder a la instalación.
sudo apt install grafana
Una vez finalizada la instalación, recarga el gestor systemd con el siguiente comando:
sudo systemctl daemon-reload
Ahora puedes iniciar y habilitar el grafana-server
con el siguiente comando systemctl
. A continuación, comprueba que el servicio se está ejecutando.
sudo systemctl enable --now grafana-server sudo systemctl status grafana-server
En la siguiente salida, puedes ver que el grafana-server
se está ejecutando y está habilitado.
Con el grafana-server
en ejecución, lo configurarás para que se ejecute en localhost.
Abre la configuración de Grafana /etc/grafana/grafana.ini
con el editor nano
.
sudo nano /etc/grafana/grafana.ini
Cambia la configuración por defecto por la siguiente. Asegúrate de cambiar la opción domain
por tu nombre de dominio local para Grafana. Para este ejemplo, ejecutarás Grafana dentro del dominio 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 = hwdomain.io
Cuando hayas terminado, guarda el archivo y sal del editor.
Ahora ejecuta el siguiente comando para reiniciar grafana-server
y aplicar tus cambios. Con esto, Grafana debería estar ejecutándose en localhost con el puerto HTTP por defecto 3000
.
sudo systemctl restart grafana-server
Configurar Nginx como proxy inverso
En esta sección, crearás un nuevo bloque de servidor Nginx como proxy inverso para el grafana-server
que se está ejecutando en localhost
con el puerto 3000
.
Crea una nueva configuración de bloque de servidor Nginx /etc/nginx/sites-available/grafana.conf
con el editor nano
.
sudo nano /etc/nginx/sites-available/grafana.conf
Añade la siguiente configuración para configurar Nginx como proxy inverso para Grafana. Asegúrate de cambiar la opción server_name
por el nombre de tu dominio Grafana.
# this is required to proxy Grafana Live WebSocket connections.
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name 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 el archivo y sal del editor.
Ahora ejecuta el siguiente comando para activar el bloque del servidor grafana.conf
y verifica tu sintaxis de Nginx. Si tu sintaxis es correcta, verás una salida test is Successful - syntax is OK
.
sudo ln -s /etc/nginx/sites-available/grafana.conf /etc/nginx/sites-enabled/ sudo nginx -t
A continuación, ejecuta el siguiente comando systemctl
para reiniciar y verificar el estado del servidor web Nginx.
sudo systemctl restart nginx sudo systemctl status nginx
Verás que el servidor web Nginx se está ejecutando:
A continuación, visita tu nombre de dominio Grafana, como http://hwdomain.io/. Si la instalación se ha realizado correctamente, aparecerá la página de inicio de sesión de Grafana.
Inicia sesión con el usuario por defecto admin
y la contraseña admin
.
Una vez iniciada la sesión, introduce la nueva contraseña para tu instalación de Grafana y haz clic en Enviar para confirmar.
Verás el panel de control de Grafana como el siguiente:
Instalación y configuración de Prometheus
Prometheus es una plataforma de monitorización y alerta. Con Grafana en marcha, instalarás Prometheus en el servidor 192.168.5.16
.
Instalación de Prometheus
En esta sección, instalarás Prometheus manualmente descargando el binario de Prometheus en tu sistema. Antes, también crearás un nuevo usuario del sistema y prometheus
.
En primer lugar, ejecuta el siguiente comando para añadir un nuevo usuario y grupo prometheus
.
sudo groupadd --system prometheus sudo useradd -s /sbin/nologin --system -g prometheus prometheus
Crea un nuevo directorio de datos /var/lib/prometheus
y directorios de configuración /etc/prometheus
.
sudo mkdir -p /var/lib/prometheus for i in rules rules.d files_sd; do sudo mkdir -p /etc/prometheus/${i}; done
Descarga la última versión de Prometheus para Linux con el siguiente comando.
curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest|grep browser_download_url|grep linux-amd64|cut -d ‘"’ -f 4|wget -qi -
Una vez descargado, extrae el archivo binario de Prometheus con el comando tar
y entra en él.
tar xvf prometheus*.tar.gz cd prometheus*/
Mueve el archivo binario prometheus
y promtool
al directorio /usr/local/bin
. Y luego mueve los directorios de configuración y el archivo prometheus.yml
al directorio /etc/prometheus
.
sudo mv prometheus promtool /usr/local/bin/ sudo mv consoles console_libraries prometheus.yml /etc/prometheus/
Por último, ejecuta el siguiente comando para cambiar el permiso y la propiedad del directorio de configuración y datos de Prometheus al usuario prometheus
.
for i in rules rules.d files_sd; do sudo chown -R prometheus:prometheus /etc/prometheus/${i}; done for i in rules rules.d files_sd; do sudo chmod -R 775 /etc/prometheus/${i}; done sudo chown -R prometheus:prometheus /var/lib/prometheus/
Configurar Prometheus
Una vez que hayas instalado Prometheus, asegurarás Prometheus utilizando el paquete basic_auth
o la autenticación básica.
Instala el paquete apache2-utils
con el siguiente comando apt
.
sudo apt install apache2-utils -y
Ahora ejecuta el siguiente comando htpasswd
para generar la contraseña bcrypt para el usuario admin. Escribe tu contraseña y repítelo, y luego copia la contraseña generada.
htpasswd -nB admin
A continuación, ejecuta el siguiente comando nano
para crear un nuevo archivo /etc/prometheus/web.yml
.
sudo nano /etc/prometheus/web.yml
Añade la siguiente configuración y asegúrate de cambiar la contraseña bcrypt de abajo.
# basic_auth
basic_auth_users:
admin: $2y$05$s8U/BrE5JhSO31XKSbtj8u8cPECULs3emEhlDfCB2GW1UefQ9x00C
Guarda el archivo y sal de él cuando hayas terminado.
Ahora abre la configuración por defecto de Prometheus /etc/prometheus/prometheus.yml
con nano
.
sudo nano /etc/prometheus/prometheus.yml
Cambia el job_name
por defecto por prometheus
como se indica a continuación y asegúrate de cambiar el usuario y la contraseña de basic_auth
.
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: "admin"
password: "password"
static_configs:
# if using a valid certificate, set the same hostname in the certificate
- targets: ["localhost:9090"]
Guarda y sal del archivo.
Por último, ejecuta el siguiente comando para cambiar la propiedad de los archivos prometheus.yml
y web.yml
al usuario prometheus
.
sudo chown prometheus: /etc/prometheus/{prometheus.yml,web.yml}
Ejecutar Prometheus como un servicio systemd
Crea un nuevo archivo de servicio systemd /etc/systemd/system/prometheus.service
con el siguiente editor nano
.
sudo nano /etc/systemd/system/prometheus.service
Añade las siguientes líneas al archivo. Con esto, ejecutarás Prometheus en segundo plano como un servicio systemd y asegurarás la consola web a través del archivo web.yml
.
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
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 \
--web.listen-address=0.0.0.0:9090 \
--web.config.file=/etc/prometheus/web.yml \
SyslogIdentifier=prometheus
Restart=always
[Install]
WantedBy=multi-user.target
Guarda el archivo y sal del editor.
Ahora ejecuta el siguiente comando para recargar el gestor systemd y aplicar tus cambios.
sudo systemctl daemon-reload
A continuación, inicia y habilita el servicio prometheus
mediante el comando systemctl
que aparece a continuación, y asegúrate de que el servicio se está ejecutando.
sudo systemctl enable --now prometheus sudo systemctl status prometheus
En la siguiente salida, puedes ver que el servicio prometheus
se está ejecutando y está habilitado.
Instalación de node_exporter
Ahora que Grafana y Prometheus se están ejecutando, descargarás e instalarás node_exporter. El node_exporter te permite raspar datos para la monitorización básica del sistema.
Descarga el archivo binario node_exporter con el comando curl
que aparece a continuación.
curl -s https://api.github.com/repos/prometheus/node_exporter/releases/latest| grep browser_download_url|grep linux-amd64|cut -d ‘"’ -f 4|wget -qi -
Una vez descargado, extrae el node_exporter y entra en él.
tar -xvf node_exporter*.tar.gz cd node_exporter*/
Ahora copia el archivo binario node_exporter
en el directorio /usr/local/bin
.
sudo cp node_exporter /usr/local/bin
Después, ejecuta el siguiente comando para crear un nuevo archivo de servicio systemd /etc/systemd/system/node_exporter.service
para el node_exporter.
sudo tee /etc/systemd/system/node_exporter.service <<EOF [Unit] Description=Node Exporter Wants=network-online.target After=network-online.target
[Service]
User=prometheus
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=default.target
EOF
Recarga el gestor systemd con lo siguiente:
sudo systemctl daemon-reload
Ahora puedes iniciar y habilitar el servicio node_exporter con el siguiente comando. Y después, comprueba el estado del servicio node_exporter.
sudo systemctl enable --now node_exporter sudo systemctl status node_exporter
Verás que el servicio node_exporter se está ejecutando y empezará a recopilar y rellenar datos. El servicio node_exporter se está ejecutando en el puerto por defecto 9100
.
Integrar node_exporter en Prometheus
En esta sección, integrarás y añadirás node_exporter a Prometheus.
Abre la configuración por defecto de Prometheus /etc/prometheus/prometheus.yml
.
sudo nano /etc/prometheus/prometheus.yml
Añade un nuevo job_name
con el nombre node_exporter
y apunta el objetivo al target
como 192.168.5.16:9100
.
- job_name: "node_exporter"
static_configs:
- targets: ["192.168.5.100:9100"]
Guarda el archivo y sal de él cuando hayas terminado.
Ahora ejecuta el siguiente comando para reiniciar el servicio prometheus
y aplicar los cambios.
sudo systemctl restart prometheus
A continuación, accede al servidor Prometheus http://192.168.5.16:9090 a través de tu navegador web y se te solicitará una autenticación básica.
Introduce tu nombre de usuario y contraseña y haz clic en Iniciar sesión.
Tras acceder al panel de control de Prometheus, introduce node_memory_Active_bytes
en la consulta y haz clic en Ejecutar. Verás el gráfico de la memoria activa actual como el siguiente:
Por último, haz clic en Estado > Objetivos y asegúrate de que los objetivos prometheus
y node_exporter
están activos y en ejecución, como se muestra a continuación:
Integrar Prometheus con Grafana como fuente de datos
Ahora que Prometheus está listo, añadirás e integrarás Promethues a Grafana como fuente de datos. A continuación, crearás un nuevo sistema de panel de control para la monitorización.
Dentro del panel de control de Grafana, haz clic en Conexiones > Fuentes de datos > Añadir fuente de datos para añadir una nueva fuente de datos en Grafana.
Selecciona Prometheus como fuente de datos.
Introduce la URL de Prometheus como http://192.168.5.16:9090/ e introduce el nombre de usuario y la contraseña de tu servidor Prometheus.
Desplázate hasta el final y haz clic en Guardar y probar. Si se realiza correctamente, verás el mensaje Successfully queried the Prometheus API
.
Después de añadir Prometheus como fuente de datos, crearás un nuevo panel de control Grafana para la supervisión del sistema.
Haz clic en el menú Cuadro de mandos > Crear cuadro de mandos.
Selecciona Importar d ashboard para importar el dashboard.
Visita https://grafana.com/grafana/dashboards/ y busca el dashboard adecuado. En este ejemplo, cargarás el dashboard Grafana con id 15172.
Haz clic en Cargar para importar el panel de control.
Ahora selecciona el backend Prometheus y haz clic en Importar para confirmar.
Si todo va bien, se creará tu panel de control de Grafana. A continuación se muestra la captura de pantalla del dashboard Grafana con la monitorización de Prometheus y node_exporter:
Conclusión
¡Enhorabuena! Has completado la instalación de Grafana, Prometheus y node_exporter en servidores Ubuntu 24.04. Has ejecutado Grafana con Nginx como proxy inverso, asegurado Prometheus con autenticación de contraseña, integrado node_exporter con Prometheus, añadido Prometheus como fuente de datos a Grafana e importado el panel de control de Grafana.