Как установить инструмент мониторинга системы Prometheus на Debian 11
На этой странице
- Предпосылки
- Установить Прометей
- Создание служебного файла Systemd для Prometheus
- Настройка Nginx в качестве обратного прокси-сервера для Prometheus
- Доступ к панели инструментов Prometheus
- Установка и настройка node_exporter
- Добавить node_exporter на сервер Prometheus
- Проверьте Prometheus и node_exporter
- Заключение
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.