Prometheus: мониторинг «на максималках»
У системы мониторинга Prometheus довольно интересная история – сервис был впервые создан на SoundCloud, а в 2016 присоединился к Cloud Native Computing Foundation. Это прояснило структуру платформы, а Prometheus monitoring стал вторым размещенным проектом после Kubernetes. Prometheus поддерживается сообществом, у него открытый исходных код, и с момента появления в 2012 году проект признан многими организациями как надежная система мониторинга. Большая часть компонентов сервиса написана на языке Go. Такое решение упрощает сборку и развертывание в виде бинарных файлов.
Особенности Prometheus мониторинга
У Prometheus есть необычная особенность: система самостоятельно затягивает метрики с многочисленных заданных сервисов. Благодаря этому ряд данных всегда свободен, а пользователь может быть уверенным в надежности Prometheus и мониторинге сети. Метрики заходят с точек http в Prometheus для настроенных целей сбора данных.
А вот базовые характеристики сервиса:
- Prometheus monitoring основан на многомерной модели данных. Включена информация о временных рядах, которые определяются по названию метрики и парам key-value.
- Используется гибкий язык запросов PromQL.
- Отсутствует зависимость от распределенного хранилища данных – серверные узлы работают автономно.
- Сбор временных рядов осуществляется через модель pull по HTTP, а передача – через промежуточный шлюз.
- Цели Prometheus мониторинга задаются с помощью статической конфигурации или определением служб.
- Система поддерживает несколько режимов дашбордов и построения графиков Prometheus metrics.
Компоненты Prometheus
Чтобы разобраться с Prometheus настройкой, начнем с основных компонентов сервиса.
- Основной (главный) сервер собирает и хранит данные временных рядов
- Клиентские библиотеки (для инструментального кода)
- Шлюз push gateway для поддержки краткосрочных заданий
- Exporters для сервисов типа StatsD, HAProxy, Graphite
- Диспетчер предупреждений (Prometheus alert manager)
- Другие инструменты поддержки.
Не все части экосистемы Prometheus обязательны к установке и использованию.
Данные Prometheus metrics извлекаются из инструментальных заданий (instrumented jobs). Происходит это либо напрямую, или через push gateway для краткосрочных заданий. Шлюз собирает и хранит все образцы локально, запуская правила конкретно для этих данных. Это нужно, чтобы агрегировать и фиксировать новые временные ряды из имеющихся данных Prometheus metrics. Второй вариант – для создания предупреждений (Prometheus alert).
Для визуализации данных можно использовать Prometheus с Grafana или другими потребителями API. У Prometheus есть и свой веб-интерфейс, но довольно минималистичный. Поэтому сами разработчики проекта советуют использовать связку Prometheus и Grafana для более приятной визуализации.
Prometheus: настройка и запуск
Вкратце разберем, как происходит Prometheus настройка и запуск сервиса. Если у вас еще не стоит Prometheus, скачать его для вашей платформы можно на официальном ресурсе сервиса. Сервер Prometheus представлен в виде отдельного бинарного файла (prometheus или prometheus.exe для Prometheus на Windows). Запускаем файл и видим флажок –help, который поможет нам выбрать нужные опции.
После запуска файла настраиваем конфигурацию Prometheus config через YAML-файл. По умолчанию при загрузке Prometheus включен пример конфигурации в файле prometheus.yml. В примере есть три блока конфигурации: global, rule_files и scrape_configs.
Блок global управляет общей конфигурацией сервера Prometheus через две опции. Первая, scrape_interval, отвечает за то, как программа проверяет цели – условия можно настроить отдельно для каждой из них. Опция evaluation_interval управляет частотой оценки правил, которые используются для создания временных рядов и создания уведомлений.
Блок rule_files определяет локацию нужного нам правила, которое нужно загрузить. Блок scrape_configs отвечает за список ресурсов, которые проверяет система. Кстати, Prometheus может производить мониторинг в отношении самого себя, так как работает через точки HTTP. В базовой конфигурации есть файл, который отвечает за такой мониторинг – называется он prometheus.
И, наконец, чтобы запустить сервис, внесите изменения в директорию, где лежит бинарный файл Prometheus, и сделайте старт: ./prometheus –config.file=prometheus.yml. Статус процесса можно проверить на хосте http://localhost:9090.
Prometheus курсы
Prometheus – популярный инструмент мониторинга в коммьюнити DevOps. Поэтому на Prometheus курсы приходят как опытные девопсы, так и те, кто хочет развиваться в этой роли. Как освоить Prometheus и как получить сертификат о прохождении обучения?
Сейчас доступны обучающие программы по работе с Prometheus – в большинстве случаев их можно пройти онлайн, получив сертификат. Программы курсов включают не только работу непосредственно с Prometheus, но и интеграцию с другими инструментами DevOps. Например, Prometheus и Docker (для сбора метрик через Prometheus с Docker контейнеров) или Prometheus и Azure Monitor для адаптации сбора метрик для контейнеров. Еще удачный пример – Kubernetes Prometheus Operator. Эта утилита облегчает запуск Prometheus в Kubernetes для мониторинга сервисов K8s. Также есть вариант использования Prometheus с Zabbix – еще одной популярной системой мониторинга.
Также научиться работе с сервисом и получить сертификат можно и на курсах DevOps, программы которых часто включают этот девопс-инструмент. На подобных курсах вы сможете получить практические навыки работы с Prometheus в микросервисной архитектуре.
Prometheus используют для мониторинга сетевой инфраструктуры, сбора метрик, диагностирования проблем и формирования отчетов. Сервис подходит для мониторинга микросервисной архитектуры. В реальном времени Prometheus мониторит отдельные компоненты, как и всю систему. Кроме технических Prometheus проверяет и метрики, важные для бизнеса. Альтернативные платформы мониторинга значительно хуже справляются с подобными задачами. Prometheus выступает в роли полноценного решения для микросервисного подхода, поэтому систему используют как в небольших компаниях, так и крупных корпорациях.
Чтобы использовать Grafana в Prometheus, нужно установить этот сервис. Grafana устанавливается отдельно от коробочной версии Prometheus. Grafana устанавливается на http://localhost:3000, пароль – «admin» / «admin». Для начала работы создаем Prometheus data source в Grafana:
- Выбираем «cogwheel» на боковой панели Configuration menu
- Нажимаем «Data Sources»
- Нажимаем «Add data source»
- Выбираем тип «Prometheus»
- Задаем URL сервера Prometheus
- По желанию добавляем дополнительные источники
- Кликаем «Save & Test».
Теперь можно отслеживать мониторинг Prometheus через Grafana.