Мониторинг нужен всем: и серверам крупных технологических компаний и домашним 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.
Комментарии (2)
NAI
18.02.2022 09:46+5Проблема всех статей про prometheus в том, что не рассказывается идеология и работа под капотом. Вот возьмем:
После запуска переходим в браузере по адресу "<server_address>:9100/metrics" и смотрим собираемые метрики.
Откуда берутся метрики?
Где взять список метрик с описанием? Для мониторинга загрузки надо брать node_cpu_seconds_total или node_load1(5\15)?
Почему разные ноды отдают разный набор метрик?
Что делать с метриками которые мне не нужны? Как отключить лишнее?
Как часто они обновляются (раз в секунду, раз в наносекунду, раз в минуту)?
А если мне нужно добавить свою?
Что на счет аутентификации?
Если машина с NodeExporter постоянно* меняет адрес (мы же не только на локалхос будем экспортер ставить), то каждый раз ползать в конфиг прометеуса?
Что делать если нода за двойным NAT'ом?
Т.е. после работы с zabbix\netxms приходится ломать привычные паттерны.
* например, если у нас есть филиал без статичного IP
alid
По-умолчанию Prometheus хранит данные две недели. Это есть где-то в мануалах, но кто же их, мануалы, читает:)
Может получиться неприятный сюрприз. Например, если вдруг захочется проанализировать динамику потребления электричества сервером за последние пару лет.