node exporter что это
Prometheus + Grafana + Node Exporter + Docker в Azure c уведомлениями в Telegram
Для начала подготовим виртуальную машину, для этого напишем небольшой скрипт, который разворачивает и автоматизирует некоторые рутинные операции, скрипт использует Azure Cli:
В скрипте мы используем файл cloud-init.txt который автоматически установит Docker и Docker-Compose на виртуальную машину.
В домашней директории создаем папку для проекта и файл docker-compose.yaml
Не забывайте, что в yaml не должно быть табуляции, только пробелы, внимательно за этим следите. Давайте рассмотрим файл docker-compose.yaml более подробнее:
image: — здесь, указаны образы контейнеров docker, которые мы будем использовать
Теперь приступим к созданию Telegram бота. Подробно на этом останавливаться не будем, в интернете полно описаний, скажу только что создание происходит посредством бота @BotFather.
Нам потребуется Token бота и ваш TelegramID, что бы управлять ботом, эти данные вам нужно подставить в файл docker-compose.yaml
Cоздадим файлы:
prometheus.yml в директории prometheus в котором описывается сервера для сбора метрик и отправки алертов.
con.yml в той же директории для описания алертов. В этом файле описан один алерт, который проверяет «жив» ли наш Node Exporter.
config.yml в директории alertmanager в котором добавляем связь с Telegram ботом
Запустим наш образ и проверим результат:
Должно получиться что-то похожее на это:
Как мы видим State у всех контейнеров Up, если по каким-то причинам один из контейнеров не запустился, мы можем посмотреть лог командой:
выведет нам такой результат:
Теперь создадим скрипт test.sh для проверки уведомлений
после запуска которого, бот должен прислать тестовое сообщение.
Так же мы можем проверить работу нашего алерта, описаного в con.yml, для этого остановим Node Exporter командой
через две минуты, бот пришлет вам уведомление, что сервер упал, запустим Node Exporter командой
И через определенное время бот ответит, что сервер запустился.
На этом все, в следующих статье я научу вас подключать дополнительные метрики и создавать уведомления в Prometheus.
Monitoring Linux host metrics with the Node Exporter
The Prometheus Node Exporter exposes a wide variety of hardware- and kernel-related metrics.
In this guide, you will:
Installing and running the Node Exporter
The Prometheus Node Exporter is a single static binary that you can install via tarball. Once you’ve downloaded it from the Prometheus downloads page extract it, and run it:
You should see output like this indicating that the Node Exporter is now running and exposing metrics on port 9100:
Node Exporter metrics
Once the Node Exporter is installed and running, you can verify that metrics are being exported by cURLing the /metrics endpoint:
You should see output like this:
Success! The Node Exporter is now exposing metrics that Prometheus can scrape, including a wide variety of system metrics further down in the output (prefixed with node_ ). To view those metrics (along with help and type information):
Configuring your Prometheus instances
Your locally running Prometheus instance needs to be properly configured in order to access Node Exporter metrics. The following prometheus.yml example configuration file will tell the Prometheus instance to scrape, and how frequently, from the Node Exporter via localhost:9100 :
To install Prometheus, download the latest release for your platform and untar it:
Exploring Node Exporter metrics through the Prometheus expression browser
Now that Prometheus is scraping metrics from a running Node Exporter instance, you can explore those metrics using the Prometheus UI (aka the expression browser). Navigate to localhost:9090/graph in your browser and use the main expression bar at the top of the page to enter expressions. The expression bar looks like this:
Click on the links below to see some example metrics:
Node exporter что это
Prometheus exporter for hardware and OS metrics exposed by *NIX kernels, written in Go with pluggable metric collectors.
The Windows exporter is recommended for Windows users. To expose NVIDIA GPU metrics, prometheus-dcgm can be used.
Installation and Usage
If you are new to Prometheus and node_exporter there is a simple step-by-step guide.
For automated installs with Ansible, there is the Cloud Alchemy role.
There is a community-supplied COPR repository which closely follows upstream releases.
The node_exporter is designed to monitor the host system. It’s not recommended to deploy it as a Docker container because it requires access to the host system.
For situations where Docker deployment is needed, some extra flags must be used to allow the node_exporter access to the host namespaces.
Be aware that any non-root mount points you want to monitor will need to be bind-mounted into the container.
If you start container for host monitoring, specify path.rootfs argument. This argument must match path in bind-mount of host root. The node_exporter will use path.rootfs as prefix to access host filesystem.
For Docker compose, similar flag changes are needed.
There is varying support for collectors on each operating system. The tables below list all existing collectors and the supported systems.
Enabled by default
Disabled by default
node_exporter also implements a number of collectors that are disabled by default. Reasons for this vary by collector, and may include:
You can enable additional collectors as desired by adding them to your init system’s or service supervisor’s startup configuration for node_exporter but caution is advised. Enable at most one at a time, testing first on a non-production system, then by hand on a single production node. When enabling additional collectors, you should carefully monitor the change by observing the scrape_duration_seconds metric to ensure that collection completes and does not time out. In addition, monitor the scrape_samples_post_metric_relabeling metric to see the changes in cardinality.
The perf collector may not work out of the box on some Linux systems due to kernel configuration and security settings. To allow access, set the following sysctl parameter:
The textfile collector is similar to the Pushgateway, in that it allows exporting of statistics from batch jobs. It can also be used to export static metrics, such as what role a machine has. The Pushgateway should be used for service-level metrics. The textfile module is for metrics that are tied to a machine.
To atomically push completion time for a cron job:
To statically set roles for a machine using labels:
Filtering enabled collectors
The node_exporter will expose all metrics from enabled collectors by default. This is the recommended way to collect metrics to avoid errors when comparing metrics of different families.
For advanced use the node_exporter can be passed an optional list of collectors to filter metrics. The collect[] parameter may be used multiple times. In Prometheus configuration you can use this syntax under the scrape config.
This can be useful for having different Prometheus servers collect specific metrics from nodes.
LaurVas
Мониторинг — это сбор метрик и представление этих метрик в удобном виде (таблицы, графики, шкалы, уведомления, отчёты). Концептуально его можно изобразить в таком виде:
Метрики — это абстракция, с которой мы имеем дело, когда говорим о мониторинге. Это какие-то числа, описывающие состояние интересующей нас штуковины. Самый простой и понятный мониторинг следит за ресурсами компьютера: загрузкой процессора, памяти, диска, сети. Аналогично можно следить за чем-то более высокоуровневым, вроде количества посетителей на сайте или среднего времени ответа сервера. Для компьютера это один хрен безликие числа.
Мониторинг — это инструмент анализа того, что происходит/происходило в системе. Следовательно, без понимания смысла собранных данных мониторинг вам не особо поможет. И наоборот: в умелых руках это мощный инструмент.
Чем больше компонентов в вашей системе (микросервисов), чем больше нагрузка на неё, чем дороже время простоя, тем важнее иметь хорошую систему мониторинга.
То, что не метрики — то логи. Их тоже надо собирать и анализировать, но это отдельная история со своими инструментами.
Сейчас модно делать мониторинг на основе Prometheus. Так ли он хорош на самом деле? На мой взгляд это лучшее, что сейчас есть из мониторинга. Оговорюсь сразу для тех, кто хочет с этим поспорить: я понимаю, что разным задачам — разные инструменты и где-то больше подходит старый проверенный Nagios. Но в целом лидирует Prometheus.
Prometheus — это не готовое решение в духе “поставил и работает” (привет, Netdata). Это платформа, набор инструментов, позволяющий сделать себе такой мониторинг, какой надо. Фреймворк, если хотите.
Эта статья про знакомство с Prometheus’ом и установку. Потом будет интереснее — про настройку непосредственно мониторинга.
Архитектура Prometheus
Prometheus состоит из отдельных компонентов, которые общаются друг с другом по http. Всё модно-молодёжно, с веб-интерфейсами и настраивается в yaml-конфигах.
Установка
Все компоненты Prometheus’а написаны на Go и представляют собой статически скомпиленные бинари, не требующие никаких зависимостей кроме libc и готовые запускаться на любой платформе, будь то Debian, Arch или Centos. Установить их можно аж тремя способами:
Разумеется, у каждого способа есть свои преимущества и недостатки.
Если ставить через пакетный менеджер, то через него же вы будете получать обновления и сможете всё удалить. Однако есть нюанс. У Prometheus’а нет своих собственных репозиториев для популярных дистрибутивов, а официальные репозитории Debian/Ubuntu как всегда отстают от апстрима. Например, сейчас в Debian доступна версия 2.7.1, когда Prometheus уже 2.11.1. Arch Linux — молодец, идёт в ногу со временем.
При установке вручную Prometheus не будет числиться в списках установленного софта и с точки зрения пакетного менеджера его в системе нет. Зато вы сможете обновлять Prometheus отдельно от пакетов. При ручной установке придётся немного побывать в роли установочного скрипта (который есть в пакете), поэтому, если у вас серьёзные намерения — автоматизируйте установку/обновление через какой-нибудь Ansible. Рекомендую взять за основу готовые роли для Prometheus, Alertmanager, Node exporter, Grafana.
В продакшене я бы поднимал мониторинг в докере как минимум в целях безопасности. Свой личный мониторинг я устанавливал по-старинке вручную.
Установка вручную
Расскажу про ручную установку, потому что в основе других способов установки лежат те же действия, только завёрнутые в дополнительную обёртку. Этот способ подойдёт для любых дистрибутивов Linux под управлением systemd (Ubuntu, Debian, Centos, Arch и т.д.)
Установка Prometheus server
Идём на https://github.com/prometheus/prometheus/releases, находим билд под свою платформу (скорее всего это будет linux-amd64). Копипастим ссылку, качаем:
Раскидываем файлы по ФС, заводим пользователя:
Запускаем Prometheus server:
В статусе должно быть написано “active (running)” — значит работает. Теперь можно сходить на http://localhost:9090 и полюбоваться на интерфейс Prometheus’а. Пока что он бесполезен, но уже можно потыкать.
Установка node exporter
Node exporter надо раскатать на всех машинах, которые вы хотите мониторить. Устанавливается он аналогично серверу. Берём последний билд с https://github.com/prometheus/node_exporter/releases.
Запускаем node exporter:
Можно посмотреть как node exporter отдаёт метрики:
Пока не пытайтесь что-то понять в выводе. Отдаёт и ладно.
Установка alertmanager
Alertmanager — это про алерты. Первое время алертов у вас не будет, поэтому сейчас его можно не ставить. Но лучше всё-таки поставить, чтобы всё необходимое уже было подготовлено. Идём за дистрибутивом на https://github.com/prometheus/alertmanager/releases.
Веб-интерфейс alertmanager’а доступен на http://localhost:9093. Пока в нём нет ничего интересного.
Установка Grafana
Если у вас Debian/Ubuntu или Redhat/Centos, лучше установить Grafana из пакета. Ссылочки найдёте в описании под видео на https://grafana.com/grafana/download.
Prometheus, Node exporter, Alertmanager и Grafana по умолчанию слушают на всех сетевых интерфейсах. При необходимости прикрывайтесь фаерволлом от посторонних глаз.
Первичная настройка
Теперь, когда все компоненты установлены, надо подружить их друг с другом. Сперва минимально настроим Prometheus server:
Пока не буду вдаваться в подробности настройки, этим займёмся в следующих статьях. На текущем этапе надо получить пусть примитивный, но работающий мониторинг. Основное что сейчас стоит знать:
Теперь попросим prometheus перечитать конфигурационный файл:
В веб-интерфейсе на странице http://localhost:9090/targets появился первый таргет. Он должен быть в состоянии “UP”.
Поздравляю, мониторинг начал мониторить! Теперь можно пойти на вкладку Graph и запросить какую-нибудь метрику, например node_load1 — это одноминутный load average. Там же можно временной график посмотреть:
В повседневной жизни вы вряд ли будете смотреть графики в этом интерфейсе. Гораздо приятнее смотреть графики в Grafana.
Открываем интерфейс Grafana по адресу http://localhost:3000. Логинимся (admin:admin), при желании меняем пароль. Практически всё в Графане настраивается тут же, через веб-интерфейс. Нажимаем на боковой панели Configuration (шестерёнка) → Preferences:
Идём на вкладку Data Sources, добавляем наш Prometheus:
Теперь добавим готовый дашборд Node exporter full. Это лучший дашборд для старта из всех, что я пересмотрел. Идём Dashboards (квадрат) → Manage → Import.
Вписываем 1860 и убираем курсор из поля ввода, иначе не начнёт импортировать. Дальше указываем data source и жмём import.
Поздравляю, самая скучная часть работы проделана! Теперь вы можете наблюдать за жизнью своих серверов в Графане.
Если у вас серьёзные намерения и вы хотите, чтобы все компоненты автоматически запускались после перезагрузки машины, не забудьте сообщить об этом systemd:
И это всё?
У нас пока нет алертов, не заведены пользователи в Grafana, мы ничего не понимаем в настройке. Да, наш мониторинг пока очень сырой. Но надо же с чего-то начать! Позже я напишу про настройку, про алерты и многое другое. Всё будет, друзья. Всё будет.
Linuxoid.pro
Сообщество разработчиков программного обеспечения и IT-специалистов
Как связать Node Exporter с Prometheus — полное руководство
Что, если бы у вас была полная панель инструментов, с легкостью детализирующая каждую метрику в вашей системе?
Теперь, когда у вас есть некоторые основы работы с Prometheus, давайте создадим всю нашу систему мониторинга Linux.
Что вы узнаете
Прежде чем начать полное руководство, давайте взглянем на все различные темы, которые вы собираетесь изучать сегодня.
В конце этого руководства вы сможете создать свою собственную инфраструктуру мониторинга и добавить к ней еще много экспортеров.
I — Основы мониторинга Linux
Прежде чем строить всю нашу архитектуру мониторинга, давайте посмотрим, какие решения существуют в настоящее время и какие проблемы мы пытаемся решить с помощью Node Exporter.
а — Существующие решения
Как системный администратор, вы можете контролировать свою инфраструктуру Linux несколькими способами.
Существует множество инструментов командной строки для мониторинга вашей системы.
Они хорошо известны каждому системному администратору и часто очень полезны для выполнения простых действий по устранению неполадок на вашем экземпляре.
Некоторые примеры инструментов командной строки могут быть top или htop для использования ЦП, df или du для дисков или даже tcpdump для простого анализа сетевого трафика.
Эти решения прекрасны, но у них есть серьезные недостатки.
Кроме того, для выполнения этих команд вам иногда требуются повышенные привилегии в системе, что не всегда так.
Благодаря полной системе мониторинга вы можете обрабатывать правила безопасности непосредственно в вашей системе панелей управления (например, Grafana), и вам не нужно предоставлять прямой доступ к вашему экземпляру тем, кто хочет устранять неполадки в работе.
Решения для настольных ПК обеспечивают более последовательное и, вероятно, более практичное решение для системного мониторинга.
Некоторыми примерами этих инструментов являются хорошо зарекомендовавший себя SolarWinds Linux Performance Monitoring Tool (который предоставляет очень полные информационные панели для вашей системы Linux) или Zabbix с продуктом Metric Collection.
Инструменты мониторинга производительности Linux от SolarWinds — это платный инструмент, но если вы хотите, чтобы решение было готово к использованию очень быстро, они представляют собой отличную возможность для мониторинга Linux.
б — Экспортер узлов и Prometheus
Как было сказано ранее, Prometheus очищает цели, и экспортер узлов — лишь одна из них.
В вашей архитектуре у вас будут следующие компоненты:
В нашем случае весь стек будет запущен в одном экземпляре, поэтому нет необходимости настраивать какие-либо правила брандмауэра.
Экспортер узлов будет работать на порту 9100, а Prometheus — на порту 9090.
Примечание : как часть конфигурации, Prometheus может фактически контролировать себя.
Теперь, когда у вас есть представление о том, как выглядит архитектура мониторинга, давайте установим различные необходимые инструменты.
II — Установка необходимых инструментов
В этом руководстве основное внимание уделяется полной установке экспортера узлов, но есть также быстрая установка других инструментов.
а — Установка Node Exporter
Перейдите на https://prometheus.io/download/ и загрузите последний двоичный файл для экспортера узлов (здесь 0.18.1).
Это двоичный файл, который мы собираемся запустить, чтобы начать сбор показателей в нашей системе.
Теперь, когда у вас есть архив, распакуйте его и проверьте его содержимое.
Теперь, чтобы установить его как службу, вот инструкции :
Примечание : вам понадобится пользователь node_exporter для запуска двоичного файла.
Затем вставьте следующую конфигурацию для своей службы.
Ваша служба работает правильно?
Можете ли вы увидеть показатели пар «ключ-значение» для показателей вашей системы?
Мы закончили с установкой Node Exporter!
б — Установка Prometheus
Мы не в первый раз устанавливаем Prometheus для наших проектов.
Сначала перейдите на https://prometheus.io/download/ и выполните простую команду wget, чтобы получить последние двоичные файлы.
Для этого руководства мы используем версию 2.10.0, выпущенную в мае 2019 года.
Теперь у вас должен быть архив, распаковать его и перемещаться внутри папки.
Внутри этой папки у вас есть несколько элементов:
В нашем случае мы сначала собираемся изменить файл конфигурации Prometheus.
Перейдите по нему с помощью vi:
Затем выполните следующие модификации:
Затем в разделе «scrape_configs» в разделе «static_configs» добавьте следующие строки.
Это означает, что Prometheus будет очищать метрики экспортера узлов, а также свои собственные метрики.
На данный момент просто запустите Prometheus в качестве фонового процесса и убедитесь, что он правильно запущен, выполнив проверку связи с интерфейсом веб-интерфейса.
Вы видите веб-консоль?
Мы закончили с настройкой Prometheus!
c — Установка Grafana
Последняя часть нашего раздела инициализации посвящена установке Grafana.
Напоминаем, что Grafana — это решение для мониторинга информационной панели с открытым исходным кодом, которое связывается с базами данных для отображения показателей различными способами.
Чтобы установить Grafana, перейдите на https://grafana.com/grafana/download и загрузите последние доступные вам двоичные файлы.
В этом руководстве мы используем версию Grafana 6.2.4, которая включает новые линейные манометры.
Распакуйте файл .deb, и Grafana автоматически запустится как служба на вашем компьютере.
Вы можете проверить, что Grafana запущена, с помощью следующей команды:
Если статус установлен на Активный, и если на вашей консоли не отображаются видимые ошибки, значит, Grafana теперь правильно установлена на вашем компьютере.
По умолчанию Grafana работает на порту 3000, а учетные данные по умолчанию:
Вам будет предложено изменить их сразу же при первом подключении.
В веб-браузере перейдите по адресу http: // localhost: 3000 и следуйте инструкциям, пока не увидите экран приветствия.
Как описано в других наших руководствах, вы можете настроить свой источник данных со следующей конфигурацией:
Примечание : если вы настроили свой экземпляр Prometheus для работы на другом порту, вам необходимо изменить его в конфигурации.
III — Создание полной панели управления Grafana для Node Exporter
Теперь, когда все ваши инструменты настроены, осталось не так много работы, чтобы иметь наши информационные панели.
Для этого мы не собираемся создавать свои дашборды самостоятельно. Вместо этого мы собираемся использовать функцию « Импорт панели инструментов » Grafana.
В верхнем левом меню наведите указатель мыши на значок « Плюс » и щелкните элемент « Импорт » в раскрывающемся списке.
Вам будет представлено следующее окно:
В этом окне у вас есть несколько вариантов. Вы также можете:
В нашем случае мы собираемся использовать первый вариант, введя идентификатор панели инструментов непосредственно в текстовое поле.
б — Вдохновение для информационных панелей
Нам не нужно самостоятельно создавать информационные панели.
Это особенно верно, когда вам нужно искать десятки показателей.
Вам придется потратить много времени на изучение различных показателей и построений из них.
Мы собираемся использовать для этого Grafana Dashboards. Grafana Dashboards — это репозиторий, принадлежащий Grafana, в котором хранятся сотни информационных панелей, из которых вы можете выбирать.
Введите « Node Exporter » в поле поиска и прокрутите, пока не дойдете до панели «Node Exporter Full».
Как вы, наверное, заметили, на панели управления есть ID 1860 (информация доступна в URL-адресе веб-сайта).
Это идентификатор, который мы собираемся скопировать для мониторинга нашей системы.
При импорте введите «1860» в текстовое поле панели управления Grafana.com и нажмите «Загрузить».
Вам будет представлен второй экран для настройки панели инструментов.
Однако вам нужно будет выбрать источник данных, в моем случае « Прометей ». (вы должны привязать его к источнику данных, который вы создали в разделе 2)
Когда закончите, нажмите « Импорт ».
Менее чем за секунду все панели будут построены для вас!
Это 29 категорий, из которых более 192 панелей создаются автоматически. Потрясающий.
Вот несколько примеров того, как выглядят дашборды:
Вы также можете просмотреть все параметры, доступные на всей этой панели.
IV — Дальше
Освоение Node Exporter, безусловно, является обязательным навыком для инженеров, желающих начать работу с Prometheus.
Однако вы можете копнуть немного глубже, используя Node Exporter.
а — Дополнительные модули
Не все модули включены по умолчанию, и если вы запустите простую установку экспортера узлов, скорее всего, вы не используете какие-либо дополнительные плагины.
Вот список дополнительных модулей :
Чтобы активировать их, просто добавьте флаг –collector. при запуске экспортера узлов, например:
b — Сборщик текстовых файлов
Полное руководство по Node Exporter было бы неполным без упоминания сборщика текстовых файлов, по крайней мере, для небольшого раздела.
Подобно Pushgateway, сборщик текстовых файлов собирает метрики из текстовых файлов и сохраняет их прямо в Prometheus.
Он разработан для пакетных заданий или краткосрочных заданий, которые не отображают показатели непрерывно.
Некоторые примеры сборщика текстовых файлов доступны здесь: