Cómo instalar la herramienta de monitoreo del sistema Prometheus en Debian 11

GUI de Prometeo

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 previos

  • Un servidor que ejecuta Debian 11.
  • Una contraseña de root está configurada 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: Anuncio

LISTEN 0      4096               *:9090            *:*    users:(("prometheus",pid=18415,fd=7))

Una vez que haya terminado, puede continuar con el siguiente paso.

Configurar 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 tablero de Prometheus usando la URL http://prometeo.ejemplo.com. Deberías ver la siguiente página:

GUI de Prometeo

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))

Agregue 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

Bajo la ‘scrape_config‘línea, añadir nueva nombre del trabajo 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, vaya al tablero de Prometheus y haga clic en el 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ás el siguiente resultado:

Memoria de nodo disponible

También puede obtener el nodo_exportador datos de métricas usando la URL http://su-servidor-ip:9100/metrics Como se muestra abajo:

métricas de node_exporter

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, visite el sitio web oficial Prometeo documentación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *