Как установить prometheus на windows

Обновлено: 04.07.2024

Вдохновленный статьей про сбор, хранение и визуализации показателей с помощью prometheus и grafana подготовил готовый docker-compose файл для быстрой настройки и запуска мониторинга windows серверов.

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

Хранение, визуализация и оповещение выполняется с помощью сервисов и их конфигурационных файлов, описанных в docker compose файле. В docker compose файле описаны сервисы:

prometheus - хранение показателей,

nginx - реверс прокси для безопасности.

Сбор и отправка показателей производительности сервера выполняется с помощью приложения telegraf. Запуск telegraf может выполняться в виде приложения или в виде службы.

Описание используемых компонент

Для сбора и хранения показателей используется приложение prometheus. Prometheus использует модель pull (тянуть, "дергать") запросов для получения показателей. Такой подход удобен, если prometheus и наблюдаемый сервер находятся "рядом", но при необходимости сбора показателей на "удаленных" серверах гораздо удобнее и безопаснее использовать модель push (толкать) запросов.

Для безопасного подключения к grafana и передачи показателей graphite-exporter используется реверс прокси nginx. Используется самоподписанный сертификат.

Быстрый старт для мониторинга в локальной сети

Предполагается, что уже есть linux сервер и на нем установлены последние версии docker и docker-compose.

1. Скопировать файл install.sh и архив prometheus_server.tar.

2. Разрешить исполнение скрипта install.sh:

3. Запустить скрипт install.sh.

4. Перейти в каталог prometheus_server.

5. Запустить команду:

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

6. Изменить адрес отправки показателей в файле telegraf.conf в разделе outputs.graphite с your-server:9109 на локальный адрес linux сервера.

Запустить отправку показателей с помощью telegraf:

Просмотр показателей доступен в grafana по адресу your-server:3000. По умолчанию для первой авторизации используются логин, пароль: admin, admin.

Настройка оповещений по электронной почте

В файле alertmanager/alertmanager.yml:

указать получателей в разделе receivers в параметре email_configs - to.

Настройка для мониторинга серверов вне локальной сети

В конфигурационном файле telegraf/telegraf.conf в разделе outputs.graphite раскомментировать настройку insecure_skip_verify = true.

Настройка для просмотра показателей не из локальной сети

Перезапустить сервис nginx:

При использовании релизов с включенным реверс прокси (с суффиксом with_reverse_proxy) для начала использования достаточно настроить:

В конфигурационном файле telegraf/telegraf.conf в разделе outputs.graphite раскомментировать настройку insecure_skip_verify = true.

Описание результата

prometheus:9090 - выполнение и отладка запросов к prometheus,

graphite-exporter:9108 - просмотр принимаемых показателей,

alertmanager:9093 - просмотр оповещений,

grafana:3000 - просмотр показателей,

nginx:443 - просмотр показателей через реверс прокси,

Для подключения к запущенным приложениям с linux сервера нужно использовать localhost, например, localhost:9090. Для подключения к запущенным приложениям из локальной сети нужно использовать имя linux сервера, например, your-server:9090.

Для просмотра списка и статуса всех контейнеров нужно выполнить команду:

Для остановки приложений нужно выполнить команду:

Для удаления созданных контейнеров нужно выполнить команду:

Описание настроек сервисов в docker compose файле.

prometheus/prometheus.yml - настройки хранения данных, сбора показателей из graphite-exporter, правил генерации оповещений rules.yml, отправки оповещений в alertmanager

prometheus/rules.yml - правила генерации оповещений

prometheus/data - каталог хранения данных

alertmanager/alertmanager.yml - настройки обработки и методов доставки оповещений

alertmanager/data - хранение данных оповещений

переменные окружения устанавливаются для использования grafana через реверс прокси nginx

grafana/grafana-storage - хранение данных grafana: источники, дашбоарды

nginx/nginx.conf - настройки прокси сервера

nginx/cert - самоподписанные сертификаты для использования защищенного соединения


DevOps- и SRE-инженеры уже, наверное, не раз слышали о Prometheus.

Prometheus был создан на SoundCloud в 2012 году и с тех пор стал стандартом для мониторинга систем. У него полностью открытый исходный код, он предоставляет десятки разных экспортеров, с помощью которых можно за считанные минуты настроить мониторинг всей инфраструктуры.

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

Что такое Prometheus?
Зачем он нужен?
Чем он отличается от других систем?

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

Мы разделили это руководство на 3 части, как поступили с InfluxDB.

  • Сначала идет полный обзор Prometheus, его экосистемы и основных аспектов быстро развивающейся технологии.
  • Потом приводятся объяснения технических терминов Prometheus с иллюстрациями. Если вы не знаете, что такое метрики, ярлыки, экземпляры или экспортеры, вам сюда.
  • Наконец, мы опишем различные реальные сценарии использования Prometheus. Здесь вы вдохновитесь примерами успешных компаний.

Часть I. Что такое Prometheus?

Prometheus — это база данных временных рядов. Если вы не в курсе, что такое база данных временных рядов, почитайте первую часть руководства по InfluxDB.

Но Prometheus — не просто база данных временных рядов.

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

Prometheus мониторит самые разные системы: серверы, базы данных, отдельные виртуальные машины, да почти что угодно.

Для этого Prometheus периодически скрейпит свои целевые объекты.

Что такое скрейпинг?


По этому адресу Prometheus с определенными интервалами извлекает данные из целевого объекта.

1. Как работает Prometheus?

Как мы уже сказали, Prometheus состоит из самых разных компонентов.

Во-первых, вам нужно, чтобы он извлекал метрики из ваших систем. Тут есть разные способы:

Как вы уже поняли, Prometheus сам собирает данные (исключая редкие случаи, когда мы используем Pushgateway).

Что это значит?
Зачем это нужно?

2. Сбор vs. отправка

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

InfluxDB, например, работает иначе: вы сами напрямую отправляете ему данные.


Оба подхода имеют свои плюсы и минусы. На основе доступной документации мы составили список причин, по которым создатели Prometheus выбрали такую архитектуру:

  • Централизованный контроль. Если Prometheus отправляет запросы целевым объектам, всю настройку мы выполняем на стороне Prometheus, а не отдельных систем.

Prometheus сам решает, где и как часто проводить скрейпинг.

Если объекты сами отправляют данные, есть риск, что таких данных будет слишком много, и на сервере произойдет сбой. Когда система собирает данные, можно контролировать частоту сбора и создавать несколько конфигураций скрейпинга, чтобы выбирать разную частоту для разных объектов.

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

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

Это главное различие между базами данных временных рядов, которые собирают агрегированные метрики, и теми, что собирают необработанные метрики.

3. Развитая экосистема Prometheus

По сути Prometheus — база данных временных рядов.

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

Prometheus поддерживает следующие инструменты, расширяющие его функционал:

  • Alertmanager. Prometheus отправляет оповещения в Alertmanager на основе кастомных правил, определенных в файлах конфигурации. Оттуда их можно экспортировать в разные конечные точки (например, Pagerduty или Slack).
  • Визуализация данных. Как и в Grafana, вы можете визуализировать временные ряды прямо в пользовательском веб-интерфейсе Prometheus. Вы можете фильтровать данные и составлять конкретные обзоры происходящего в разных целевых объектах.
  • Обнаружение сервисов. Prometheus динамически обнаруживает целевые объекты и автоматически скрейпит новые цели по запросу. Это особенно удобно, если вы работаете с контейнерами, которые динамически меняют адреса в зависимости от спроса.



Часть II. Концепции Prometheus

Как и в руководстве по InfluxDB, мы подробно разъясним технические термины, связанные с Prometheus.

1. Модель данных «ключ-значение»

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

Prometheus работает с парами «ключ-значение». Ключ описывает, что мы измеряем, а значение хранит фактическую величину в виде числа.

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

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

Но что если нужно больше деталей о метрике?
Например, у процессора 4 ядра, и нам нужно 4 отдельных метрики?

И здесь на помощь приходят ярлыки. Ярлыки дают больше сведений о метриках, добавляя дополнительные поля. Например, вы описываете не просто скорость процессора, а скорость одного ядра по определенному IP.


Потом вы сможете фильтровать метрики по ярлыкам и просматривать только нужную информацию.

2. Типы метрик

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

Счетчик

Это, наверное, самый простой тип метрик. Счетчик, как понятно из названия, считает элементы за период времени.

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

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

А если нужно измерить, допустим, используемую память за определенный период?
Эта величина может уменьшаться. Как посчитать ее с Prometheus?

Измерители

Знакомьтесь — измерители!

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

Но если измерители могут увеличиваться и уменьшаться и принимать положительные и отрицательные значения, то выходит, они лучше счетчиков?
Значит, счетчики — бесполезны?

Поначалу и я так думал. Раз они могут все, давайте использовать их везде. Логично?

А вот и нет.

Измерители идеально подходят для измерения текущего значения метрики, которое со временем может уменьшиться.

Вот тут-то и кроются те самые подводные камни: измеритель не показывает развитие метрики за период времени. Используя измерители, можно упустить нерегулярные изменения метрики со временем.

Почему? Вот что говорит /u/justinDavidow:

«Измеритель показывает среднее значение дельты счетчика для единицы за период времени.

Счетчик учитывает каждую использованную единицу (если это процессор, то операции, циклы или такты), а потом вы можете выбрать, показатели за какой период вам нужны.

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

Если система отправляет метрики каждые 5 секунд, а Prometheus скрейпит целевой объект каждые 15, в процессе можно потерять некоторые метрики. Если выполнять дополнительные вычисления с этими метриками, точность результатов окажется еще ниже.

У счетчика каждое значение агрегировано. Когда Prometheus собирает его, он понимает, что значение было отправлено в определенный интервал.

Теперь не запутаетесь.

Гистограмма

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

Значения собираются в области с настраиваемой верхней границей. Поэтому гистограмма может:

  • Рассчитывать средние значения, то есть сумму значений, поделенную на количество значений.
  • Рассчитывать относительные измерения значений, и это очень удобно, если нужно узнать, сколько значений в определенной области соответствуют заданным критериям. Особенно это полезно, если нужно отслеживать пропорции или установить индикаторы качества.

В реальном мире я бы хотел получать оповещение, если у 20% моих серверов отклик больше 300 мс или отклик серверов больше 300 мс более 20% времени.

Если вы имеете дело с пропорциями, вам нужны гистограммы.

Сводки

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

Квантили, если что, — это деление плотности вероятности на отрезки равной вероятности.

Итак: гистограммы или сводки?

Все зависит от намерения.

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

Сводки, с другой стороны, показывают квантили за скользящий период (т. е. непрерывное развитие во времени).

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

3. Задания и экземпляры

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

Серверы реплицируются и распределяются по всему миру.

Чтобы это проиллюстрировать, давайте рассмотрим классическую архитектуру из двух серверов HAProxy, которые перераспределяют нагрузку по девяти бэкенд-веб-серверам (Нет-нет, никаких стеков Stackoverflow.)


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

Удобно же?

4. PromQL

Если вы используете базы данных на основе InfluxDB, вы, наверное, уже знакомы с InfluxQL. Или используете SQL в TimescaleDB.

У Prometheus тоже есть свой язык для запросов и извлечения данных с серверов: PromQL.

Как мы уже знаем, данные представлены в виде пар «ключ-значение». PromQL использует тот же синтаксис и возвращает результаты в виде векторов.

В Prometheus и PromQL есть два вида векторов:

  • Моментальные векторы, которые представляют все метрики по последней метке времени.
  • Векторы с диапазоном времени: если вам нужно посмотреть развитие метрики со временем, вы можете указать диапазон времени в запросе к Prometheus. В итоге получите вектор, объединяющий все значения, записанные за выбранный период.


PromQL API предоставляет набор функций для операций с данными в запросах.

Вы можете сортировать значения, применять к ним математические функции (например, рассчитывать производные или экспоненты) и даже строить прогнозы (например, по модели Хольта-Уинтерса).

5. Инструментирование

Инструментирование — это еще одна важная часть Prometheus. Вы инструментируете приложения, прежде чем извлекать из них данные.

На языке Prometheus инструментирование означает добавление клиентских библиотек в приложение, чтобы они предоставляли метрики Prometheus.

По сути, вы создаете объекты памяти (например, измерители или счетчики), которые будут динамически увеличивать или уменьшать значение.

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


6. Экспортеры

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

Для известных приложений, серверов и баз данных Prometheus предлагает экспортеры, с помощью которых можно мониторить целевые объекты.

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


Пара слов о взаимной совместимости

Большинство баз данных временных рядов поддерживают взаимную совместимость для своих систем.

Prometheus не единственная система мониторинга со своими требованиями к предоставлению метрик. Например, у InfluxDB (через Telegraf), CollectD, StatsD и Nagios тоже есть свои стандарты.

Поэтому для взаимодействия разных систем создаются экспортеры. Даже если Telegraf отправляет метрики не в том формате, который принимает Prometheus, Telegraf может послать эти метрики в экспортер InfluxDB, откуда их потом заберет Prometheus.

7. Оповещения

При работе с базами данных временных рядов вам нужна обратная связь от данных, и за это отвечают менеджеры оповещений.

В Grafana оповещения обычное дело, но они доступны и в Prometheus через менеджер оповещений.

Менеджер оповещений — это отдельный инструмент, который присоединяется к Prometheus и запускает кастомные оповещатели.

Оповещения определяются в файле конфигурации и задают набор правил для метрик. Если во временных рядах возникает соответствие правилу, оповещение инициируется и отправляется заданным получателям.


Часть III. Примеры использования Prometheus


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

Об этом и поговорим.

1. DevOps

Со всеми этими экспортерами для разных систем, баз данных и серверов очевидно, что Prometheus предназначен, в основном, для сферы DevOps.

Мы знаем, что в этой сфере множество конкурирующих поставщиков и персонализированных решений.

Prometheus идеально подходит для DevOps.

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

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

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

2. Здравоохранение

Сегодня решения для мониторинга нужны не только в ИТ. Они используются и в крупных отраслях, которые предоставляют гибкие и масштабируемые архитектуры для здравоохранения.

Спрос растет, и ИТ-архитектуры обязаны ему соответствовать. Если у вас нет надежного инструмента для мониторинга всей инфраструктуры, вы рискуете столкнуться с серьезными перебоями в обслуживании. Уж в сфере здравоохранения такую опасность точно надо свести к минимуму.

3. Финансовые услуги

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

Джейми Кристиан (Jamie Christian) и Алан Стрейдер (Alan Strader) показывали, как они используют Prometheus для мониторинга своей инфраструктуры в Northern Trust. Очень содержательно, советую посмотреть.

Часть X. Что дальше?


Пора переходить от теории к практике.

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

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

Чтобы приступить к работе с Prometheus, изучите все доступные экспортеры.

Потом установите нужные инструменты, создайте свою первую панель мониторинга — и вперед!

Если вам нужно вдохновение, почитайте мою статью о том, как мониторить машину Linux с Prometheus и Grafana. Там есть инструкции по настройке инструментов и первой панели мониторинга.

Эта система мониторинга состоящая из нескольких компонентов, написанных на языке программирования Golang. Основной компонент Prometheus - это база данных для хранения метрик. Ещё есть компоненты *_exporter для сбора данных с различных сервисов и компонент alertmanager для отправки уведомлений. Кроме того, для отображения метрик в удобном виде принято использовать Grafana. Давайте же рассмотрим как выполняется установка и настройка Prometheus на примере Ubuntu 20.04.

Установка и настройка Prometheus

1. Установка Prometheus

Вы можете установить Prometheus из официальных репозиториев в Ubuntu. Вы можете посмотреть какие пакеты prometheus доступны можно такой командой:

sudo apt search prometheus

Для установки выполните команду:

sudo apt install prometheus

Однако в репозиториях содержится уже старая версия программы. Если вы хотите самую свежую версию, то придется скачать её из официального сайта. Поскольку программа написана на Golang, то и распространяется она в виде одного исполняемого файла. Поэтому установить её не сложно, достаточно скачать архив, распаковать и скопировать исполняемый файл в папку /usr/local/bin, также надо будет скопировать несколько исполняемых файлов.

Сначала скачайте пакет Prometheus с официальной страницы GitHub. Для Linux нужен пакет с исполняемыми файлами linux-amd64:

Загруженный документ надо распаковать. Для этого можно воспользоваться утилитой tar:

Затем скопируйте исполняемые файлы prometheus и promtool в папку /usr/local/bin:

Для конфигурационных файлов необходимо создать папку /etc/prometheus:

sudo mkdir /etc/prometheus

Затем скопируйте туда такие папки с конфигурационными файлами:

В них содержатся файлы для работы веб-интерфейса программы. Кроме того, нужно создать конфигурационный файл /etc/prometheus/prometheus.yml со следующим содержимым:

sudo vi /etc/prometheus/prometheus.yml

Здесь сказано, что по умолчанию интервал сбора данных составляет 15 секунд, а также добавлена задача по сборку данных с самого Prometheus. Никаких данных о состоянии сервера там не будет, только параметры работы программы.

Для запуска программы понадобится пользователь prometheus:

sudo useradd --no-create-home --shell /bin/false prometheus

Осталось только создать файл systemd службы для удобного запуска prometheus. Для этого выполните команду:

sudo systemctl edit --full --force prometheus.service

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus/ \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.target

2. Запуск Prometheus

После этого можно запустить Prometheus и проверить его работу. Для этого выполните:

sudo systemctl start prometheus

Затем для того чтобы убедится что всё запустилось выполните:

sudo systemctl status prometheus

Обратите внимание на строчку Active. Её значение должно быть active (running). Если там что-то другое, значит программа не запустилась, и вы можете посмотреть лог ниже чтобы понять причину.

3. Доступ к веб-интерфейсу

Если программа запущена, вы можете получить доступ к веб-интерфейсу в браузере. Откройте порт 9090 на сервере, куда вы устанавливали Prometheus:

Чтобы убедится, что сбор данных для сервиса prometheus работает откройте меню Status -> Targets. Здесь должна отображаться одна цель prometheus:

Спустя некоторое время можно попытаться построить график из собранных данных. Для этого вернитесь на главную страницу и в строке Expression наберите go_memstats_frees_total. Затем перейдите на вкладку Graph:

Будет отображен график этого показателя. С помощью поля Expression можно смотреть какие метрики уже собираются и просматривать их значения. Метрика go_memstats_frees_total стандартная для каждого экспортера данных и обычно для отображения на графиках не используется.

4. Установка Grafana

Смотреть графики Prometheus в его веб-интерфейсе не удобно и не практично. Там вы можете только убедится, что всё собирается верно. Для просмотра графиков же следует использовать Grafana. Для её установки надо сначала установить несколько компонентов:

Затем добавьте ключ репозитория в систему:

И добавьте сам репозиторий:

echo "deb https://packages.grafana.com/enterprise/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

После этого обновите список пакетов в репозиториях и установите Grafana:

sudo apt update
sudo apt install grafana

5. Настройка Grafana для Prometheus

По умолчанию Grafana доступна на порту 3000. Логин и пароль при первом входе: admin и admin соответственно. Я не буду расписывать первоначальную настройку. Об этом читайте здесь. Когда войдете в интерфейс программы, откройте Configuration -> Data Sources и нажмите кнопку Add Data Source:

В открывшемся окне выберите тип Data Source - Prometheus:

На шаге настройки подключения необходимо в поле URL ввести адрес сервера, на котором доступен Prometheus и его порт. Если Grafana находится на той же машине, что и Prometheus можно использовать localhost, а порт по умолчанию 9090:

После этого нажмите Save and Test и вы должны увидеть что тест прошёл успешно.

После этого можно переходить к созданию досок.

6. Импорт доски Prometheus в Grafana

Доску для метрик, собираемых по умолчанию сервером Prometheus можно взять здесь. На этой странице вам нужен только идентификатор 3362, который находится под надписью Get this dashboard:

Эта доска специально разработана для экспортера Prometheus и отображает с него данные. Для её добавления в интерфейсе Grafana откройте Dashboards -> Manage -> Import и введите идентификатор доски:

Затем нажмите кнопку Load и на следующей странице введите имя доски и выберите ранее созданный источник данных (Data source). В этом примере он называется Prometheus:

После нажатия на кнопку Import перед вами откроется доска с метриками, её можно уже настроить так, как вам необходимо:

7. Установка Node Exporter

sudo apt install prometheus-node-exporter

Или можно получить последнюю версию из страницы на GitHub. После загрузки распакуйте её:

Затем скопируйте исполняемый файл программы в /usr/local/bin:

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

sudo useradd --no-create-home --shell /bin/false node_exporter

И создайте юнит файл systemd для её запуска:

sudo systemctl edit --full --force node_exporter.service

[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target

Шаг 8. Настройка node_exporter

Далее необходимо запустить node_exporter. Для этого выполните такую команду:

sudo systemctl start node_exporter

Затем проверьте состояние сервиса:

sudo systemctl status node_exporter

Как и в случае с Prometheus состояние должно быть active (running):

А в логах вы можете найти на каком порту ожидает подключений этот экспортёр. Именно в этих логах необходимо смотреть работает ли экспортёр хорошо или с ним что то не так.

Ещё один способ убедится что экспортёр возвращает все необходимые метрики открыть URL /metrics на порту, где экспортёр ожидает подключений. Для node_exporter по умолчанию используется порт 9100, о чём и сообщается в логе:

Как видите, кроме стандартных метрик с приставкой go* экспортируются и довольно много метрик начинающихся на node. Значит всё работает.

Шаг 9. Добавление node_exporter в prometheus

Дальше нужно сообщить prometheus что необходимо собирать данные с этого экспортёра. Под каждого экспортёра в конфигурационном файле необходимо создавать подраздел в scrape_configs со следующим содержимым:

В данном случае полный конфигурационный файл prometheus будет выглядеть вот так:

sudo vi /etc/prometheus/prometheus.yml

Для формата yaml отступы имеют очень важное значение, поэтому следите чтобы с ними было всё хорошо. В данном примере node_exporter находится на том же компьютере, что и prometheus поэтому можно указать localhost. Такой экспортёр надо установить на все машины, которые надо отслеживать с помощью программы. Для каждой надо создать свою job. После завершения настройки перезапустите Prometheus:

systemctl restart prometheus

Теперь можно проверить в Prometheus, что данные передаются:

Шаг 10. Импорт доски для Node Exporter

Аналогично метрикам от сервера Prometheus можно выводить в Grafana метрики любого другого экспортёра. Для большинства из них уже созданы шаблоны досок. Доску для node_exporter можно найти здесь. Откройте Dashboards -> Manage -> Import и введите идентификатор доски 1860:

На следующей странице введите название доски и выберите источник данных снова Prometheus:

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

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

Выводы

В этой небольшой статье мы рассмотрели как выполняется установка Prometheus Grafana в Ubuntu 20.04. Как видите, программа довольно проста в настройке, намного проще по сравнению со связкой Collectd + IfluxDB и возможностей здесь намного больше. А какой системой мониторинга пользуетесь вы? Напишите в комментариях!

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Feb 15, 2016 21:30 · 478 words · 3 minute read prometheus monitoring

Принципиально новый инструмент для мониторинга и сбора метрик Prometheus от разработчиков SoundCloud порой называют системой мониторинга нового поколения. Давайте разберемся с его особенностями и компонентами!

Система мониторинга Prometheus состоит из следующих компонентов:

Процедура установки не должна вызвать проблем:

С помощью приведённых команд мы установили сервер Prometheus, а также дополнительный компонент — node_exporter , который собирает данные о состоянии сервера.

Примечание. Установка и настройка компонентов pushgateway и alertmanager в данной статье не рассматривается.

В конфигурационном файле /etc/prometheus/prometheus.yml удалены настройки неиспользуемых компонентов pushgateway и alertmanager и на данном этапе он выглядит следующим образом:

Структуру конфигурационного файла рассмотрим подробнее. В секции global могут быть описаны такие параметры:

  • scrape_interval — интервал сбора метрик (общий для всех задач);
  • evaluation_interval — интервал сверки с правилами;
  • rule_files — файлы правил (о них поговорим в следующих статьях).

В секции scrape_configs могут быть описаны такие параметры:

  • job_name — имя задачи;
  • scrape_interval — интервал сбора метрик (переопределяет значение из секции global );
  • scrape_timeout — время ожидания данных;
  • metrics_path — ресурс, на который нужно передавать метрики;
  • scheme — протокол для передачи метрик;
  • basic_auth — данные для авторизации на сервере, с которого собираются метрики ( username:<логин> , password:<пароль> );
  • target_groups — группы или отдельные сервисы, для которых собираются метрики.

В поле Expression выбираем метрику, для которой нужно отобразить график. Например, посмотрим на использование CPU — приведем метрику к виду sum(rate(node_cpu[5m])) by (mode) и нажмем на кнопку Execute.

Можно для наглядности убрать с графика время простоя ( idle ), тогда наша метрика будет выглядеть так sum(rate(node_cpu[5m])) by (mode) .

Над графиком расположена «панель управления» периодом отображения статистики.

Если у вас несколько серверов, с которых нужно собирать данные, то достаточно установить на каждый сервер пакет node-exporter командой:

дописать хосты в конфиг /etc/prometheus/prometheus.yml на сервере Prometheus, например так:

и перезапустить Prometheus для применения изменений.

Можно создавать собственные консоли с помощью HTML-шаблонизатора Go и официальных инструкций от Prometheus или собирать дашборды с помощью PromDash (подробнее об этом читайте в следующей статье).

Читайте также: