- Что такое Prometheus
- Для чего нужен Prometheus
- Где используется Prometheus
- Основные компоненты Prometheus
- Подготовка к установке
- Как установить Prometheus
- Как настроить Prometheus
- Настройка службы Prometheus в Systemd
- Как открыть интерфейс Prometheus
- Визуализация и интеграция с Grafana
- Заключение
В этой статье мы покажем, как установить и настроить Prometheus на Ubuntu 24.04.
Что такое Prometheus
Prometheus – это система мониторинга и сбора метрик с открытым исходным кодом. Она разработана для наблюдения за состоянием приложений, серверов и инфраструктуры.
Проект появился в компании SoundCloud и быстро стал одним из самых популярных инструментов мониторинга благодаря простоте настройки, гибкости и высокой надежности. Сегодня Prometheus активно развивается в составе экосистемы Cloud Native Computing Foundation (CNCF).
В основе работы Prometheus лежит модель pull-мониторинга: сервер Prometheus сам обращается к указанным целевым системам по HTTP и получает свежие данные. Благодаря этому метрики собираются централизованно, а конфигурацию можно легко контролировать из одного места.
Полученные данные сохраняются во внутренней базе временных рядов (TSDB), где их удобно обрабатывать и использовать для анализа. Для работы с метриками используется собственный язык запросов PromQL, который позволяет выполнять фильтрацию, агрегирование и вычисления в реальном времени.
Для чего нужен Prometheus
Prometheus используют для централизованного наблюдения за состоянием сервисов и инфраструктуры. Он помогает администраторам и разработчикам контролировать поведение систем, быстро реагировать на сбои и анализировать производительность.
Систему используют, чтобы:
- собирать метрики с сервисов, приложений, серверов и сетевых компонентов;
- анализировать полученные данные с помощью запросов на языке PromQL;
- отслеживать изменения в поведении систем и рост нагрузки;
- выявлять сбои и аномалии на ранних этапах;
- отправлять уведомления при нарушении заданных условий;
- визуализировать показатели через внешние инструменты, такие как Grafana;
- использовать динамическое обнаружение целей мониторинга в средах вроде Kubernetes;
- хранить временные ряды метрик в собственной высокопроизводительной базе.
Где используется Prometheus
Prometheus используется в разных областях, включая:
- Серверные инфраструктуры. Система подходит для наблюдения за физическими и виртуальными серверами. Она фиксирует загрузку процессора, состояние дисков, использование памяти, сетевую активность и другие показатели, которые влияют на стабильность платформы. Это помогает заранее заметить рост нагрузки и предотвратить проблемы.
- Контейнерные среды и оркестраторы. Prometheus широко применяется в Kubernetes, Docker Swarm и других платформах, где количество сервисов может постоянно меняться. Сервер автоматически обнаруживает новые контейнеры или узлы и начинает собирать метрики.
- Микросервисная архитектура. В распределенных системах крайне важно понимать, как ведет себя каждый отдельный сервис и как они взаимодействуют между собой. Prometheus отслеживает задержки запросов, число ошибок, длительность обработки операций и другие показатели, влияющие на качество работы приложения.
- Сетевое оборудование и инфраструктура связи. Prometheus может собирать метрики с маршрутизаторов, коммутаторов, балансировщиков нагрузки и других сетевых устройств, если они поддерживают экспорт данных. Система помогает контролировать пропускную способность, уровень ошибок и стабильность сетевых каналов.
- Базы данных и хранилища. Prometheus интегрируется с PostgreSQL, MySQL, MongoDB, Redis, Kafka, RabbitMQ и другими системами хранения данных и очередей сообщений. Метрики помогают оценивать производительность, отслеживать задержки в обработке запросов и выявлять узкие места.
- DevOps и CI/CD-пайплайны. В процессе разработки и развертывания приложений важно отслеживать состояние инструментов сборки, контейнеризации и доставки. Prometheus может собирать метрики Jenkins, GitLab Runner, ArgoCD, FluxCD и других систем.
Основные компоненты Prometheus
Prometheus состоит из нескольких ключевых компонентов:
Сервер Prometheus
Центральная часть системы. Сервер выполняет два основных действия: регулярно опрашивает указанные цели мониторинга и сохраняет полученные данные во внутреннюю базу временных рядов. Также именно сервер обрабатывает запросы PromQL и выдает результаты для визуализации или внешних систем.
База данных временных рядов (TSDB-СУБД)
Встроенная база данных, которая оптимизирована для хранения временных рядов. TSDB сохраняет метрики в виде пар «метка – значение» и позволяет быстро извлекать данные для анализа.
Экспортеры
Отдельные процессы или программы, которые преобразуют данные из приложений, сервисов и оборудования в формат, понятный Prometheus.
Существует большое количество экспортеров: от универсального node_exporter для серверов до специализированных решений для PostgreSQL, Nginx, Redis, Kubernetes и сетевого оборудования.
Service Discovery
Механизм обнаружения целей мониторинга. Prometheus может автоматически находить сервисы в динамических средах: например, Kubernetes, Consul, EC2 или Docker Swarm. С ним при изменении инфраструктуры не нужно вручную прописывать список целей в конфигурации.
PromQL
Язык запросов Prometheus, который предназначен для выборки, фильтрации и обработки метрик. PromQL позволяет вычислять агрегаты, строить зависимости, анализировать временные промежутки и формировать данные для графиков и алертов.
Alertmanager
Отдельный компонент, который отвечает за обработку и доставку уведомлений. Он принимает алерты от Prometheus, группирует их, устраняет повторяющиеся сообщения и отправляет уведомления в нужные каналы: email, Telegram, Slack, вебхуки и другие системы.
Веб-интерфейс
Встроенный веб-интерфейс, доступный на порту 9090. Он позволяет быстро просматривать метрики, выполнять PromQL-запросы и проверять состояние целей. Интерфейс ограничен по возможностям, но полезен при отладке и проверке работы конфигурации.
Pushgateway
Компонент, который используется для сбора метрик от короткоживущих задач или процессов, которые нельзя опрашивать напрямую. Приложения отправляют данные в Pushgateway, а Prometheus забирает их уже в готовом виде.
Подготовка к установке
Для начала нужно подготовить сервер, на котором он будет работать. Например, вы можете выбрать облачный или выделенный сервер SpaceWeb. На нем Prometheus будет регулярно опрашивать ваше приложение, собирать метрики и сохранять их для дальнейшего анализа.
Убедитесь, что:
- сервер SpaceWeb работает на Ubuntu (лучше использовать LTS-версию, у нас – 24.04);
- подключились к серверу по SSH, и у вас есть права sudo;
- система обновлена и готова к установке пакетов.
Как установить Prometheus
Установка Prometheus начинается с загрузки его сборки. Prometheus распространяется в виде готовых бинарных файлов, которые упакованы в архивы tar.gz.
На странице загрузок – как на официальном сайте, так и в GitHub – представлен список архивов для разных операционных систем и процессорных архитектур. При выборе важно учитывать два параметра: под какую ОС предназначена сборка и под какую архитектуру процессора.
Для Ubuntu на стандартных серверах обычно выбирают вариант с указанием linux и amd64. Если планируете установить Prometheus на другой тип системы, просто выберите соответствующие параметры.
Скачать архив можно через утилиту wget, указав прямую ссылку на нужный файл:
Далее архив нужно распаковать:
Файл архива больше не понадобится, поэтому его можно удалить:
Появится директория с файлами Prometheus. Внутри находятся два исполняемых файла (prometheus и promtool), конфигурационные каталоги и основной файл настроек prometheus.yml. Чтобы продолжить установку, перейдите в эту директорию:
Перед запуском Prometheus мы рекомендуем создать отдельного системного пользователя и группу. Это позволит ограничить права доступа и повысить безопасность работы сервиса:
sudo useradd -s /sbin/nologin --system -g prometheus prometheus
Затем переместите исполняемые файлы в системный каталог, откуда они смогут запускаться как обычные программы:
sudo mv promtool /usr/local/bin
Назначьте владельцем нового пользователя, которого вы создали для Prometheus:
sudo chown prometheus:prometheus /usr/local/bin/promtool
Далее подготовьте системную структуру директорий. Prometheus хранит часть данных и конфигурации в отдельных каталогах, поэтому их нужно создать:
sudo mkdir /var/lib/prometheus
Переместите в них конфигурационные файлы и необходимые каталоги:
sudo mv console_libraries /etc/prometheus
sudo mv prometheus.yml /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
На этом установка Prometheus завершена.
Как настроить Prometheus
Вся основная конфигурация Prometheus хранится в файле prometheus.yml. Через него задаются параметры сбора данных, список целей для опроса, периодичность обработки метрик и подключаемые файлы правил. Файл определяет, что и как будет мониториться.
Откройте конфигурационный файл в текстовом редакторе:
Удалите стандартное содержимое и добавьте свою конфигурацию. Для начала можно создать минимальный рабочий вариант, который собирает данные только о самом Prometheus – это позволит проверить правильность установки.
Например:
scrape_interval: 10s # как часто опрашивать цели
evaluation_interval: 10s # как часто выполнять правила обработки
# сюда можно добавить файлы правил, когда они появятся
# - "/etc/prometheus/alerts.rules"
- job_name: 'local-monitoring'
static_configs:
- targets: ['127.0.0.1:9090']
Что здесь важно:
- global указывает базовые параметры работы сервера.
- scrape_interval определяет, как часто Prometheus отправляет запросы к целям;
- evaluation_interval указывает как часто анализируются данные по заданным правилам.
- rule_files позволяет подключить один или несколько файлов правил (например, файлы alerting rules). На старте их может не быть, поэтому блок можно оставить пустым.
- scrape_configs – основной раздел, в котором описываются задания (jobs). Каждое задание содержит набор целей – адресов и портов, с которых Prometheus должен собирать метрики.
В нашем примере Prometheus обращается к себе по 127.0.0.1:9090.
Если вы планируете мониторить внешнее приложение, можно позже добавить дополнительную цель, например:
static_configs:
- targets: ['10.0.0.5:8080']
Перед запуском убедитесь, что файл написан без ошибок. Для этого есть утилита promtool:
Важно! При работе с YAML необходимо строго соблюдать структуру отступов – в примерах используются пробелы, но можно применять и табуляцию. Главное – не смешивать их.
Настройка службы Prometheus в Systemd
Чтобы Prometheus работал постоянно и автоматически запускался после перезагрузки сервера, создается отдельная служба Systemd. Она гарантирует перезапуск процесса при сбоях и управляет его жизненным циклом.
Создайте файл конфигурации службы:
Вставьте следующее содержимое:
Description=Prometheus Monitoring Service
After=network-online.target
Wants=network-online.target
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 \
--web.enable-lifecycle
WantedBy=multi-user.target
Пояснения к настроенным параметрам:
- User / Group указывают пользователя и группу, от имени которых запускается процесс. Важно, чтобы эти сущности уже были созданы при установке.
- ExecStart – основная команда запуска.
Здесь задаются пути к конфигурации, каталогу с данными и шаблонам веб-интерфейса. Дополнительный параметр --web.enable-lifecycle позволяет перезагружать конфиг без остановки процесса. - Restart=on-failure определяет, что Systemd будет автоматически перезапускать Prometheus, если он аварийно завершится.
Сохранив файл, обновите Systemd, чтобы он подхватил новую службу:
Затем включите автоматический запуск:
И запустите службу:
Проверить статус работы можно командой:
Ожидаемый вывод должен содержать строку:
Если служба не запустилась, чаще всего проблема в конфигурационном файле – стоит проверить логи:
Как открыть интерфейс Prometheus
Веб-интерфейс Prometheus встроен в сам сервер и доступен по HTTP. Чтобы открыть интерфейс, достаточно указать в браузере IP-адрес вашего сервера и порт, на котором работает Prometheus.
Адрес будет выглядеть следующим образом:
Например:
Загрузится стандартная панель Prometheus. В ней можно просматривать метрики, выполнять запросы, проверять состояние целей и диагностировать работу системы.
Если интерфейс не открывается, скорее всего, доступ к порту 9090 заблокирован брандмауэром. Чтобы разрешить входящие соединения, выполните:
Визуализация и интеграция с Grafana
Встроенный интерфейс Prometheus подходит только для первичной проверки – он позволяет убедиться, что метрики собираются корректно, но возможности визуализации в нем минимальны. Для полноценного анализа данных обычно используют внешние инструменты, которые могут представить показатели в виде удобных диаграмм, графиков и интерактивных панелей.
К одним из самых популярных решений относится Grafana – веб-приложение с открытым исходным кодом, которое предлагает гибкую настройку дашбордов и большое количество готовых шаблонов. Grafana легко интегрируется с Prometheus: достаточно указать URL источника данных, и система автоматически начнет работать с метриками, которые собирает Prometheus.
О том, как установить Grafana, рассказали в статье «Пошаговая установка Grafana на Ubuntu».
Grafana работает на порту 3000, поэтому ее панель управления открывается по адресу:
Например:
При первом входе вас попросят ввести стандартные учетные данные: логин admin и пароль admin. Система сразу предложит изменить пароль – лучше сделайте это, чтобы защитить доступ к панели.
После входа можно подключить Prometheus как источник данных для визуализации. Для этого:
- Перейдите в раздел Connections.
- Откройте вкладку Data Sources.
- Нажмите Add data source, чтобы добавить новый источник.
- В списке поддерживаемых систем найдите Prometheus и выберите его.
- Откроется страница настройки подключения. В поле URL укажите адрес вашего Prometheus-сервера. Если Grafana установлена на той же машине, можно использовать:
или IP-адрес сервера:
Остальные параметры можно оставить по умолчанию.
6. Чтобы подтвердить настройки, нажмите Save & Test. Если соединение установлено успешно, Grafana сообщит об этом.
Заключение
Prometheus давно зарекомендовал себя как надежный инструмент для наблюдения за состоянием сервисов и инфраструктуры. Он показывает, как системы реагируют на нагрузку, какие участки работают нестабильно и какие метрики требуют повышенного внимания.
Если не хочется развертывать всю систему вручную, в SpaceWeb доступно готовое решение VPS с Prometheus + Grafana. Оно позволяет получить визуальные панели и метрики прямо на своем виртуальном сервере. Все работает в единой среде, а данные остаются под вашим полным контролем – удобный способ организовать мониторинг без лишних усилий.