Prometheus + Grafana | Instalación y Configuración / CentOS 8 / RHEL 8
Este tutorial explica cómo instalar, configurar y usar un servidor de monitoreo Prometheus con Grafana Dashboard.
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
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.
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
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.
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
Y luego ingresar los datos de conexión al servicio de Prometheus