Prometheus + Grafana | Instalación y Configuración / CentOS 8 / RHEL 8

Gerardo Ocampos
5 min readMay 10, 2021

--

Este tutorial explica cómo instalar, configurar y usar un servidor de monitoreo Prometheus con Grafana Dashboard.

Prometheus + Grafana

Introducción

Prometheus: es una solución de monitoreo flexible que está en desarrollo desde 2012. El software almacena todos sus datos en una base de datos de tipo Time Series (TSDB) y ofrece un modelo de datos multidimensional y un poderoso lenguaje de consulta para generar informes de los recursos monitoreados.

Grafana: es una herramienta para visualizar datos de serie temporales. Escrita en Lenguaje Go (creado por Google) y Node.js LTS y con una fuerte Interfaz de Programación de Aplicaciones (API). A partir de una serie de datos recolectados obtendremos un panorama gráfico de la situación de una empresa u organización.

Nota: Utilizaremos Prometheus como almacenamiento de métricas y Grafana como visualizador de gráficos. Las métricas pueden ser recolectadas mediante e agentes Exportadores disponibles en la siguiente lista https://prometheus.io/docs/instrumenting/exporters/.

Ambiente:

Sistema Operativo: Centos 8.x
Prometheus: 2.26.0.linux-amd64
Grafana: grafana-7.5.2-1.x86_64.rpm

Instalación de Prometheus

1- Creamos un usuario de servicio llamado prometheus

sudo useradd --no-create-home --shell /usr/sbin/nologin prometheus

2- Creamos y configuramos los directorios del servicio. Establecemos los permisos correspondientes para el usuario previamente creado

sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus

3- Descargaremos la última versión de prometheus publicado. En mi caso (2.26.0.linux-amd64). La descarga lo realizaremos del siguiente enlace: https://prometheus.io/download/

wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.
tar.gz

4- Obtenemos los binarios prometheus y promtool que se encuentran dentro del proyecto y lo copiamos al path correspondiente de nuestro sistema operativo

tar xfz prometheus-*.tar.gz
cd prometheus-...
sudo cp ./prometheus /usr/local/bin/
sudo cp ./promtool /usr/local/bin/

5- Copiamos los directorios consolas y console_libraries en /etc/prometheus

sudo cp -r ./consoles /etc/prometheus
sudo cp -r ./console_libraries /etc/prometheus

6- Establecemos los permisos correspondientes a todo lo copiado

sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries

Configuración de Prometheus

Antes de usar Prometheus, necesitamos una configuración básica. Por lo tanto, crearemos un archivo de configuración llamado prometheus.yml

sudo touch /etc/prometheus/prometheus.yml
sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
sudo vi /etc/prometheus/prometheus.yml
Ejemplo prometheus.yml

La configuración está dividida en tres secciones: global, rule_files y scrape_configs.

Iniciando por la sección global donde encontraremos la configuración general que establecemos al servicio:
scrape_interval Define la frecuencia con la que Prometheus obtiene las métricas. Por defecto es establecida un intervalo de 15 segundos.

evaluation_interval Controla la frecuencia con la que el servicio evaluará las reglas.

En el bloquerule_files se contempla información de la ubicación de las reglas que queremos que cargue el servidor de Prometheus. En nuestro caso, no tenemos reglas a definir, por lo cual mantendremos comentado esta sesión.

Finalmente, tenemos el bloque de las configuraciones scape_configs, el cual contiene información de los recursos a monitorear.

Nota: En la parte scrape_configs hemos definido nuestro primer exportador. Es Prometheus el que se controla a sí mismo.

Como queremos tener información más precisa sobre el estado de nuestro servidor, reducimos scrape_interval a 5 segundos para este trabajo.

Los parámetros static_configs y target determinan dónde se están ejecutando los exportadores. En nuestro caso es el mismo servidor, por lo que usamos localhost y el puerto 9090. Como Prometheus obtiene solo los exportadores que están definidos en la parte scrape_configs del archivo de configuración, tenemos que agregar cada exportador al archivo, como hicimos con Prometheus.

Ejemplo:

- job_name: 'node_exporter'
scrape_interval: 5s
static_configs:
- targets: ['server-one:9100', 'server-two:9100','...']

Iniciando Servicio Prometheus

1- Inicie Prometheus directamente desde la línea de comandos como se muestra a continuación, ejecuta el archivo binario con el usuario prometheus:

sudo -u prometheus /usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus/ \
--storage.tsdb.retention.time=30d \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries

2- En su navegador, ingrese al siguiente enlace http://IP-OF-YOUR-SERVER:9090 De esta forma accederá a la interfaz web de Prometheus.

Prometheus

El servidor está funcionando, pero aún no se puede iniciar automáticamente al arrancar. Para lograr esto, tenemos que crear una nueva configuración de systemd

3- Creamos el archivo de configuración de la siguiente manera:

sudo vi /etc/systemd/system/prometheus.service

Copie la siguiente información en el archivo y guárdelo, luego salga del editor

Ejemplo prometheus.service

Para utilizar el nuevo servicio, debemos recargar la configuración. Luego habilitamos el servicio durante el booteo

sudo systemctl daemon-reload
sudo systemctl enable prometheus

Finalmente Iniciamos Prometheus como servicio

sudo systemctl start prometheus

Su servidor Prometheus está listo para ser utilizado.

Instalación de Grafana Server

1- Descargamos el paquete desde el sitio oficial de Grafana, en mi caso seleccionaré la última versión disponible.

wget https://dl.grafana.com/oss/release/grafana-7.5.2-1.x86_64.rpm 
sudo yum install grafana-7.5.2-1.x86_64.rpm

2- Una vez finaliza la instalación, procedemos a levantar el servicio y habilitarlo para que inicie durante el proceso de booteo.

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

En su navegador, ingrese al siguiente enlace http://IP-OF-YOUR-SERVER:3000 De esta forma accederá a la interfaz web de Grafana.

Ingresar como usuario y contraseña la palabra admin Automáticamente, Grafana solicitara que ingreses la nueva contraseña de administrador.

Grafana Server

Prometheus como Data Source para Grafana

Finalmente, nuestro ultimo paso para el monitore es la integración de prometheus como fuente de datos del Grafana

Para realizar lo comentado, debemos ir al apartado de Data Sources

Data Sources

Y luego ingresar los datos de conexión al servicio de Prometheus

Configuración simple de Prometheus como Data Source

--

--

Gerardo Ocampos

Red Hat Certified Engineer — Red Hat Certified System Administrator — Red Hat Certified Specialist in Containers and Kubernetes. Asunción, Paraguay