Знакомство с Prometheus. Часть 1: установка и настройка

Feb 15, 2016 21:30 · 478 words · 3 minute read prometheus monitoring

Принципиально новый инструмент для мониторинга и сбора метрик 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 (подробнее об этом читайте в следующей статье).

tweet Share