Перейти к содержанию

Мониторинговый стек на базе Prometheus

В этой статье

Информация

Мониторинговый стек на базе Prometheus представляет собой комплексное решение для всестороннего мониторинга ИТ-инфраструктуры, приложений и сервисов. В его основе лежит система Prometheus, которая обеспечивает сбор, хранение и запросы метрик от различных источников. Дополнительные компоненты, такие как Alertmanager, Grafana, Node Exporter, Blackbox Exporter и cAdvisor, расширяют возможности мониторинга за счет алертинга, визуализации данных, проверки доступности сервисов и сбора дополнительных метрик. Интеграция с Nginx и Certbot позволяет автоматически управлять SSL-сертификатами. В совокупности это решение предоставляет инструменты для контроля производительности, обнаружения проблем и своевременных оповещений о критических инцидентах.

Основные возможности мониторингового стека на базе Prometheus

  • Сбор метрик: Prometheus собирает метрики от различных источников - серверов, контейнеров, сервисов с помощью экспортеров Node Exporter, Blackbox Exporter и cAdvisor. Собираются как системные метрики (загрузка CPU, RAM, диски), так и метрики самих приложений.
  • Визуализация данных: интеграция Grafana и Prometheus позволяет строить информативные дашборды для визуализации собранных метрик в виде графиков, гистограмм и других методов визуализации.
  • Оповещения: Alertmanager в связке с Prometheus обеспечивает систему алертинга - оповещения при достижении метриками определенных условий (правил). Алерты могут отправляться различными каналами - электронная почта, Telegram (через интеграцию с Telegram ботом) и т.д.
  • Управление TLS/SSL сертификатами: Nginx совместно с Certbot автоматизирует получение и обновление Let's Encrypt SSL сертификатов для веб-сервисов.
  • Контроль доступности сервисов: Blackbox-exporter позволяет активно проверять доступность различных веб-сайтов, API, TCP-сервисов путем опроса их по расписанию.
  • Мониторинг Docker: cAdvisor дает подробную информацию о ресурсах, потребляемых Docker контейнерами в этом окружении
  • Открытый исходный код: Prometheus является открытым проектом с активным сообществом разработчиков и пользователей.

Особенности сборки

  • Возможна установка на Ubuntu 20.04+, AlmaLinux 8/9, RockyLinux 8/9;
  • Время на установку 15-20 минут вместе с OS;
  • Основные конфигурационные файлы Prometheus и Alertmanager находятся в директории /root/prometheus;
  • Контейнер с Telegram ботом для Prometheus использует образ tienbm90/prometheus-bot:0.0.1. Монтирует два тома:
    • /root/prometheus_bot/tg_bot для хранения файлов Telegram бота;
    • /root/prometheus_bot/tg_bot/config.yml для хранения конфигурационного файла.
  • Использует порт 9087 для доступа к боту. Всегда перезапускается при остановке;
  • Контейнер с Alertmanager для Prometheus использует образ prom/alertmanager:v0.24.0. Связан с контейнером prometheus_bot. Использует порт 9093 для доступа к веб-интерфейсу. Монтирует том ./alertmanager для хранения конфигурационных файлов. Перезапускается, если был остановлен не вручную
  • Контейнер с Grafana использует образ grafana/grafana:10.1.9. Монтирует два тома:
    • /data/grafana/datasources для хранения источников данных;
    • /var/lib/docker/volumes/grafana-data для хранения данных Grafana.
  • Использует порт 3000 для доступа к веб-интерфейсу Grafana. Перезапускается, если был остановлен не вручную;
  • Контейнер с Node Exporter использует образ prom/node-exporter. Монтирует тома /proc, /sys, /для доступа к системным метрикам. Использует порт 9100 для сбора метрик. Всегда перезапускается при остановке;
  • Контейнер с cAdvisor использует образ gcr.io/cadvisor/cadvisor. Монтирует тома /, /var/run,/sys, /var/lib/docker/ для доступа к метрикам Docker. Использует порт 8080 для доступа к веб-интерфейсу cAdvisor. Всегда перезапускается при остановке;
  • Контейнер с Blackbox Exporter использует образ prom/blackbox-exporter:v0.25.0. Монтирует том ./blackboxexporter/ для хранения конфигурационного файла. Использует порт 9115 для доступа к экспортеру. Запускает Blackbox Exporter с конфигурационным файлом из /root/prometheus/blackboxexporter/config.yml. Всегда перезапускается при остановке.
  • Контейнер с Nginx и Certbot использует образ jonasal/nginx-certbot. Устанавливает переменную окружения CERTBOT_EMAIL. Загружает переменные окружения из файла /data/nginx/nginx-certbot.env. Использует порты 80 и 443 для HTTP и HTTPS. Монтирует два тома:
    • /var/lib/docker/volumes/nginx_secrets для хранения SSL-сертификатов;
    • /data/nginx/user_conf.d для хранения пользовательских конфигураций Nginx.
  • Перезапускается, если был остановлен не вручную.

Веб-интерфейс будет доступен по ссылке: https://{Server_ID_from_Invapi}.hostkey.in

Веб-интерфейсы отдельных приложений будут доступны по ссылкам:

  • Alertmanager: http://{Server_IP_from_Invapi}:9093;
  • Grafana: http://{Server_IP_from_Invapi}:3000. При первой авторизации используются учетные данные - admin/admin;
  • Node Exporter: http://{Server_IP_from_Invapi}:9100;
  • cAdvisor: http://{Server_IP_from_Invapi}:8080;
  • Blackbox Exporter: http://{Server_IP_from_Invapi}:9115.

Начало работы после развертывания Prometheus

Управление сервисом осуществляется в панели управления Prometheus с веб-интерфейсом, ссылка на которую расположена в Invapi. Данные для авторизации, которые можно найти или во вкладке Info >> Tags панели управления сервером или в присланном e-mail:

  • Ссылка: в теге webpanel;
  • Логин и Пароль: приходят в письме на вашу электронную почту при сдаче сервера.

Стартовый экран Prometheus

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

Пункты меню:

  • Alerts - показывает текущие предупреждения и оповещения, сгенерированные правилами Prometheus.
  • Graph - позволяет визуализировать и анализировать данные метрик с помощью графиков.
  • Status - отображает общее состояние системы мониторинга Prometheus и его компонентов.
  • Help - предоставляет доступ к документации и справочным материалам по Prometheus.

Настройки:

  • Use local time - показывать время на графиках в локальном часовом поясе пользователя.
  • Enable query history - сохранять историю запросов для повторного использования.
  • Enable autocomplete - включить автодополнение при вводе запросов.
  • Enable highlighting - подсвечивать синтаксис запросов.
  • Enable linter - включить проверку синтаксиса запросов.

Строка Expression (press Shift+Enter for newlines) с кнопкой Execute - поле для ввода запросов к данным метрик, позволяет использовать многострочные запросы и выполнять их нажатием кнопки Execute.

Пункты Table и Graph - позволяют выбрать способ отображения результатов запроса: в виде таблицы (Table) или графика (Graph).

Кнопки:

  • Add Panel - добавить новую панель для отображения результатов запроса.
  • Remove Panel - удалить существующую панель.

Примечание

Подробная информация по основным настройкам Zabbix server содержится в документации разработчиков.

Настройка Telegram бота

В данной установке имеется Telegram бот, который при необходимости можно сразу настроить для работы. Конфигурационные файлы бота находятся в директории /root/prometheus_bot. Подробная инструкция по настройке бота содержится в документации разработчиков.

Grafana

Grafana - программное обеспечение для визуализации и мониторинга данных в реальном времени. Может использоваться для отображения метрик системного мониторинга, IoT-данных и событий журнала. Поддерживает множество источников данных, включая базы данных (например, MySQL, PostgreSQL), сервисы облачных провайдеров (например, AWS, Google Cloud) и системы мониторинга (например, Prometheus). Grafana предоставляет гибкую конфигурацию дашборда для создания персонализированных интерфейсов, а также имеет широкий спектр плагинов и интеграций с другими инструментами

Веб-интерфейс будет доступен по ссылке: http://{Server_IP_from_Invapi}:3000.

Информация

Подробная инструкция по работе Grafana содержится в документации разработчиков

Заказ сервера Prometheus с помощью API

curl -s "https://invapi.hostkey.ru/eq.php" -X POST \
--data "action=order_instance" \
--data "token=" \
--data "deploy_period=" \
--data "deploy_notify=" \
--data "email=" \
--data "pin=" \
--data "id=" \
--data "os_id=" \
--data "root_pass=" \
--data "hostname=" \
--data "ssh_key=" \
--data "post_install_callback=" \
--data "post_install_script=" \
--data "reinstall_key=" \
--data "os_name=" \
--data "imitate_deploy=" \
--data "imitate_error=0" \
--data "own_os=" \
--data "jenkins_task=" \
--data "traffic_plan=" \
--data "invoice_relid=" \
--data "preset=" \
--data "location_name=" \