
Мониторинг нужен всем: и серверам крупных технологических компаний и домашним 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.
