Prometheus es una aplicación de monitoreo gratuita, de código abierto y basada en la web que recopila métricas de sus servicios y las almacena en una base de datos de series temporales. La configuración predeterminada de Prometheus solo exporta métricas sobre sí mismo. Pero puede ampliarlo instalando exportadores y otros programas. Admite un modelo de datos multidimensional, múltiples modos de gráficos y tableros.
En esta publicación, le mostraremos cómo instalar el monitoreo de Prometheus en Debian 11.
Requisitos
- Un servidor que ejecuta Debian 11.
- Se configura una contraseña raíz en el servidor.
Instalar Prometeo
Antes de comenzar, se recomienda crear un usuario y un grupo dedicados para Prometheus. Puedes crearlo usando el siguiente comando:
groupadd --system prometheus
useradd -s /sbin/nologin --system -g prometheus prometheus
A continuación, descargue 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 que se descarga Prometheus, puede ver el archivo descargado usando el siguiente comando:
ls -l
Debería ver el siguiente resultado:
-rw-r--r-- 1 root root 72638078 Oct 5 16:46 prometheus-2.30.3.linux-amd64.tar.gz
A continuación, extraiga el archivo descargado con el siguiente comando:
tar -xvf prometheus*.tar.gz
A continuación, cambie el directorio al directorio extraído con el siguiente comando:
cd prometheus-2.30.3.linux-amd64
Luego, cree algunos directorios requeridos usando el siguiente comando:
mkdir /etc/prometheus
mkdir /var/lib/prometheus
A continuación, copie las herramientas y los archivos de configuración necesarios 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 haya terminado, puede continuar con el siguiente paso.
Crear un archivo de servicio de Systemd para Prometheus
A continuación, deberá crear un archivo de servicio systemd para administrar el servicio Prometheus. Puede crearlo ejecutando el siguiente comando:
nano /etc/systemd/system/prometheus.service
Agregue 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
Guarde y cierre el archivo, luego establezca la propiedad y el permiso adecuados para 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, vuelva a cargar el demonio systemd para aplicar los cambios:
systemctl daemon-reload
A continuación, inicie el servicio Prometheus y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:
systemctl start prometheus
systemctl enable prometheus
Puede verificar el estado del Prometheus con el siguiente comando:
systemctl status prometheus
Obtendrá el siguiente resultado:
? 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>
De forma predeterminada, Prometheus escucha en el puerto 9090. Puede verificarlo con el siguiente comando:
ss -antpl | grep 9090
Debería ver el siguiente resultado:
LISTEN 0 4096 *:9090 *:* users:(("prometheus",pid=18415,fd=7))
Una vez que haya terminado, puede continuar con el siguiente paso.
Configure Nginx como proxy inverso para Prometheus
A continuación, se recomienda instalar y configurar Nginx como proxy inverso para Prometheus. Primero, instale el paquete del servidor web Nginx usando el siguiente comando:
apt-get install nginx -y
Una vez que Nginx esté instalado, cree un archivo de configuración de host virtual de Nginx con el siguiente comando:
nano /etc/nginx/conf.d/prometheus.conf
Agregue 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;
}
}
Guarde y cierre el archivo, luego verifique el Nginx para cualquier error de sintaxis con el siguiente comando:
nginx -t
Si todo está bien, obtendrá el siguiente resultado:
nginx: configuration file /etc/nginx/nginx.conf test is successful
Finalmente, reinicie el servicio Nginx para aplicar los cambios:
systemctl restart nginx
También puede verificar el estado del servicio Nginx usando el siguiente comando:
systemctl status nginx
Deberías obtener el siguiente resultado:
? 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 funcionar con Prometheus. Ahora puede continuar con el siguiente paso.
Acceder al panel de control de Prometheus
Ahora, abra su navegador web y acceda al panel de Prometheus usando la URL http://prometheus.example.com . Debería ver la siguiente página:

Instalar y configurar node_exporter
node_exporter es un exportador que monitoreará y obtendrá la métrica del servidor Prometheus. Primero, descargue la última versión de node_exporter usando 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 que se complete la descarga, extraiga el archivo descargado con el siguiente comando:
tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gz
A continuación, mueva el directorio extraído al directorio /etc/prometheus/:
mv node_exporter-1.2.2.linux-amd64 /etc/prometheus/node_exporter
A continuación, establezca la propiedad adecuada con el siguiente comando:
chown -R prometheus:prometheus /etc/prometheus/node_exporter
A continuación, cree un archivo de servicio systemd para administrar el servicio node_exporter:
nano /etc/systemd/system/node_exporter.service
Agregue 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
Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd para aplicar los cambios:
systemctl daemon-reload
A continuación, inicie el servicio node_exporter y habilítelo para que se inicie al reiniciar el sistema:
systemctl start node_exporter
systemctl enable node_exporter
Puede comprobar el estado de node_exporter con el siguiente comando:
systemctl status node_exporter
Obtendrá el siguiente resultado:
? 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
De forma predeterminada, node_exporter escucha en el puerto 9100. Puede verificarlo con el siguiente comando:
ss -antpl | grep 9100
Deberías obtener el siguiente resultado:
LISTEN 0 4096 *:9100 *:* users:(("node_exporter",pid=513,fd=3))
Agregar node_exporter al servidor Prometheus
A continuación, deberá agregar node_exporter al archivo de configuración de Prometheus. Puede hacerlo editando el archivo de configuración predeterminado de Prometheus:
nano /etc/prometheus/prometheus.yml
Debajo de 'scrape_config ' línea, agregue nuevo job_name node_exporter agregando las siguientes líneas.
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
Guarde y cierre el archivo, luego reinicie el servicio Prometheus para aplicar los cambios:
systemctl restart prometheus
Verificar Prometheus y node_exporter
Ahora, ve al panel de control de Prometheus y haz clic en Estado => Objetivo . Debería ver su 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 haga clic en 'Ejecutar ' botón. Obtendrá el siguiente resultado:

También puede obtener el node_exporter datos de métricas usando la URL http://your-server-ip:9100/metrics como se muestra a continuación:

Conclusión
¡Felicidades! Ha instalado correctamente Prometheus con node_exporter en Debian 11. No dude en preguntarme si tiene alguna pregunta. Para obtener más información, visita la documentación oficial de Prometheus.