Prometheus — система мониторинга и сбора метрик с открытым исходным кодом, которая применяется для наблюдения за состоянием инфраструктуры и приложений. Система использует подход «pull». Это означает, что она самостоятельно собирает метрики с указанных источников через HTTP, используя эндпоинты, или targets. Prometheus хранит метрики как временные ряды, где каждый временной ряд имеет уникальное имя и набор меток, которые придают ему дополнительные атрибуты, например, имя сервера, тип запроса и т. п. Каждый временной ряд состоит из значений, связанных с меткой времени.
Архитектура Prometheus состоит из следующих основных компонентов:
- Prometheus Server — основной компонент, который собирает, сохраняет и запрашивает метрики.
- Exporters — специальные агенты или библиотеки, которые собирают метрики с различных приложений и систем, после чего предоставляют их Prometheus.
- Alertmanager — компонент для управления алертами и отправки уведомлений.
- Пользовательские клиенты — клиенты, которые отправляют данные в Push Gateway или прямо в Prometheus.
В настоящем руководстве рассмотрим, как установить Prometheus на виртуальный выделенный сервер, работающий под управлением Ubuntu 24.04.
Как установить Prometheus на Ubuntu
Перед началом установки нового программного обеспечения обновите списки пакетов в системе:
$ sudo apt update
Затем создайте системную группу с именем prometheus
:
$ sudo groupadd --system prometheus
Далее создайте системного пользователя с именем prometheus
, который будет принадлежать группе prometheus
. При этом у созданного пользователя не будет возможности войти в систему. Вместо этого, если пользователь попытается авторизоваться, то получит сообщение об отказе в доступе. Это необходимо для ограничения доступа данному пользователю, предназначенному только для работы службы Prometheus.
$ sudo useradd -s /sbin/nologin --system -g prometheus prometheus
Для хранения файлов конфигурации и библиотек Prometheus необходимо будет создать несколько каталогов. Во-первых, это каталог /etc/prometheus
. Он будет содержать настройки, необходимые для работы сервиса Prometheus и его веб-интерфейса.
$ sudo mkdir /etc/prometheus
Во-вторых, каталог /var/lib/prometheus
, в котором будут сохраняться данные, собираемые системой мониторинга во время своей работы. Это главный каталог для хранения временных рядов и метрик, которые Prometheus получает от отслеживаемых сервисов и устройств.
$ sudo mkdir /var/lib/prometheus
Теперь необходимо загрузить архив, содержащий дистрибутив устанавливаемого софта. Загрузить его можно, например, в каталог /tmp
. Поэтому сначала перейдите в данный каталог:
$ cd /tmp
Затем нужно определиться с версией устанавливаемого продукта. Перейдите на страницу загрузки Prometheus, укажите тип операционной системы linux
, её архитектуру amd64
и скопируйте ссылку на архив требуемой версии. В нашем примере мы устанавливаем релиз 2.53.2 LTS.
После чего при помощи скопированной ссылки и команды wget
загрузите архив на сервер:
$ wget https://github.com/prometheus/prometheus/releases/download/v2.53.2/prometheus-2.53.2.linux-amd64.tar.gz
По окончании загрузки распакуйте полученный файл архива:
$ tar -zxvf prometheus-2.53.2.linux-amd64.tar.gz
И перейдите в разархивированный каталог:
$ cd prometheus-2.53.2.linux-amd64/
Из этого каталога переместите исполняемые файлы prometheus
и promtool
в директорию /usr/local/bin
, которая в системах Linux как раз и предназначена для хранения программ и скриптов.
$ sudo mv prometheus /usr/local/bin
$ sudo mv promtool /usr/local/bin
В свою очередь, в ранее созданный каталог /etc/prometheus
переместите каталоги consoles
и console_libraries
:
$ sudo mv consoles /etc/prometheus
$ sudo mv console_libraries /etc/prometheus
Туда же переместите конфигурационный файл Prometheus, которым является prometheus.yml
:
$ sudo mv prometheus.yml /etc/prometheus
Для того, чтобы Prometheus имел доступ к своим исполняемым файлам, измените их владельца на пользователя prometheus
и группу prometheus
:
$ sudo chown prometheus:prometheus /usr/local/bin/prometheus
$ sudo chown prometheus:prometheus /usr/local/bin/promtool
Проделайте то же с каталогами Prometheus:
$ sudo chown -R prometheus:prometheus /etc/prometheus/consoles
$ sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
$ sudo chown -R prometheus:prometheus /etc/prometheus
$ sudo chown -R prometheus:prometheus /var/lib/prometheus
Создание и запуск службы Prometheus
Для того, чтобы Prometheus функционировал как сервис, необходимо создать соответствующую службу, запустить её и установить в автозагрузку.
Поэтому сначала создайте конфигурационный файл (Systemd Unit), который будет описывать службу Prometheus:
$ sudo nano /etc/systemd/system/prometheus.service
Файл Systemd Unit содержит инструкции, указывающие, как запускать, перезапускать, останавливать и управлять службой. В нашем случае вставьте в файл следующее содержимое:
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
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
[Install]
WantedBy=multi-user.target
Затем закройте файл prometheus.service
с сохранением внесённых изменений. После чего перезапустите конфигурацию systemd
, чтобы новые изменения вступили в силу при следующем запуске или перезапуске:
$ sudo systemctl daemon-reload
После чего запустите службу prometheus
:
$ sudo systemctl start prometheus
И, наконец, чтобы сервис стартовал вместе с запуском системы, необходимо установить его в автозагрузку:
$ sudo systemctl enable prometheus
А при помощи следующей команды вы сможете увидеть текущее состояние службы:
$ sudo systemctl status prometheus
Вывод команды должен выглядеть примерно таким образом:
Доступ к Prometheus через веб-интерфейс
Для доступа к веб-интерфейсу Prometheus по умолчанию использует TCP-порт 9090. Исходя из этого, вам нужно будет создать разрешающее правило для этого порта в случае, если ваш сервер защищён при помощи брандмауэра UFW.
$ sudo ufw allow 9090/tcp
При помощи следующей команды убедитесь, что брандмауэр использует данное правило:
$ sudo ufw status
Разрешающая запись, соответствующая TCP-порту 9090, должна находиться в списке правил UFW:
Теперь откройте браузер и в строку навигации введите запись вида http://X.X.X.X:9090
, где X.X.X.X
— IP-адрес виртуального сервера, на который установили Prometheus.