Мониторинговый стек на базе 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¶
Для установки данного ПО с использованием API следуйте этой инструкции.