![](https://habrastorage.org/getpro/habr/upload_files/c89/fad/0d2/c89fad0d2a0dffb2e0895eedfb0932f8.png)
Мониторинг нужен всем: и серверам крупных технологических компаний и домашним 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" и смотрим собираемые метрики.
![](https://habrastorage.org/getpro/habr/upload_files/c84/e72/480/c84e72480fb267103ba277877f91fc04.png)
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”.
![](https://habrastorage.org/getpro/habr/upload_files/020/848/ba9/020848ba9be66dffa54e4cc963dc3379.png)
Уже используя только 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. Остальные параметры оставляем по умолчанию.
![](https://habrastorage.org/getpro/habr/upload_files/f13/506/5f8/f135065f84d3b2fdb7fe711620e6ae75.png)
Стоит отметить, что помимо Prometheus, Grafana может запрашивать и обрабатывать данные из множества других систем.
Дашборд (dashboard)
После настройки Datasource, мы можем создать дашборд. Дашборд — это просто набор панелей, расположенных на одной странице. Панели бывают разные: от простого текста до круговых диаграмм. Каждую панель можно настроить для отображения различных метрик.
Создание своего дашборда с нуля может быть нелегкой задачей. К счастью, Grafana предоставляет простой способ импорта дашбордов, созданных другими пользователями. После импорта дашборд можно настроить в соответствии с вашими потребностями.
Для примера я буду использовать готовый дашборд, созданный "cordobatyc" и расположенный по следующей ссылке:
https://grafana.com/grafana/dashboards/10795
![](https://habrastorage.org/getpro/habr/upload_files/d82/7bb/396/d827bb3960d46876552401fdcbcb3bf9.png)
Чтобы установить дашборд, укажите его ID на странице Import.
После импорта откройте установленный дашборд с помощью выпадающего списка в левом верхнем углу. При первом открытии он выглядит следующим образом.
![](https://habrastorage.org/getpro/habr/upload_files/0c1/f4c/331/0c1f4c33167cd6292bb2ebca692cd2af.png)
Плагины
Хотя плагины не являются обязательными, но наш дашборд содержит панель, которая использует сторонний плагин, отсутствующий по умолчанию. Эту панель можно удалить (возможно, заменив ее чем-то другим), либо установить недостающий плагин.
Необходимый нам плагин предназначен для отображения круговых диаграмм. Его можно найти по ссылке ниже.
https://grafana.com/grafana/plugins/grafana-piechart-panel
Установка плагина описана на его странице. Откройте командную строку и выполните следующую команду:
grafana-cli plugins install grafana-piechart-panel
Для завершения установки плагина перезапустите Grafana:
service grafana-server restart
Далее можно обновить страницу — панель с круговой диаграммой должна отображаться правильно.
Заключение
После установки всех компонент и настройки Grafana у вас должно получиться что-то вроде этого:
![](https://habrastorage.org/getpro/habr/upload_files/32b/cb6/17a/32bcb617a751eefdc4cfa776f97c0ca5.png)
Взглянув на эту страницу, вы можете получить информацию о состоянии сервера: начиная с того, как долго он работает, заканчивая загрузкой процессора и использованием памяти.
Это руководство лишь введение в мониторинг. С рассмотренными инструментами вы сможете сделать гораздо больше, включая настройку автоматических алертов при достижении метриками определенных пороговых значений. Теперь у вас есть основа для настройки и запуска базового мониторинга.
Для более глубокого изучения этой темы я рекомендую обратиться к документации 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 хранит данные две недели. Это есть где-то в мануалах, но кто же их, мануалы, читает:)
Может получиться неприятный сюрприз. Например, если вдруг захочется проанализировать динамику потребления электричества сервером за последние пару лет.