Знакомство с Prometheus. Часть 1: установка и настройка
Feb 15, 2016 21:30 · 478 words · 3 minute read
Принципиально новый инструмент для мониторинга и сбора метрик Prometheus от разработчиков SoundCloud порой называют системой мониторинга нового поколения. Давайте разберемся с его особенностями и компонентами!
Система мониторинга Prometheus состоит из следующих компонентов:
- сам сервер, который собирает метрики и хранит их в темпоральной базе данных;
- библиотеки для нескольких языков программирования (Go, Java, Python, Ruby, Bash, Node.js, Haskell, .NET/C#);
Pushgateway
— компонент для сбора метрик кратковременных процессов (или сервисов, защищённых фаерволлом);PromDash
— инструмент для создания дашбордов;- инструменты для экспорта данных из Statsd, Ganglia, HAProxy и т.д.;
AlertManager
— менеджер уведомлений;prometheus_cli
— клиент командной строки для выполнения запросов к данным.
Процедура установки не должна вызвать проблем:
echo 'deb http://deb.robustperception.io/ precise nightly' >> /etc/apt/sources.list
GET https://s3-eu-west-1.amazonaws.com/deb.robustperception.io/41EFC99D.gpg | apt-key add -
aptitude update && aptitude install prometheus node-exporter
С помощью приведённых команд мы установили сервер Prometheus, а также дополнительный компонент — node_exporter
, который собирает данные о состоянии сервера.
Примечание. Установка и настройка компонентов pushgateway
и alertmanager
в данной статье не рассматривается.
В конфигурационном файле /etc/prometheus/prometheus.yml
удалены настройки неиспользуемых компонентов pushgateway
и alertmanager
и на данном этапе он выглядит следующим образом:
global:
scrape_interval: "10s"
scrape_configs:
- job_name: "prometheus"
target_groups:
- targets:
- "localhost:9090"
- job_name: "node"
target_groups:
- targets:
- "localhost:9100"
Структуру конфигурационного файла рассмотрим подробнее. В секции global
могут быть описаны такие параметры:
scrape_interval
— интервал сбора метрик (общий для всех задач);evaluation_interval
— интервал сверки с правилами;rule_files
— файлы правил (о них поговорим в следующих статьях).
В секции scrape_configs
могут быть описаны такие параметры:
job_name
— имя задачи;scrape_interval
— интервал сбора метрик (переопределяет значение из секцииglobal
);scrape_timeout
— время ожидания данных;metrics_path
— ресурс, на который нужно передавать метрики;scheme
— протокол для передачи метрик;basic_auth
— данные для авторизации на сервере, с которого собираются метрики (username:<логин>
,password:<пароль>
);target_groups
— группы или отдельные сервисы, для которых собираются метрики.
Через минуту-вторую, как только node-exporter
соберет данные, можно будет их просмотреть в веб-интерфейсе по адресу http://[IP-адрес сервера]:9090.
В поле Expression выбираем метрику, для которой нужно отобразить график. Например, посмотрим на использование CPU — приведем метрику к виду sum(rate(node_cpu[5m])) by (mode)
и нажмем на кнопку Execute.
Можно для наглядности убрать с графика время простоя (idle
), тогда наша метрика будет выглядеть так sum(rate(node_cpu{mode!="idle"}[5m])) by (mode)
.
Над графиком расположена «панель управления» периодом отображения статистики.
Если у вас несколько серверов, с которых нужно собирать данные, то достаточно установить на каждый сервер пакет node-exporter
командой:
aptitude install node-exporter
дописать хосты в конфиг /etc/prometheus/prometheus.yml
на сервере Prometheus, например так:
...
- job_name: "node"
target_groups:
- targets:
- "jupiter:9100"
- "mars:9100"
- "saturn:9100"
- "venus:9100"
и перезапустить Prometheus для применения изменений.
В системе мониторинга Prometheus также предусмотрены дефолтные консоли для просмотра общей информации по серверу. Эти консоли находятся в каталоге /еtc/prometheus/consoles
, в браузере они доступны по адресу http://[IP-адрес сервера]:9090/consoles/<имя консоли>.html.
Можно создавать собственные консоли с помощью HTML-шаблонизатора Go и официальных инструкций от Prometheus или собирать дашборды с помощью PromDash (подробнее об этом читайте в следующей статье).