Установка и настройка Prometheus

    Команда Simple-Server
    03.06.2026
    16 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    1. Загрузка, распаковка и установка Prometheus

    Для развертывания системы мониторинга можно воспользоваться выделенным или облачным сервером Simple-Server, с которого Prometheus будет опрашивать работающее приложение, получая и обрабатывая данные о его состоянии.

    Впоследствии эти данные можно будет удаленно анализировать через панель управления в виде визуальных метрик.

    Конкретно в этом примере будет использоваться дистрибутив Ubuntu 22.04, запущенный в облачном сервере с 2 ядрами процессора и 4 гигабайтами оперативной памяти.**
    **

    Загрузка архива со сборкой

    Так как Prometheus написан на Golang, он распространяется в виде одного исполняемого файла, который можно скачать либо со страницы загрузок на официальном сайте, либо со страницы релизов репозитория GitHub.

    Вне зависимости от выбранного источника вы увидите список tar.gz-архивов с разными названиями.

    В каждом отдельном архиве лежит сборка (с указанием версии Prometheus) под конкретную операционную систему и архитектуру процессора. То есть схема обозначения следующая:

    prometheus-ВЕРСИЯ.СИСТЕМА-АРХИТЕКТУРА.tar.gz

    По названию СИСТЕМЫ понятно, для какой операционной системы предназначен архив. При этом darwin — это ядро macOS.

    Обратите внимание, что на странице релизов в GitHub есть дополнительная кнопка «Show all 38 assets». С помощью нее вы сможете увидеть полный список сборок под все возможные операционные системы и архитектуры процессоров.

    В отличие от GitHub, на официальном сайте есть удобный фильтр для поиска необходимой конфигурации.

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

    sudo wget https://github.com/prometheus/prometheus/releases/download/v2.45.3/prometheus-2.45.3.linux-amd64.tar.gz

    Обратите внимание, что в этом примере использовался сборка Prometheus версии «2.49.1 / 2024-01-15».

    Скачанный архив нужно извлечь. Это можно сделать с помощью стандартной утилиты tar:

    sudo tar -xzf prometheus*.tar.gz

    Архив, из которого выполнялась распаковка, теперь можно удалить:

    sudo rm prometheus*.tar.gz

    Благодаря звездочке * можно указать на архив без ввода его полного имени.

    По итогу мы получим новую директорию prometheus, внутри которой будет лежать 2 исполняемых файла, 2 папки с файлами конфигурации и 1 главный конфигурационный файл:

    • prometheus (исполняемый файл)

    • promtool (исполняемый файл)

    • consoles (папка)

    • console_libraries (папка)

    • prometheus.yml (файл)

    prometheus (исполняемый файл)

    promtool (исполняемый файл)

    console_libraries (папка)

    Перейдем в распакованную директорию:

    Благодаря приписке */ можно указать на распакованный архив без ввода полного имени каталога.**
    **

    Создание отдельного пользователя

    Для доступа к Prometheus рекомендуется создать отдельную пользовательскую группу, после чего добавить в нее нового системного пользователя с ограниченными правами доступа — это снизит риск несанкционированного доступа.

    Создаем группу prometheus:

    sudo groupadd --system prometheus

    Добавляем в нее пользователя с аналогичным именем — prometheus:

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

    В дальнейшем для этого пользователя мы назначим соответствующие права доступа к директориям Prometheus.**
    **

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

    sudo mv prometheus /usr/local/bin sudo mv promtool /usr/local/bin

    Теперь установим специальные привилегии для ранее созданного пользователя:

    sudo chown prometheus:prometheus /usr/local/bin/prometheus sudo chown prometheus:prometheus /usr/local/bin/promtool

    Далее нужно будет переместить папки с конфигурационными файлами в отдельные конфигурационные директории для Prometheus. Поэтому мы сперва создадим их:

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

    А далее переместим сами папки:

    sudo mv consoles /etc/prometheus sudo mv console_libraries /etc/prometheus

    Каталог /var/lib/prometheus пригодится позже.

    Точно так же скопируем основной конфигурационный файл:

    sudo mv prometheus.yml /etc/prometheus

    И не забудем про права доступа:

    sudo chown prometheus:prometheus /etc/prometheus sudo chown -R prometheus:prometheus /etc/prometheus/consoles sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries sudo chown -R prometheus:prometheus /var/lib/prometheus

    2. Конфигурация Prometheus

    Основным файлом конфигурации в Prometheus является prometheus.yml — в нем прописываются настройки объектов мониторинга, периодичность сбора данных, условия для системы уведомлений, а также методы обработки и хранения информации.**
    **

    Конфигурационный файл предназначен для настройки двух базовых функций Prometheus:

    • HTTP-запрос к указанным целям (target) мониторинга, результатом которого являются свежие данные от внешних систем

    • Обработка собранных данных на основании некоторых заранее описанных правил (rules), после которой либо отправляются предупреждения (если что-то не так), либо новые данные попадают в конечные метрики (если все впорядке)

    HTTP-запрос к указанным целям (target) мониторинга, результатом которого являются свежие данные от внешних систем

    Обработка собранных данных на основании некоторых заранее описанных правил (rules), после которой либо отправляются предупреждения (если что-то не так), либо новые данные попадают в конечные метрики (если все впорядке)

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

    • Файл конфигурации

    • Файлы правил**
      **

    Давайте напишем самый простой конфигурационный файл prometheus.yml, который будет иметь только одну объявленную цель для сбора данных — непосредственно сервер Prometheus.

    sudo nano /etc/prometheus/prometheus.yml

    Далее удалим его стандартное содержимое и добавим новый текст:

    global: scrape_interval: 15s # интервал сбора и очистки данных с целей evaluation_interval: 15s # интервал вычисления правил сбора rule_files: # - "first.rules" # - "second.rules" scrape_configs: - job_name: prometheus # имя задания, которое будет собирать данные static_configs: # целевые адреса целей в рамках указанного задания - targets: ['localhost:9090']

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

    promtool check config /etc/prometheus/prometheus.yml

    Самое главное — соблюдать количество отступов (табуляции) и понимать отношения (иерархию) ПОДпараметров и НАДпараметров.

    В файле конфигурации есть 3 основных блока:

    • global. Устанавливает глобальные настройки для сервера Prometheus. Опция scrape_interval указывает на частоту сбора данных с указанных целей, а evaluation_interval — на частоту обработки собранных данных на основе прописанных правил.

    • rule_files. Содержит список файлов, в которых прописаны правила оценки данных.

    • scrape_configs. Описывает ресурсы, которые должен отслеживать Prometheus. Этот блок делиться на задания (jobs), в рамках которых указывается список целей для сбора данных — IP адреса и порты.

    global. Устанавливает глобальные настройки для сервера Prometheus. Опция scrape_interval указывает на частоту сбора данных с указанных целей, а evaluation_interval — на частоту обработки собранных данных на основе прописанных правил.

    rule_files. Содержит список файлов, в которых прописаны правила оценки данных.

    scrape_configs. Описывает ресурсы, которые должен отслеживать Prometheus. Этот блок делиться на задания (jobs), в рамках которых указывается список целей для сбора данных — IP адреса и порты.

    Важно то, что Prometheus может предоставлять HTTP-данные о самом себе как о полноценной цели.

    Поэтому в описанной конфигурации в качестве примера указано только одно задание с именем prometheus, которое собирает информацию о состоянии сервера Prometheus.

    В настройках этого задания в качестве целевого адреса указан IP и порт Prometheus. Проще говоря, Prometheus будет опрашивать сам себя.**
    **

    3. Служба Prometheus в Systemd

    Чтобы Prometheus работал без перебоев, мы воспользуемся системной утилитой Systemd. Она будет управлять процессом Prometheus как фоновой службой, которая будет автоматически запускаться при старте системы и перезагружаться при аварийном завершении процесса.

    Для этого мы создадим отдельный конфигурационный файл в специальной директории Systemd, который будет описывать настройки службы Prometheus:

    sudo nano /etc/systemd/system/prometheus.service

    Файл наполним следующим содержимым:

    [Unit] Description=Background service of 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

    Разберем несколько важных параметров из этого файла:

    • В параметре User нужно ранее созданного пользователя prometheus.

    • В параметре Group указывается название основной группы пользователей, которым разрешен доступ. В нашем случае это prometheus.

    • Важно указать значение WorkingDirectory для корректной работы команды запуска процесса.

    • Опция ExecStart содержит команду запуска приложения. В этом файле она содержит символы обратного слэша \, которые нужны для корректной многострочной. С помощью флагов указываются пути до конфигурационного файла и ранее созданных директорий Prometheus.

    В параметре User нужно ранее созданного пользователя prometheus.

    В параметре Group указывается название основной группы пользователей, которым разрешен доступ. В нашем случае это prometheus.

    Важно указать значение WorkingDirectory для корректной работы команды запуска процесса.

    Опция ExecStart содержит команду запуска приложения. В этом файле она содержит символы обратного слэша \, которые нужны для корректной многострочной. С помощью флагов указываются пути до конфигурационного файла и ранее созданных директорий Prometheus.

    После сохранения файла необходимо перезагрузить Systemd, чтобы применить внесенные изменения:

    sudo systemctl daemon-reload

    Далее мы укажем Systemd запускать службу Prometheus при каждом старте системы:

    sudo systemctl enable prometheus

    После чего запустим службу вручную:

    sudo systemctl start prometheus

    Убедиться, что служба корректно работает, можно, узнав ее статус:

    sudo systemctl status prometheus

    Если Prometheus работает корректно, то среди консольного вывода будет параметр о положительном статусе службы:

    4. Веб-интерфейс Prometheus

    Основной веб-интерфейс программы открывается в браузере по адресу вашего сервера с указанием 9090 порта. То есть схема адреса Prometheus выглядит так:

    http://IP-адрес-сервера:9090

    Например, это может быть http://90.156.208.243:9090.

    Поэтому важно разрешить доступ по 9090 порту в вашем брандмауэре. Это делается так:

    Стандартный интерфейс Prometheus крайне неинформативен и неудобен. Его стоит использовать только во время первичной конфигурации программы, чтобы убедиться в корректности работы программы.

    Поэтому данные, собранные Prometheus, передаются внешним приложениям для аналитики и интерактивной визуализации показателей и графиков.

    Grafana — одно из таких многоплатформенных веб-приложений с открытым исходным кодом, которое предоставляет гибко настраиваемые диаграммы и графики для визуального анализа данных.

    У Simple-Server есть отдельная инструкция о том, как установить и настроить Grafana. В этой статье мы кратко рассмотрим установку Grafana с использованием уже готовой доски для отображения метрик.

    Обратите внимание, что для загрузки Grafana необходимо использовать зарубежный IP-адрес либо выполнять загрузку через «зеркало».**
    **

    Загрузка с российского IP через «зеркало»

    С российского IP-адреса загрузить Grafana не получится. Поэтому в этой инструкции мы будем использовать зеркало от компании Tencent.

    Мы сперва загружаем необходимую версию Grafana:

    Как видно, в этой инструкции используется версия 10.2.3 для архитектуры amd64.

    Далее устанавливаем ряд зависимостей, которые нужны для работы Grafana:

    apt install adduser libfontconfig1 musl -y

    На данном этапе возможна ошибка со «сломанными пакетами». Поэтому на всякий случай нужно выполнить исправление:

    sudo apt --fix-broken install

    После этого устанавливаем ранее загруженный пакет Grafana через пакетный менеджер dpkg:

    dpkg -i grafana-enterprise_*_amd64.deb

    Служба Grafana должна запуститься автоматически после завершения установки. Однако на всякий случай запустим ее вручную:

    sudo systemctl start grafana-server

    Также лучше добавить Grafana в список автозагрузки при старте системы:

    sudo systemctl enable grafana-server

    Состояние запущенной службы Grafana можно узнать так:

    sudo systemctl status grafana-server

    Если Grafana работает корректно, то среди консольного вывода будет параметр о положительном статусе службы:

    6. Интеграция Grafana с Prometheus

    Grafana работает на 3000 порту. Соответственно, схема адреса Grafana выглядит так:

    http://IP-адрес-сервера:3000

    Например, это может быть http://90.156.208.243:3000.

    Во время первичного входа в качестве логина и пароля вводится слово «admin». В дальнейшем данные для входа рекомендуется заменить.

    После входа в панель управления нужно:

    • Открыть страницу Connections

    • Перейти во вкладку Data Sources

    • Нажать на кнопку добавления новых источников — Add Data Source.

    Открыть страницу Connections

    Перейти во вкладку Data Sources

    Нажать на кнопку добавления новых источников — Add Data Source.

    Появится список возможных источников. Нас интересует Prometheus, поэтому выбираем его.

    Оказавшись на странице настройки подключения Grafana к Prometheus, указываем адрес и порт сервера, а все остальное оставляем как есть. В нашем случае это localhost (либо адрес вашего сервера) и стандартный порт 9090.

    Кликаем на Save and Test.**
    **

    Импорт доски для данных через ID

    В Grafana можно использовать разнообразные доски для отображения метрик. На официальном сайте Grafana есть небольшое руководство, рассматривающее создание собственной доски.

    Мы же воспользуемся готовой доской, которую можно найти на официальном сайте Prometheus. Она собирает стандартные данные из системы мониторинга.

    Чтобы автоматически добавить эту доску через панель управления Grafana, нужно:

    • Открыть страницу Dashboards

    • Нажать на кнопку New

    • Из выпадающего списка выбрать New dashboard

    • Нажать на кнопку Import dashboard

    • Ввести идентификатор доски, который указан на странице официального сайта. Это 3662

    • Нажать на кнопку Load

    Открыть страницу Dashboards

    Из выпадающего списка выбрать New dashboard

    Нажать на кнопку Import dashboard

    Ввести идентификатор доски, который указан на странице официального сайта. Это 3662

    Вас перекинет на страницу настроек доски. Даем ей имя и выбираем ранее созданный источник данных — Prometheus.

    После заполнения информации жмем Import.**
    **

    Импорт доски для данных через JSON

    В некоторых случаях возможны проблемы с доступом к серверам Prometheus в момент добавления доски через ID. В этом случае следует воспользоваться JSON-файлом.

    Для этого на веб-странице доски (на официальном сайте Prometheus) нужно нажать на кнопку Download JSON (вместо копирования ID), после чего начнется загрузка файла.

    Содержимое файла необходимо вставить на странице добавления доски в отдельное поле для JSON и нажать кнопку Load. После этого аналогичным образом заполнить информацию о доске и выбрать источник данных.

    Теперь, когда у вас есть готовая доска для отображения данных из Prometheus, вы можете настроить ее визуализацию через интерфейс панели управления Grafana.**
    **

    8. Настройка «экспортеров»

    Экспортеры — это программы-модули, которые собирают данные из внешних служб (MySQL, Nginx, Apache) и периодически отправляют их на основной сервер Prometheus.**
    **

    Экспортеры написаны на языке программирования Golang. Самым основным экспортером является Node_exporter — он собирает самые общие данные о состоянии сервера Prometheus.

    Давайте установим его через APT:

    sudo apt install prometheus-node-exporter

    Более свежие версии экспортера рекомендуется брать из официального репозитория Github.

    Соответственно, если вы скачали экспортер с GitHub, его сперва нужно распаковать:

    sudo tar -xvf node_exporter*amd64.tar.gz

    А далее скопировать исполняемые файлы экспортера в каталог /usr/local/bin:

    cp node_exporter-*amd64/node_exporter /usr/local/bin

    Обратите внимание, что ручное создание службы нужно только в том случае, если Node_exporter был загружен в виде архива с GitHub. Установка через APT автоматически создает конфигурацию для Systemd.

    Экспортер должен быть запущен в виде отдельной службы точно также, как и сервер Prometheus.

    Поэтому создадим для него конфигурацию в Systemd:

    sudo systemctl edit --full --force node_exporter.service

    Содержимое будет следующим:

    [Unit] Description= Service of Node Exporter Wants=network-online.target After=network-online.target [Service] User=prometheus Type=simple ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=multi-user.target

    Обратите внимание, что в параметре User указывается ранее созданный пользователь prometheus.

    Выполняем перезагрузку конфигураций служб:

    sudo systemctl daemon-reload

    И явно запускаем созданную только что созданную службу:

    sudo systemctl start node_exporter

    Вы можете убедиться в корректности работы экспортера открыв его через браузер. Введите в адресную строку адрес вашего сервера с указанием стандартного для Node_exporter порта (9100) и пути /metrics.

    Например, это может быть http://90.156.208.243:9100/metrics — примерно по такому адресу экспортер будет возвращать данные для метрик.**
    **

    Подключение Prometheus к Node_exporter

    Prometheus нужно явно указать, с каких экспортеров требуется собирать информацию.

    Это делается в основном конфигурационном файле в блоке scrape_configs, через добавление нового задания (jobs).

    Поэтому нам нужно будет открыть файл prometheus.yml:

    sudo nano /etc/prometheus/prometheus.yml

    И дописать туда следующие настройки:

    ... - job_name: 'prometheus_node_exporter' scrape_interval: 5s static_configs: - targets: ['localhost:9100'] # указываем адрес сервера и порт, на котором запущена служба Node_exporter

    Конкретно для этого задания мы указали интервал сбора данных в 5 секунд, в отличие от глобально установленных 15 секунд.

    Полный конфигурационный файл выглядит так:

    global: scrape_interval: 15s evaluation_interval: 15s rule_files: # - "first.rules" # - "second.rules" scrape_configs: - job_name: prometheus static_configs: - targets: ['localhost:9090'] - job_name: 'prometheus_node_exporter' scrape_interval: 5s static_configs: - targets: ['localhost:9100']

    Будьте внимательны — YAML-файлы имеют строгие правила форматирования, поэтому лишние или недостающие отступы будут приводить к ошибке запуска.

    Осталось только перезапустить службу Prometheus для обновления настроек:

    sudo systemctl restart prometheus

    Импорт доски для Node_exporter через ID

    Данные, собранные Node_exporter, можно передавать в Grafana для визуального вывода в виде метрик — абсолютно также, как это делается с данными от сервера Prometheus.

    Аналогично, нужно импортировать уже готовую доску, которая доступна на официальном сайте Grafana. Для этого:

    • Откройте страницу с досками (Dashboards) в панели управления Grafana

    • Нажмите на кнопку New

    • Из выпадающего списка выбрать New dashboard

    • Нажмите кнопку Import dashboard

    • Введите идентификатор доски, который указан на сайте Grafana — 1860

    • Нажмите на кнопку Load

    Откройте страницу с досками (Dashboards) в панели управления Grafana

    Из выпадающего списка выбрать New dashboard

    Нажмите кнопку Import dashboard

    Введите идентификатор доски, который указан на сайте Grafana — 1860

    Далее все так же, как и с подключением доски для Prometheus:

    • Даете имя доске

    • Выбираете в качестве источника данных Prometheus

    • Кликаете на кнопку Import

    Выбираете в качестве источника данных Prometheus

    Кликаете на кнопку Import

    Открывшуюся доску можно настроить по своему усмотрению.**
    **

    Импорт доски для Node_exporter через JSON

    Как уже упоминалось ранее, в некоторых случаях возможны проблемы с доступом к серверам Prometheus в момент добавления доски через ID. В этом случае используется JSON-файл, доступный на официальном сайте Prometheus на странице доски.

    Содержимое файла необходимо вставить на странице добавления доски в специальное поле для JSON и нажать кнопку Load , после чего заполнить данные о доске.**
    **


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны