Linuxoid.pro

Сообщество разработчиков программного обеспечения и IT-специалистов

Как связать Node Exporter с Prometheus — полное руководство

Вы когда-нибудь задумывались, как легко контролировать производительность всей системы Linux ? Что, если бы вы хотели отслеживать свои файловые системы, диски, процессоры , а также сетевую статистику , аналогично тому, как вы бы делали с netstat?

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

Если вы ищете все эти функции, вы попали в нужное учебное пособие .

Сегодня мы специально рассмотрим Node Exporter , экспортера Prometheus, специализирующегося на немедленном обнаружении метрик Linux. Если вы новичок в Prometheus, я бы порекомендовал вам прочитать мое полное руководство по Prometheus. Это поможет вам понять основы этой замечательной базы данных временных рядов.

Теперь, когда у вас есть некоторые основы работы с Prometheus, давайте создадим всю нашу систему мониторинга Linux.

Готовы?

Что вы узнаете

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

  • Существующие способы мониторинга вашей Linux-системы : вы узнаете о бесплатных и платных инструментах, которые вы можете использовать для быстрого мониторинга своей инфраструктуры.
  • Что такое Node Exporter и как правильно установить его как услугу
  • Свяжите свой Node Exporter с Prometheus и начните собирать системные метрики
  • Играйте с готовыми панелями управления Grafana, чтобы создать более 100 панелей одним щелчком мыши

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

I — Основы мониторинга Linux

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

а — Существующие решения

Как системный администратор, вы можете контролировать свою инфраструктуру Linux несколькими способами.

  • Инструменты командной строки

Существует множество инструментов командной строки для мониторинга вашей системы.

Они хорошо известны каждому системному администратору и часто очень полезны для выполнения простых действий по устранению неполадок на вашем экземпляре.

Некоторые примеры инструментов командной строки могут быть top или htop для использования ЦП, df или du ​​для дисков или даже tcpdump для простого анализа сетевого трафика.

Эти решения прекрасны, но у них есть серьезные недостатки.

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

Кроме того, для выполнения этих команд вам иногда требуются повышенные привилегии в системе, что не всегда так.

Благодаря полной системе мониторинга вы можете обрабатывать правила безопасности непосредственно в вашей системе панелей управления (например, Grafana), и вам не нужно предоставлять прямой доступ к вашему экземпляру тем, кто хочет устранять неполадки в работе.

  • Настольные решения

Решения для настольных ПК обеспечивают более последовательное и, вероятно, более практичное решение для системного мониторинга.

Некоторыми примерами этих инструментов являются хорошо зарекомендовавший себя SolarWinds Linux Performance Monitoring Tool (который предоставляет очень полные информационные панели для вашей системы Linux) или Zabbix с продуктом Metric Collection.

Инструменты мониторинга производительности Linux от SolarWinds — это платный инструмент, но если вы хотите, чтобы решение было готово к использованию очень быстро, они представляют собой отличную возможность для мониторинга Linux.

б — Экспортер узлов и Prometheus

Теперь, когда мы знаем, что такое существующие инструменты для мониторинга Linux, давайте посмотрим, что мы собираемся использовать сегодня: экспортер узлов и Prometheus .

Как было сказано ранее, Prometheus очищает цели, и экспортер узлов — лишь одна из них.

В вашей архитектуре у вас будут следующие компоненты:

  • База данных временных рядов , в данном случае Prometheus, предназначенная для хранения различных метрик, полученных экспортером узлов.
  • Node Exporter работает как служба systemd, которая периодически (каждую 1 секунду) собирает все метрики вашей системы.
  • Решение для приборной панели , в данном случае Grafana, отображающее метрики, полученные от Prometheus. Мы не собираемся строить каждую панель самостоятельно. Вместо этого мы собираемся использовать очень мощную функцию Grafana — импорт панели инструментов . (напомним, у Grafana есть список из сотен панелей мониторинга, которые вы импортируете в пользовательский интерфейс)

В нашем случае весь стек будет запущен в одном экземпляре, поэтому нет необходимости настраивать какие-либо правила брандмауэра.

Экспортер узлов будет работать на порту 9100, а Prometheus — на порту 9090.

Примечание : как часть конфигурации, Prometheus может фактически контролировать себя.

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

II — Установка необходимых инструментов

Напоминаем, что для нашей архитектуры нам понадобятся Prometheus, Node Exporter и Grafana .

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

а — Установка Node Exporter

Перед установкой Prometheus нам необходимо установить Node Exporter как службу .

Перейдите на https://prometheus.io/download/ и загрузите последний двоичный файл для экспортера узлов (здесь 0.18.1).

$ wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz

Архив содержит единственный двоичный файл — node_exporter .

Это двоичный файл, который мы собираемся запустить, чтобы начать сбор показателей в нашей системе.

Теперь, когда у вас есть архив, распакуйте его и проверьте его содержимое.

$ tar xvzf node_exporter-0.18.1.linux-amd64.tar.gz

Теперь, чтобы установить его как службу, вот инструкции :

  • Создайте пользователя экспортера узлов
$ sudo useradd -rs /bin/false node_exporter
  • Скопируйте двоичный файл в папку / usr / local / bin.
$ cp node_exporter-0.18.1.linux-amd64/node_exporter /usr/local/bin
  • Примените правильные разрешения к вашему двоичному файлу.
$ chown node_exporter:node_exporter /usr/local/bin/node_exporter

Примечание : вам понадобится пользователь node_exporter для запуска двоичного файла.

  • Перейдите в / etc / systemd / system и создайте новый служебный файл.
$ cd / etc / systemd / systemd 
$ sudo vim node_exporter.service

Затем вставьте следующую конфигурацию для своей службы.

[Unit]
Description=Node Exporter
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
  • Выйдите из vi, перезагрузите демон и запустите службу.
$ sudo systemctl daemon-reload 
$ sudo systemctl start node_exporter
  • Проверьте свою службу, выполнив следующую команду
$ sudo systemctl status node_exporter.service

Ваша служба работает правильно?

  • Включите вашу службу для запуска системы
$ sudo systemctl enable node_exporter
  • Убедитесь, что ваш экспортер узлов правильно настроен и работает с помощью простой команды curl.
$ curl http://localhost:9100/metrics

Можете ли вы увидеть показатели пар «ключ-значение» для показателей вашей системы?

Мы закончили с установкой Node Exporter!

б — Установка Prometheus

Мы не в первый раз устанавливаем Prometheus для наших проектов.

Сначала перейдите на https://prometheus.io/download/ и выполните простую команду wget, чтобы получить последние двоичные файлы.

$ wget https://github.com/prometheus/prometheus/releases/download/v2.10.0/prometheus-2.10.0.linux-amd64.tar.gz

Для этого руководства мы используем версию 2.10.0, выпущенную в мае 2019 года.

Теперь у вас должен быть архив, распаковать его и перемещаться внутри папки.

# tar xvzf prometheus-2.10.0.linux-amd64.tar.gz 
# cd prometheus-2.10.0.linux-amd64 /

Внутри этой папки у вас есть несколько элементов:

  • prometheus : исполняемый файл, запускающий сервер Prometheus;
  • prometheus.yml : файл конфигурации для вашего сервера Prometheus;
  • promtool : инструмент, который можно использовать для проверки конфигурации Prometheus.

В нашем случае мы сначала собираемся изменить файл конфигурации Prometheus.

Перейдите по нему с помощью vi:

# vi prolmetheus.ym

Затем выполните следующие модификации:

global:
scrape_interval: 1s # Set the scrape interval to every 1 second.

Напоминаем, что Prometheus царапает цели . В нашем случае мы хотим, чтобы он очищал наши системные метрики каждую секунду.

Затем в разделе «scrape_configs» в разделе «static_configs» добавьте следующие строки.

static_configs:
- targets: ['localhost:9090', 'localhost:9100']

Это означает, что Prometheus будет очищать метрики экспортера узлов, а также свои собственные метрики.

На данный момент просто запустите Prometheus в качестве фонового процесса и убедитесь, что он правильно запущен, выполнив проверку связи с интерфейсом веб-интерфейса.

> ./prometheus &

Вы видите веб-консоль?

Мы закончили с настройкой Prometheus!

c — Установка Grafana

Последняя часть нашего раздела инициализации посвящена установке Grafana.

Напоминаем, что Grafana — это решение для мониторинга информационной панели с открытым исходным кодом, которое связывается с базами данных для отображения показателей различными способами.

Чтобы установить Grafana, перейдите на https://grafana.com/grafana/download и загрузите последние доступные вам двоичные файлы.

$ wget https://dl.grafana.com/oss/release/grafana_6.2.4_amd64.deb

В этом руководстве мы используем версию Grafana 6.2.4, которая включает новые линейные манометры.

Распакуйте файл .deb, и Grafana автоматически запустится как служба на вашем компьютере.

$ sudo dpkg -i grafana_6.2.4_amd64.deb

Вы можете проверить, что Grafana запущена, с помощью следующей команды:

$ sudo systemctl status grafana-server
● grafana-server.service - Grafana instance
Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2019-06-22 10:43:12 UTC; 5 days ago
Docs: http://docs.grafana.org

Если статус установлен на Активный, и если на вашей консоли не отображаются видимые ошибки, значит, Grafana теперь правильно установлена ​​на вашем компьютере.

По умолчанию Grafana работает на порту 3000, а учетные данные по умолчанию:

  • имя пользователя : admin
  • пароль : admin

Вам будет предложено изменить их сразу же при первом подключении.

В веб-браузере перейдите по адресу http: // localhost: 3000 и следуйте инструкциям, пока не увидите экран приветствия.

Как описано на снимке экрана, нажмите « Добавить источник данных » и создайте новый источник данных Prometheus .

Как описано в других наших руководствах, вы можете настроить свой источник данных со следующей конфигурацией:

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

III — Создание полной панели управления Grafana для Node Exporter

Теперь, когда все ваши инструменты настроены, осталось не так много работы, чтобы иметь наши информационные панели.

Для этого мы не собираемся создавать свои дашборды самостоятельно. Вместо этого мы собираемся использовать функцию « Импорт панели инструментов » Grafana.

В верхнем левом меню наведите указатель мыши на значок « Плюс » и щелкните элемент « Импорт » в раскрывающемся списке.

Вам будет представлено следующее окно:

В этом окне у вас есть несколько вариантов. Вы также можете:

  • Введите URL-адрес или идентификатор панели инструментов, и он будет автоматически импортирован в ваш экземпляр Grafana.
  • Загрузите файл JSON (напомним, что панели управления Grafana экспортируются как файлы JSON, и таким образом ими можно легко поделиться)
  • Вставьте непосредственно необработанный JSON

В нашем случае мы собираемся использовать первый вариант, введя идентификатор панели инструментов непосредственно в текстовое поле.

б — Вдохновение для информационных панелей

Нам не нужно самостоятельно создавать информационные панели.

Это особенно верно, когда вам нужно искать десятки показателей.

Вам придется потратить много времени на изучение различных показателей и построений из них.

Мы собираемся использовать для этого Grafana Dashboards. Grafana Dashboards — это репозиторий, принадлежащий Grafana, в котором хранятся сотни информационных панелей, из которых вы можете выбирать.

В нашем случае мы собираемся сосредоточиться на информационных панелях Node Exporter .

Введите « Node Exporter » в поле поиска и прокрутите, пока не дойдете до панели «Node Exporter Full».

Как вы, наверное, заметили, на панели управления есть ID 1860 (информация доступна в URL-адресе веб-сайта).

Это идентификатор, который мы собираемся скопировать для мониторинга нашей системы.

При импорте введите «1860» в текстовое поле панели управления Grafana.com и нажмите «Загрузить».

Вам будет представлен второй экран для настройки панели инструментов.

Каждое поле заполняется автоматически .

Однако вам нужно будет выбрать источник данных, в моем случае « Прометей ». (вы должны привязать его к источнику данных, который вы создали в разделе 2)

Когда закончите, нажмите « Импорт ».

Менее чем за секунду все панели будут построены для вас!

Это 29 категорий, из которых более 192 панелей создаются автоматически. Потрясающий.

Вот несколько примеров того, как выглядят дашборды:

Вы также можете просмотреть все параметры, доступные на всей этой панели.

IV — Дальше

Освоение Node Exporter, безусловно, является обязательным навыком для инженеров, желающих начать работу с Prometheus.

Однако вы можете копнуть немного глубже, используя Node Exporter.

а — Дополнительные модули

Не все модули включены по умолчанию, и если вы запустите простую установку экспортера узлов, скорее всего, вы не используете какие-либо дополнительные плагины.

Вот список дополнительных модулей :

Чтобы активировать их, просто добавьте флаг –collector. <name> при запуске экспортера узлов, например:

ExecStart=/usr/local/bin/node_exporter --collector.processes --collector.ntp

Это должно активировать процессы и сборщики ntp .

b — Сборщик текстовых файлов

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

Подобно Pushgateway, сборщик текстовых файлов собирает метрики из текстовых файлов и сохраняет их прямо в Prometheus.

Он разработан для пакетных заданий или краткосрочных заданий, которые не отображают показатели непрерывно.

Некоторые примеры сборщика текстовых файлов доступны здесь:

  • Использование сборщика текстовых файлов из сценария оболочки.
  • Мониторинг размеров каталогов с помощью сборщика текстовых файлов.