Мониторинг нужен всем: и серверам крупных технологических компаний и домашним Raspberry PI. Мониторинг позволяет узнать, когда сервер выходит из строя, когда заканчивается дисковое пространство и даже когда подходит время апгрейда.

В этой статье рассмотрим настройку базового мониторинга с помощью Prometheus, Node Exporter и Grafana.

Обзор решения

  • Основной компонент — Prometheus. Prometheus получает метрики из разных сервисов и собирает их в одном месте.

  • Node exporter — небольшое приложение, собирающее метрики операционной системы и предоставляющее к ним доступ по HTTP. Prometheus собирает данные с одного или нескольких экземпляров Node Exporter.

  • Grafana — это вишенка на торте. Grafana отображает данные из Prometheus в виде графиков и диаграмм, организованных в дашборды.

Примечание — в этом руководстве используется Ubuntu, но все эти инструменты поддерживаются и другими дистрибутивами Linux и даже Windows.

Приступаем к работе

Node Exporter

Первый шаг — установка Node Exporter. Его можно найти на github по ссылке ниже. На момент написания статьи последняя версия 0.18.1.

https://github.com/prometheus/node_exporter

Node Exporter распространяется в виде одного бинарного файла, который можно запустить из любого места в системе. Так что установка довольно проста. После запуска переходим в браузере по адресу "<server_address>:9100/metrics" и смотрим собираемые метрики.

Prometheus

Второй шаг — установка Prometheus и его настройка на сбор данных с установленного ранее Node Exporter. Ссылка на github ниже. На момент написания статьи последняя версия 2.13.1.

https://github.com/prometheus/prometheus

Установка Prometheus немного сложнее, но все же достаточно проста. Как и Node Exporter, это один бинарный файл, но дополнительно требуется файл конфигурации и папка для хранения данных.

Для настройки Prometheus на сбор метрик из ранее установленного экземпляра Node Exporter необходимо изменить файл конфигурации. Добавим в раздел static_configs еще один URL:

static_configs:
    - targets: [‘localhost:9090’, ‘localhost:9100’]

Здесь мы настроили Prometheus на сбор метрик из двух сервисов: самого себя (localhost:9090) и локального экземпляра Node Exporter (localhost:9100).

После запуска Prometheus можно открыть его пользовательский интерфейс в браузе��е "<server_address>:9090". На странице "/targets" отображается статус систем, с которых вы получаете метрики. Если все хорошо, то в колонке статуса (State) будет “UP”.

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

Grafana

Grafana — последний компонент нашего решения. Ее задача — подключиться к Prometheus и отобразить собранные метрики на графиках и дашбордах. Grafana взаимодействует только с Prometheus, так как все собираемые метрики хранятся там.

Grafana вы также можете найти на github:

https://github.com/grafana/grafana

Однако, установка Grafana еще несколько сложнее, чем Prometheus и Node Exporter, но, к счастью, на сайте Grafana есть отличная документация. Для Ubuntu все просто: скачайте deb-пакет и установите его:

wget https://dl.grafana.com/oss/release/grafana_6.4.3_amd64.deb
dpkg -i grafana_6.4.3_amd64.deb

После завершения установки перейдите в браузере по адресу "<server_address>:3000". Пользователь и пароль по умолчанию "admin"/"admin". При первом входе пароль необходимо будет изменить.

Настройка Grafana

После установки всех компонент можно приступить к настройке Grafana.

Источник данных (datasource)

Первый шаг — настройка источника данных (datasource). По сути, это источник метрик для Grafana. Мы будем получать метрики с нашего сервера Prometheus, поэтому в качестве источника данных выбираем Prometheus и указываем URL http://localhost:9090. Остальные параметры оставляем по умолчанию.

Стоит отметить, что помимо Prometheus, Grafana может запрашивать и обрабатывать данные из множества других систем.

Дашборд (dashboard)

После настройки Datasource, мы можем создать дашборд. Дашборд — это просто набор панелей, расположенных на одной странице. Панели бывают разные: от простого текста до круговых диаграмм. Каждую панель можно настроить для отображения различных метрик.

Создание своего дашборда с нуля может быть нелегкой задачей. К счастью, Grafana предоставляет простой способ импорта дашбордов, созданных другими пользователями. После импорта дашборд можно настроить в соответствии с вашими потребностями.

Для примера я буду использовать готовый дашборд, созданный "cordobatyc" и расположенный по следующей ссылке: 

https://grafana.com/grafana/dashboards/10795

Чтобы установить дашборд, укажите его ID на странице Import.

После импорта откройте установленный дашборд с помощью выпадающего списка в левом верхнем углу. При первом открытии он выглядит следующим образом.

Плагины

Хотя плагины не являются обязательными, но наш дашборд содержит панель, которая использует сторонний плагин, отсутствующи�� по умолчанию. Эту панель можно удалить (возможно, заменив ее чем-то другим), либо установить недостающий плагин.

Необходимый нам плагин предназначен для отображения круговых диаграмм. Его можно найти по ссылке ниже.

https://grafana.com/grafana/plugins/grafana-piechart-panel

Установка плагина описана на его странице. Откройте командную строку и выполните следующую команду:

grafana-cli plugins install grafana-piechart-panel

Для завершения установки плагина перезапустите Grafana:

service grafana-server restart

Далее можно обновить страницу — панель с круговой диаграммой должна отображаться правильно.

Заключение

После установки всех компонент и настройки Grafana у вас должно получиться что-то вроде этого:

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

Это руководство лишь введение в мониторинг. С рассмотренными инструментами вы сможете сделать гораздо больше, включая настройку автоматических алертов при достижении метриками определенных пороговых значений. Теперь у вас есть основа для настройки и запуска базового мониторинга.

Для более глубокого изучения этой темы я рекомендую обратиться к документации Prometheus и Grafana.

Ресурсы


Всех желающих приглашаем на открытый урок «Системы логирования (ELK, EFK, Graylog2)» в OTUS, который состоится 21 февраля. На уроке сравним различные системы логирования, присутствующих на рынке: ELK, EFK — fluentd, Graylog2.