Поиск по сайту:

Как установить инструмент мониторинга системы Prometheus на Debian 11


На этой странице

  1. Предпосылки
  2. Установить Прометей
  3. Создание служебного файла Systemd для Prometheus
  4. Настройка Nginx в качестве обратного прокси-сервера для Prometheus
  5. Доступ к панели инструментов Prometheus
  6. Установка и настройка node_exporter
  7. Добавить node_exporter на сервер Prometheus
  8. Проверьте Prometheus и node_exporter
  9. Заключение

Prometheus — это бесплатное веб-приложение для мониторинга с открытым исходным кодом, которое собирает метрики из ваших сервисов и сохраняет их в базе данных временных рядов. Конфигурация Prometheus по умолчанию экспортирует метрики только о себе. Но вы можете расширить его, установив экспортеры и другие программы. Он поддерживает многомерную модель данных, несколько режимов построения графиков и информационных панелей.

В этом посте мы покажем вам, как установить мониторинг Prometheus в Debian 11.

Предпосылки

  • Сервер под управлением Debian 11.
  • На сервере настроен пароль root.

Установить Прометей

Перед запуском рекомендуется создать выделенного пользователя и группу для Prometheus. Вы можете создать его с помощью следующей команды:

groupadd --system prometheus
useradd -s /sbin/nologin --system -g prometheus prometheus

Затем загрузите последнюю версию Prometheus, выполнив следующую команду:

curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest|grep browser_download_url|grep linux-amd64|cut -d '"' -f 4|wget -qi -

После загрузки Prometheus вы можете увидеть загруженный файл с помощью следующей команды:

ls -l

Вы должны увидеть следующий вывод:

-rw-r--r-- 1 root root 72638078 Oct  5 16:46 prometheus-2.30.3.linux-amd64.tar.gz

Затем извлеките загруженный файл с помощью следующей команды:

tar -xvf prometheus*.tar.gz

Затем измените каталог на извлеченный каталог с помощью следующей команды:

cd prometheus-2.30.3.linux-amd64

Затем создайте несколько необходимых каталогов с помощью следующей команды:

mkdir /etc/prometheus
mkdir /var/lib/prometheus

Затем скопируйте необходимые файлы конфигурации и инструменты с помощью следующих команд:

mv prometheus.yml /etc/prometheus/prometheus.yml
mv consoles/ console_libraries/ /etc/prometheus/
mv prometheus promtool /usr/local/bin/

Как только вы закончите, вы можете перейти к следующему шагу.

Создайте служебный файл Systemd для Prometheus

Далее вам нужно будет создать файл службы systemd для управления службой Prometheus. Вы можете создать его, выполнив следующую команду:

nano /etc/systemd/system/prometheus.service

Добавьте следующие строки:

[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

Сохраните и закройте файл, затем установите правильное право собственности и права доступа к каталогу конфигурации Prometheus:

chown -R prometheus:prometheus /etc/prometheus/
chmod -R 775 /etc/prometheus/
chown -R prometheus:prometheus /var/lib/prometheus/

Затем перезагрузите демон systemd, чтобы применить изменения:

systemctl daemon-reload

Затем запустите службу Prometheus и включите ее запуск при перезагрузке системы с помощью следующей команды:

systemctl start prometheus
systemctl enable prometheus

Вы можете проверить статус Prometheus с помощью следующей команды:

systemctl status prometheus

Вы получите следующий вывод:

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

По умолчанию Prometheus прослушивает порт 9090. Проверить это можно с помощью следующей команды:

ss -antpl | grep 9090

Вы должны увидеть следующий вывод:

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

Как только вы закончите, вы можете перейти к следующему шагу.

Настройте Nginx в качестве обратного прокси для Prometheus

Далее рекомендуется установить и настроить Nginx в качестве обратного прокси для Prometheus. Сначала установите пакет веб-сервера Nginx, используя следующую команду:

apt-get install nginx -y

После установки Nginx создайте файл конфигурации виртуального хоста Nginx с помощью следующей команды:

nano /etc/nginx/conf.d/prometheus.conf

Добавьте следующие строки:

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;
    }

}

Сохраните и закройте файл, затем проверьте Nginx на наличие синтаксической ошибки с помощью следующей команды:

nginx -t

Если все в порядке, вы получите следующий вывод:

nginx: configuration file /etc/nginx/nginx.conf test is successful

Наконец, перезапустите службу Nginx, чтобы применить изменения:

systemctl restart nginx

Вы также можете проверить статус службы Nginx, используя следующую команду:

systemctl status nginx

Вы должны получить следующий результат:

? 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.

На данный момент Nginx установлен и настроен для обслуживания Prometheus. Теперь вы можете перейти к следующему шагу.

Доступ к панели инструментов Prometheus

Теперь откройте веб-браузер и получите доступ к панели инструментов Prometheus, используя URL-адрес http://prometheus.example.com. Вы должны увидеть следующую страницу:

Установите и настройте node_exporter

node_exporter — это экспортер, который будет отслеживать и получать метрику сервера Prometheus. Сначала загрузите последнюю версию node_exporter с помощью следующей команды:

wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz

После завершения загрузки извлеките загруженный файл с помощью следующей команды:

tar -xvzf node_exporter-1.2.2.linux-amd64.tar.gz

Затем переместите извлеченный каталог в каталог /etc/prometheus/:

mv node_exporter-1.2.2.linux-amd64 /etc/prometheus/node_exporter

Затем установите правильное право собственности с помощью следующей команды:

chown -R prometheus:prometheus /etc/prometheus/node_exporter

Затем создайте файл службы systemd для управления службой node_exporter:

nano /etc/systemd/system/node_exporter.service

Добавьте следующие строки:

[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

Сохраните и закройте файл, затем перезагрузите демон systemd, чтобы применить изменения:

systemctl daemon-reload

Затем запустите службу node_exporter и включите ее запуск при перезагрузке системы:

systemctl start node_exporter
systemctl enable node_exporter

Вы можете проверить статус node_exporter с помощью следующей команды:

systemctl status node_exporter

Вы получите следующий вывод:

? 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

По умолчанию node_exporter прослушивает порт 9100. Вы можете проверить это с помощью следующей команды:

ss -antpl | grep 9100

Вы должны получить следующий результат:

LISTEN 0      4096               *:9100            *:*    users:(("node_exporter",pid=513,fd=3))

Добавьте node_exporter на сервер Prometheus

Далее вам нужно будет добавить node_exporter в файл конфигурации Prometheus. Вы можете сделать это, отредактировав файл конфигурации Prometheus по умолчанию:

nano /etc/prometheus/prometheus.yml

Под строкой scrape_config добавьте новое имя_задачи node_exporter, добавив следующие строки.

  - job_name: 'node_exporter'
    static_configs:
    - targets: ['localhost:9100']

Сохраните и закройте файл, затем перезапустите службу Prometheus, чтобы изменения вступили в силу:

systemctl restart prometheus

Проверьте Prometheus и node_exporter

Теперь перейдите на панель инструментов Prometheus и нажмите Статус => Цель. Вы должны увидеть свой node_exporter на следующем экране:

Теперь вернитесь на домашнюю страницу Prometheus, введите node_memory_MemAvailable_bytes в поле запроса и нажмите кнопку «Выполнить». Вы получите следующий результат:

Вы также можете получить данные метрик node_exporter, используя URL-адрес http://your-server-ip:9100/metrics, как показано ниже:

Заключение

Поздравляем! вы успешно установили Prometheus с помощью node_exporter в Debian 11. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы. Для получения дополнительной информации посетите официальную документацию Prometheus.