Cómo instalar la herramienta de monitorización del sistema Prometheus en Debian 11
Prometheus es una aplicación de monitorización gratuita, de código abierto y basada en la web, que recoge las métricas de tus servicios y las almacena en una base de datos de series temporales. La configuración por defecto de Prometheus sólo exporta métricas sobre sí mismo. Pero puedes ampliarla instalando exportadores y otros programas. Admite un modelo de datos multidimensional, múltiples modos de gráficos y cuadros de mando.
En este post, te mostraremos cómo instalar la monitorización de Prometheus en Debian 11.
Requisitos previos
- Un servidor que ejecute Debian 11.
- Una contraseña de root configurada en el servidor.
Instalar Prometheus
Antes de empezar, se recomienda crear un usuario y un grupo dedicados para Prometheus. Puedes crearlo con el siguiente comando:
groupadd --system prometheus
useradd -s /sbin/nologin --system -g prometheus prometheus
A continuación, descarga la última versión de Prometheus ejecutando 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 Prometheus, puedes ver el archivo descargado utilizando el siguiente comando:
ls -l
Deberías ver la siguiente salida:
-rw-r--r-- 1 root root 72638078 Oct 5 16:46 prometheus-2.30.3.linux-amd64.tar.gz
A continuación, extrae el archivo descargado utilizando el siguiente comando:
tar -xvf prometheus*.tar.gz
A continuación, cambia el directorio por el extraído con el siguiente comando:
cd prometheus-2.30.3.linux-amd64
A continuación, crea algunos directorios necesarios utilizando el siguiente comando:
mkdir /etc/prometheus
mkdir /var/lib/prometheus
A continuación, copia los archivos de configuración y las herramientas necesarias con los siguientes comandos:
mv prometheus.yml /etc/prometheus/prometheus.yml
mv consoles/ console_libraries/ /etc/prometheus/
mv prometheus promtool /usr/local/bin/
Una vez que hayas terminado, puedes pasar al siguiente paso.
Crear un archivo de servicio Systemd para Prometheus
A continuación, tendrás que crear un archivo de servicio systemd para gestionar el servicio Prometheus. Puedes crearlo ejecutando el siguiente comando:
nano /etc/systemd/system/prometheus.service
Añade las siguientes líneas:
[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.external-url= SyslogIdentifier=prometheus Restart=always [Install] WantedBy=multi-user.target
Guarda y cierra el archivo y luego establece la propiedad y el permiso adecuados en el directorio de configuración de Prometheus:
chown -R prometheus:prometheus /etc/prometheus/
chmod -R 775 /etc/prometheus/
chown -R prometheus:prometheus /var/lib/prometheus/
A continuación, recarga el demonio systemd para aplicar los cambios:
systemctl daemon-reload
A continuación, inicia el servicio Prometheus y permite que se inicie al reiniciar el sistema mediante el siguiente comando:
systemctl start prometheus
systemctl enable prometheus
Puedes comprobar el estado de Prometheus con el siguiente comando:
systemctl status prometheus
Obtendrás la siguiente salida:
? prometheus.service - Prometheus Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2021-10-16 14:06:39 UTC; 4s ago Docs: https://prometheus.io/docs/introduction/overview/ Main PID: 18415 (prometheus) Tasks: 5 (limit: 2341) Memory: 19.6M CPU: 79ms CGroup: /system.slice/prometheus.service ??18415 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.cons> Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.172Z caller=head.go:513 component=tsdb msg="On-disk memory mappa> Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.172Z caller=head.go:519 component=tsdb msg="Replaying WAL, this > Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.174Z caller=head.go:590 component=tsdb msg="WAL segment loaded" > Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.174Z caller=head.go:596 component=tsdb msg="WAL replay completed> Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.177Z caller=main.go:849 fs_type=EXT4_SUPER_MAGIC Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.177Z caller=main.go:852 msg="TSDB started" Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.178Z caller=main.go:979 msg="Loading configuration file" filenam> Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.178Z caller=main.go:1016 msg="Completed loading of configuration> Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.179Z caller=main.go:794 msg="Server is ready to receive web requ> Oct 16 14:06:39 debian11 prometheus[18415]: level=info ts=2021-10-16T14:06:39.179Z caller=tls_config.go:191 component=web msg="TLS is disabled>
Por defecto, Prometheus escucha en el puerto 9090. Puedes comprobarlo utilizando el siguiente comando:
ss -antpl | grep 9090
Deberías ver la siguiente salida:
LISTEN 0 4096 *:9090 *:* users:(("prometheus",pid=18415,fd=7))
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar Nginx como proxy inverso para Prometheus
A continuación, se recomienda instalar y configurar Nginx como proxy inverso para Prometheus. En primer lugar, instala el paquete del servidor web Nginx con el siguiente comando:
apt-get install nginx -y
Una vez instalado Nginx, crea un archivo de configuración de host virtual Nginx con el siguiente comando:
nano /etc/nginx/conf.d/prometheus.conf
Añade las siguientes líneas:
server { listen 80; server_name prometheus.example.com; location / { proxy_pass http://localhost:9090; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Guarda y cierra el archivo y luego verifica que Nginx no tenga ningún error de sintaxis con el siguiente comando:
nginx -t
Si todo está bien, obtendrás la siguiente salida:
nginx: configuration file /etc/nginx/nginx.conf test is successful
Por último, reinicia el servicio Nginx para aplicar los cambios:
systemctl restart nginx
También puedes verificar el estado del servicio Nginx con el siguiente comando:
systemctl status nginx
Deberías obtener la siguiente salida:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-10-16 14:08:15 UTC; 2s ago Docs: man:nginx(8) Process: 18792 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 18793 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 18794 (nginx) Tasks: 2 (limit: 2341) Memory: 2.5M CPU: 35ms CGroup: /system.slice/nginx.service ??18794 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??18795 nginx: worker process Oct 16 14:08:15 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server... Oct 16 14:08:15 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument Oct 16 14:08:15 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.
En este punto, Nginx está instalado y configurado para servir al Prometheus. Ahora puedes pasar al siguiente paso.
Accede al panel de control de Prometheus
Ahora, abre tu navegador web y accede al panel de control de Prometheus utilizando la URL http://prometheus.example.com. Deberías ver la siguiente página:
Instalar y configurar node_exporter
node_exporter es un exportador que monitorizará y obtendrá la métrica del servidor Prometheus. En primer lugar, descarga la última versión de node_exporter mediante el siguiente comando:
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
Una vez completada la descarga, extrae el archivo descargado con el siguiente comando:
tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gz
A continuación, mueve el directorio extraído al directorio /etc/prometheus/:
mv node_exporter-1.2.2.linux-amd64 /etc/prometheus/node_exporter
A continuación, establece la propiedad adecuada con el siguiente comando:
chown -R prometheus:prometheus /etc/prometheus/node_exporter
A continuación, crea un archivo de servicio systemd para gestionar el servicio node_exporter:
nano /etc/systemd/system/node_exporter.service
Añade las siguientes líneas:
[Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=prometheus ExecStart=/etc/prometheus/node_exporter/node_exporter [Install] WantedBy=default.target
Guarda y cierra el archivo y vuelve a cargar el demonio systemd para aplicar los cambios:
systemctl daemon-reload
A continuación, inicia el servicio node_exporter y habilítalo para que se inicie al reiniciar el sistema:
systemctl start node_exporter
systemctl enable node_exporter
Puedes comprobar el estado del node_exporter con el siguiente comando:
systemctl status node_exporter
Obtendrás la siguiente salida:
? node_exporter.service - Node Exporter Loaded: loaded (/etc/systemd/system/node_exporter.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2021-10-17 05:38:20 UTC; 4s ago Main PID: 513 (node_exporter) Tasks: 4 (limit: 2341) Memory: 4.7M CPU: 11ms CGroup: /system.slice/node_exporter.service ??513 /etc/prometheus/node_exporter/node_exporter Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=thermal_zone Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=time Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=timex Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=udp_queues Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=uname Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=vmstat Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=xfs Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.382Z caller=node_exporter.go:115 collector=zfs Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.383Z caller=node_exporter.go:199 msg="Listening on" address=:91> Oct 17 05:38:20 debian11 node_exporter[513]: level=info ts=2021-10-17T05:38:20.383Z caller=tls_config.go:191 msg="TLS is disabled." http2=false
Por defecto, node_exporter escucha en el puerto 9100. Puedes comprobarlo con el siguiente comando:
ss -antpl | grep 9100
Deberías obtener la siguiente salida:
LISTEN 0 4096 *:9100 *:* users:(("node_exporter",pid=513,fd=3))
Añade node_exporter al servidor Prometheus
A continuación, tendrás que añadir el node_exporter al archivo de configuración de Prometheus. Puedes hacerlo editando el archivo de configuración por defecto de Prometheus:
nano /etc/prometheus/prometheus.yml
En la línea‘scrape_config‘, añade el nuevo job_name node_exporter añadiendo las siguientes líneas.
- job_name: 'node_exporter' static_configs: - targets: ['localhost:9100']
Guarda y cierra el archivo y luego reinicia el servicio de Prometheus para aplicar los cambios:
systemctl restart prometheus
Verifica Prometheus y node_exporter
Ahora, ve al panel de control de Prometheus y haz clic en Estado => Objetivo. Deberías ver tu node_exporter en la siguiente pantalla:
Ahora, vuelve a la página de inicio de Prometheus y escribe node_memory_MemAvailable_bytes en el campo de consulta y haz clic en el botón«Ejecutar«. Obtendrás el siguiente resultado:
También puedes obtener los datos de las métricas de node_exporter utilizando la URL http://your-server-ip:9100/metrics como se muestra a continuación:
Conclusión
Enhorabuena! has instalado con éxito Prometheus con node_exporter en Debian 11. No dudes en preguntarme si tienes alguna duda. Para más información, visita la documentación oficialde Prometheus.