Cómo instalar Grafana y Prometheus en Rocky Linux 9

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, instalaré la aplicación web de análisis y visualización de código abierto Grafana con Nginx como proxy inverso. A continuación, instalaré y configuraré la monitorización del sistema de código abierto Prometheus con Node Exporter para recopilar métricas del sistema. Por último, añadirás Prometheus como fuente de datos a Grafana y configurarás un panel para la monitorización del sistema.

Para esta guía, instalarás todos esos paquetes sobre el servidor Rocky Linux 9.

Requisitos previos

Para empezar, debes tener los siguientes requisitos para completar esta guía:

  • Un servidor Rocky Linux 9 – Puedes utilizar varios servidores o un único servidor para el experimento. A continuación se indican los tipos de instalación que debes conocer:
    Un único servidor: grafana, prometheus y node_exporter en un único servidor.
    Dos servidores: grafana en el servidor1, prometheus y node_exporter en el servidor3.
    Tres servidores: grafana en el servidor1, prometheus en el servidor2 y node_exporter en el servidor3.
  • Un usuario no root con privilegios de administrador sudo/root.

Instalación de Grafana

Grafana es una aplicación multiplataforma que puede instalarse en varios sistemas operativos, como Windows, Linux y macOS. Para sistemas Linux, Grafana proporciona repositorios tanto para sistemas operativos basados en Debian (Debian y Ubuntu) como para sistemas operativos basados en RHEL (RHEL, CentOS, Fedora, RockyLinux, AlmaLinux).

En este paso, configurarás el repositorio de Grafana e instalarás Grafana 9.3 en el servidor Rocky Linux 9.

Antes de configurar el repositorio de Grafana, ejecuta el siguiente comando para configurar el backend de la política criptográfica por defecto a «SHA1» y reinicia el servidor para aplicar los cambios.

sudo update-crypto-policies --set DEFAULT:SHA1
sudo reboot

Tras iniciar sesión de nuevo, crea un nuevo archivo de repositorio ‘/etc/yum.repos.d/grafana.repo’ utilizando el siguiente comando del editor nano.

sudo nano /etc/yum.repos.d/grafana.repo

Añade el siguiente repositorio de Grafana al archivo.

[grafana]
name=grafana
baseurl=https://rpm.grafana.com
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://rpm.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

Guarda el archivo y sal del editor.

Ahora ejecuta el siguiente comando para verificar la lista de repositorios en tu sistema. Deberías ver que se ha añadido el repositorio de Grafana.

sudo dnf repolist

añadir repo

Con el repositorio de Grafana añadido, ya puedes instalar el paquete de Grafana mediante el comando dnf que aparece a continuación.

sudo dnf install grafana

Cuando se te solicite, introduce y para confirmar la instalación y pulsa INTRO.

instalar grafana

También se te pedirá que confirmes la clave gpg para el repositorio de Grafana. Introduce y y pulsa INTRO para añadir la clave gpg a tu sistema.

añadir clave gpg

Cuando Grafana esté instalado, ejecuta el siguiente comando systemctl para recargar los privilegios de systemd.

sudo systemctl daemon-reload

A continuación, inicia y activa el servicio Grafana ‘grafana-server’. El servicio Grafana debería estar ahora habilitado y en ejecución.

sudo systemctl start grafana-server
sudo systemctl enable grafana-server

iniciar grafana

Verifica el servicio » grafana-server » mediante el siguiente comando para asegurarte de que se está ejecutando.

sudo systemctl status grafana-server

El siguiente resultado confirma que el servidor grafana está activado y en ejecución. El servidor grafana debería ejecutarse automáticamente al arrancar.

comprobar grafana

Configurar Grafana

Ahora que el servidor Grafana está instalado y en ejecución, establecerás cómo debe ejecutarse Grafana a través del archivo de configuración ‘/etc/grafana/grafana.ini’. En este ejemplo, ejecutarás Grafana sólo en localhost con el dominio local grafana.hwdomain.io.

Abre el archivo de configuración de Grafana‘/etc/grafana/grafana.ini ‘ utilizando el comando nano del editor.

sudo nano /etc/grafana/grafana.ini

Descomenta algunas líneas de abajo y cambia el valor por defecto como se indica a continuación.

[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

Con esta configuración, configuras Grafana para que se ejecute sólo en localhost con el puerto TCP 3000 por defecto. Ejecutarás Grafana con el dominio local grafana.hwdomain.io, que es gestionado por el proxy inverso.

Guarda el archivo y cierra el editor cuando hayas terminado.

Ahora reinicia el servicio«grafana-server» mediante el comando systemctl para aplicar los nuevos cambios.

sudo systemctl restart grafana-server

Grafana está configurado y en funcionamiento. A continuación, instalarás y configurarás Nginx como proxy inverso para el servidor de Grafana.

Configurar Nginx como proxy inverso

En este paso, instalarás el servidor web Nginx y lo configurarás como proxy inverso para el servidor de Grafana. Antes de instalar Nginx, asegúrate de que tienes un nombre de dominio o dominio local que resuelve a tu servidor y certificados SSL generados.

Ejecuta el siguiente comando dnf para instalar el servidor web Nginx en tu sistema.

sudo dnf install nginx

Introduce y cuando se te pida confirmación y pulsa ENTER para continuar.

instalar nginx

Después de instalar Nginx, crea un nuevo archivo de bloque del servidor Nginx‘/etc/nginx/conf.d/grafana.conf‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/nginx/conf.d/grafana.conf

Añade las siguientes líneas al archivo y cambia los detalles nombre de dominio y ruta de los certificados SSL.

# 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;
rewrite     ^   https://$server_name$request_uri? permanent;
}

server {
listen      443 ssl http2;
server_name grafana.hwdomain.io;

root /usr/share/nginx/html;
index index.html index.htm;

ssl_certificate /etc/letsencrypt/live/grafana.hwdomain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/grafana.hwdomain.io/privkey.pem;

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/;
}
}

Con esta configuración, ejecutarás Nginx como proxy inverso para el servidor grafana que se ejecuta en localhost:3000. También protegerás el grafana mediante una conexión segura SSL/HTTPS. Además, configurarás un proxy inverso para las conexiones WebSocket de grafana.

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando para verificar la configuración de Nginx y asegurarte de que tienes la configuración adecuada.

sudo nginx -t

Si tienes la configuración adecuada, deberías obtener un mensaje de salida como ‘test successful – syntax ok’.

Ahora ejecuta el siguiente comando systemctl para iniciar y habilitar Nginx.

sudo systemctl start nginx
sudo systemctl enable nginx

configurar proxy inverso nginx

El servicio Nginx debería estar ejecutándose y habilitado. Verifica el servicio Nginx mediante el siguiente comando systemctl.

sudo systemctl status nginx

La siguiente salida confirma que el servicio Nginx se está ejecutando y está habilitado. El servicio Nginx debería ejecutarse automáticamente al arrancar.

verificar nginx

Con el servicio Nginx activado y ejecutándose en los protocolos HTTP y HTTPS, a continuación configurarás el cortafuegos para abrir ambos servicios.

Ejecuta el siguiente comando firewall-cmd para añadir el servicio HTTP y HTTPS al firewalld.

sudo firewall-cmd --add-service={http,https} --permanent

Después, recarga el firewalld para aplicar los cambios y verifica la lista de servicios habilitados en firerwalld.

sudo firewall-cmd --reload
sudo firewall-cmd --list-services

Deberías recibir la siguiente salida – Los servicios HTTP y HTTPS añadidos al firewalld.

configurar firewalld

Una vez configurado el firewalld, podrás acceder a tu instalación de grafana y del proxy inverso Nginx.

Abre el navegador web y visita el nombre de dominio de tu instalación de grafana (es decir: https://grafana.hwdomain.io/), y deberías obtener la página de inicio de sesión de grafana.

Inicia sesión con el usuario/contraseña por defecto‘admin‘.

inicio de sesión en grafana

Después de iniciar sesión, se te pedirá que cambies la contraseña predeterminada. Introduce la nueva contraseña para tu instalación de grafana y pulsa«Enviar» para confirmar.

grafana cambiar admin

Ahora deberías obtener el panel de control de grafana como la siguiente captura de pantalla.

panel de control grafana

En este punto, has terminado la instalación y configuración de grafana en el servidor Rocky Linux 9. También has ejecutado grafana con el proxy inverso Nginx y has asegurado la instalación de grafana mediante HTTPS y cambiado el usuario administrador predeterminado para grafana.

Con esto, a continuación instalarás y configurarás Prometheus y node_exporter para recopilar métricas de tu sistema y añadir Prometheus como fuente de datos a tu grafana.

Instalar Prometheus y Node Exporter

Prometheus es un conjunto de herramientas de código abierto para la monitorización y alerta de sistemas. Es una potente herramienta para recopilar y consultar datos métricos. Prometheus funciona extrayendo (scraping) métricas en tiempo real de servicios de aplicaciones y hosts con una cadencia regular mediante el envío de peticiones HTTP en puntos finales de métricas, y luego las comprime y almacena en una base de datos de series temporales.

El node_exporter es uno de los raspadores prometheus más populares para extraer métricas de sistemas operativos. El node_exporter está diseñado para monitorizar el sistema anfitrión, expone una amplia variedad de métricas relacionadas con el hardware y el núcleo.

Ahora instalarás prometheus y node_exporter en el servidor Rocky Linux 9.

Crea un nuevo archivo de repositorio ‘/etc/yum.repos.d/prometheus.repo ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/yum.repos.d/prometheus.repo

Añade las siguientes líneas al archivo, que es el repositorio prometheus proporcionado por Packagecloud.io.

[prometheus]
name=prometheus
baseurl=https://packagecloud.io/prometheus-rpm/release/el/$releasever/$basearch
repo_gpgcheck=1
enabled=1
gpgkey=https://packagecloud.io/prometheus-rpm/release/gpgkey
       https://raw.githubusercontent.com/lest/prometheus-rpm/master/RPM-GPG-KEY-prometheus-rpm
gpgcheck=1
metadata_expire=300

Guarda y cierra el archivo cuando hayas terminado.

Ahora puedes verificar la lista de repositorios disponibles en tu sistema mediante el siguiente comando dnf.

sudo dnf repolist

En la salida de abajo confirma que el repositorio prometheus se ha añadido a tu sistema.

añadir repositorio

Ahora instala los paquetes prometheus y node_exporter mediante el siguiente comando dnf.

sudo dnf install prometheus2 node_exporter

Cuando se te solicite, introduce y para confirmar y pulsa INTRO. Y comenzará la instalación de prometheus y node_exporter.

instalar prometheus

Además, cuando se te pida que añadas la clave GPG, introduce y para confirmar.

añadir clave gpg

Una vez instalados prometheus y node_exporter, ejecuta el siguiente comando systemctl para iniciar y habilitar los servicios bot, el prometheus y node_exporter.

sudo systemctl start prometheus node_exporter
sudo systemctl enable prometheus node_exporter

Ahora verifica los servicios promethues y node_exporter utilizando el siguiente comando.

sudo systemctl status prometheus node_exporter

En la siguiente salida confirma que los servicios prometheus y node_exporter se están ejecutando y están habilitados. Ambos servicios se ejecutarán automáticamente al arrancar.

start enable prometheus nodo_exportador

El prometheus se ejecuta por defecto en el puerto 9090, mientras que el node-exporter se ejecuta por defecto en el puerto 9100. Ahora añadirás ambos puertos 9090 y 9100 al cortafuegos.

Ejecuta el siguiente comando firewall-cmd para añadir el puerto prometheus y node_exporter al firewalld. A continuación, recarga el firewalld para aplicar los nuevos cambios.

sudo firewall-cmd --add-port={9090/tcp,9100/tcp} --permanent
sudo firewall-cmd --reload

Con el firewalld configurado, puedes acceder a la instalación de prometheus y node_exporter. Pero, a continuación, darás un paso más configurando tanto prometheus como node_exporter.

Configurar prometheus y node_exporter

Una vez instalados prometheus y node_exporter, ahora configurarás ambos servicios con las siguientes configuraciones:

  • Habilitación de la autenticación básica para prometheus.
  • Habilitación de HTTPS/SSL en la interfaz web de prometheus.
  • Configurar u scrape_config para la máquina de destino.

Habilitar basic_auth y HTTPS/SSL para prometheus

En la instalación por defecto, prometheus viene sin autenticación de contraseña y funciona con el protocolo HTTP. Para asegurar la instalación, deberás configurar el basic_auth y habilitar HTTPS en tu instalación de prometheus.

Antes de configurar el basic_auth en prometheus, ejecuta el siguiente comando dnf para instalar el paquete ‘httpd-tools’. Este paquete proporciona el comando ‘htpasswd’ que puede utilizarse para generar una contraseña bcrypt.

sudo dnf install httpd-tools -y

A continuación, ejecuta el siguiente comando para generar una contraseña para tu instalación de prometheus. En este ejemplo, utilizarás el usuario «promadmin» como usuario por defecto para el prometheus basic_auth.

htpasswd -nB promadmin

Cuando se te solicite, introduce la contraseña que se utilizará para prometheus basic_auth y repite la contraseña.

En el siguiente resultado, puedes ver la contraseña bcrypt generada. Copia el nombre de usuario y la contraseña generada.

generar contraseña

Ahora crea un nuevo archivo de configuración de prometheus‘/etc/prometheus/web.yml‘ utilizando el siguiente comando del editor nano. Esta configuración habilitará HTTPS/SSL y el basic_auth en tu instalación de Prometheus.

sudo nano /etc/prometheus/web.yml

Añade las siguientes líneas al archivo y asegúrate de cambiar la ruta de los certificados SSL y el nombre de usuario y contraseña que se demandarán para tu prometheus.

# tls certificates
tls_server_config:
  cert_file: fullchain.pem
  key_file: privkey.pem
# basic_auth
basic_auth_users:
promadmin: $2y$05$.OhemZb5HtMYsHSBdrH4/.74FKCL2NbD2I41FI5L/VO.Uy6c2dQ7i

La sección ‘tls_server_config‘ te permite habilitar las conexiones seguras HTTPS/SSL, y‘basic_auth_users‘ habilitará la autenticación básica por contraseña en tu instalación de prometheus.

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, abre el archivo ‘/etc/default/prometheus ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/default/prometheus

Añade la siguiente línea a la sección‘PROMETHEUS_OPTS‘.

--web.config.file=/etc/prometheus/web.yml

La opción‘–web.config.file ‘ especificará la configuración o interfaz web de prometheus. En este ejemplo, la configuración es‘/etc/prometheus/web.yml’.

Guarda el archivo y sal del editor cuando hayas terminado.

Configurar scrape_config para la máquina destino

Tras habilitar prometheus basic_auth y HTTPS/SSL, a continuación añadirás la máquina de destino a la sección ‘scrape_config’ de promethues.

Abre el archivo de configuración de promethues ‘/etc/prometheus/prometheus.yml ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/prometheus/prometheus.yml

En la sección scrape_config, cambia la configuración por defecto con las siguientes líneas.

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: https
tls_config:
cert_file: /etc/prometheus/server.crt
key_file: /etc/prometheus/server.key
# if using self-signed certificate, set [true]
insecure_skip_verify: true
basic_auth:
username: 'promadmin'
password: 'password'

static_configs:
# if using a valid certificate, set the same hostname in the certificate
- targets: ["localhost:9090"]

- job_name: "node_exporter"

static_configs:
- targets: ["192.168.5.120:9100"]

Con esta configuración, establecerás dos trabajos con el nombre ‘prometheus’ y ‘node_exporter’. Y asegúrate de cambiar la sección basic_auth en el trabajo ‘promethues’.

  • En el trabajo ‘prometheus‘, activarás la conexión segura HTTPS y habilitarás el ‘basic_auth’ para la autenticación. En la tarea «prometheus», el host de destino es «localhost:9090», que es el servidor prometheus.
  • En el trabajo «node_exporter«, el objetivo es el propio servicio node_exporter, que se ejecuta en el puerto «9100».

Ahora ejecuta el siguiente comando systemctl para reiniciar los servicios prometheus y node_exporter y aplicar los nuevos cambios.

sudo systemctl restart prometheus node_exporter

En este punto, has llevado a prometheus al siguiente paso habilitando la autenticación básica y la seguridad mediante SSL/HTTPS. También has añadido dos scrapes para recopilar métricas, el«prometheus» y el«node_exporter».

Para verificar tu instalación, abre el navegador web y visita la dirección IP del servidor con el puerto «9090» (es decir: https://192.168.5.120:9090/).

Ahora se te pedirá la autenticación básica, introduce el usuario«promadmin» y la contraseña que has creado.

inicio de sesión prometheus

Después de iniciar sesión, deberías tener el panel de promethues. Introduce la consulta como«node_memory_Active_bytes» y haz clic en«Ejecutar«. Deberías obtener las métricas de la consulta que has ejecutado.

La consulta «node_memory_Active_bytes» la proporciona el«node_exporter» para comprobar la memoria activa.

cuadro de mandos consulta prometheus

A continuación, haz clic en el menú«Estado» y selecciona«Objetivo«. Deberías tener dos trabajos diferentes creados, el ‘prometheus y el ‘node_exporter‘. El estado de los trabajos «prometheus» y «node_exporter» es «up».

objetivos de la lista

Una vez configurados el prometheus y el node_exporter, a continuación añadirás el prometheus como fuente de datos a grafana.

Añadir Prometheus como fuente de datos a Grafana

Grafana admite múltiples fuentes de datos, como MySQL, PostgreSQL, Influxdb, Graphite, Prometheus y muchas más. En este paso, añadirás Promethues como fuente de datos a grafana.

En el panel de control de grafana, haz clic en el menú«Configuración» y selecciona«Fuentes de datos».

añadir fuente de datos

Ahora haz clic en «Añadir fuente de datos» para añadir la nueva fuente de datos.

añadir fuentes de datos

Selecciona el tipo de fuente de datos que quieres añadir. Este ejemplo es «Prometheus«.

tipo de fuente de datos

Ahora introduce los detalles de la configuración de prometheus: el scrape_config de ‘prometheus‘. Asegúrate de activar la«Autenticación básica» y la«Omitir verificación TLS» (si utilizas certificados autofirmados).

añadir fuente de datos prometheus

Desplázate hasta la parte inferior de la página y haz clic en«Guardar y probar» para confirmar. si aparece el mensaje de salida«Fuente de datos funcionando«, entonces estás listo y has añadido la fuente de datos prometheus a grafana.

guardar y probar fuente de datos

Configuración de la monitorización del panel de control

Con Prometheus añadido a Grafana como fuente de datos, puedes crear un nuevo cuadro de mando para monitorizar tu sistema. Puedes crear el cuadro de mando manualmente para cada celda o importando algunos ejemplos del cuadro de mando de Grafana desde el repositorio de cuadros de mando de Grafana.

En este paso, configurarás el cuadro de mandos de Grafana importando el cuadro de mandos disponible en línea a Grafana.

Haz clic en el menú«Cuadro de mando» y selecciona«Importar«.

salpicadero de importación

Ahora puedes encontrar ejemplos de un panel de control del repositorio de paneles de control de Grafana. Este ejemplo utiliza el panel de control de Grafana con el identificador«15172«.

Introduce el identificador del panel que quieres importar,«15172″, y haz clic en«Cargar«.

importar dashboard id

Ahora, introduce el nombre del nuevo panel y selecciona«Prometheus» como fuente de datos. Haz clic en «Importar» para confirmar.

salpicadero de importación

En la siguiente captura de pantalla confirma que se ha creado el nuevo panel de grafana con la fuente de datos prometheus para la monitorización de sistemas.

cuadro de mandos monitorización prometheus

Conclusión

En este tutorial, has instalado Grafana para la visualización de datos con Nginx como proxy inverso en un servidor Rocky Linux 9. También has instalado Prometheus y node_exporter junto con Grafana.

El Prometheus se ejecuta con la conexión SSL/TLS activada, el módulo basic_auth activado para la autenticación de usuarios, y configuraste dos scrapes para recopilar métricas del sistema con el propio Prometheus y el node_expoter.

Por último, has añadido Prometheus como fuente de datos a Grafana y has importado un panel para la visualización de datos con los datos recogidos por Prometheus y node_exporter.

A partir de aquí, puedes añadir otro exportador de tu aplicación a Prometheus y visualizar todas las métricas a través del panel de visualización de datos de Grafana.

También te podría gustar...