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
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.
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.
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
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.
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.
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
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.
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.
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‘.
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.
Ahora deberías obtener el panel de control de grafana como la siguiente captura de pantalla.
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.
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.
Además, cuando se te pida que añadas la clave GPG, introduce y para confirmar.
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.
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.
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.
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.
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».
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».
Ahora haz clic en «Añadir fuente de datos» para añadir la nueva fuente de datos.
Selecciona el tipo de fuente de datos que quieres añadir. Este ejemplo es «Prometheus«.
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).
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.
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«.
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«.
Ahora, introduce el nombre del nuevo panel y selecciona«Prometheus» como fuente de datos. Haz clic en «Importar» para confirmar.
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.
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.