Архитектура Prometheus и Node Exporter

Я 3 дня читал об этом, даже настраивал набор контейнеров для их тестирования, но у меня есть сомнения.

Я понимаю, что архитектура Prometheus + Node exporter основана на:

  • Экспортер узлов знает, как извлекать метрики. Они доступны в HTTP, например. : 9201 / метрики
  • Prometheus каждые X секунд запрашивает эти конечные точки HTTP (узел-экспортер HTTTP) и сохраняет метрики. Он также предоставляет еще один HTTP для визуализации / запросов графа / консоли.

Вопрос 1:

Предположим, вам нужны показатели ЦП каждые 15 с, показатели жесткого диска каждые 5 м, сеть каждые 1 м, обработка каждые 30 с.

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

Вопрос 2:

Предположим, вам нужен 1 экземпляр Prometheus и 3 экспортера узлов, разные общедоступные серверы. Я ничего не вижу относительно экспортера узлов и его безопасности. Конечная точка HTTP является общедоступной.

Как я могу безопасно запросить метрики с моих 3 серверов?

Вопрос 3:

Я не знаю, упускаю ли я что-то. Но, например, сравнивая это с Telegraf, последний отправляет метрики в базу данных. Таким образом, Telegraf выступает в роли экспортера узлов. Мне нужно только защитить соединение с базой данных (только открытый порт).

Можно ли настроить node-exporter для отправки набора метрик каждый X раз на сервер Prometheus? (так что мне не нужно открывать публичный порт на каждом публичном сервере, только на сервере Prometheus) Я так понимаю, что для этого нужен pushgateway? Как изменить поведение узла-экспортера?

Вы порекомендуете мне другую архитектуру, которая может удовлетворить мои потребности? (1 главный, много подчиненных для запроса метрик)


person user3819881    schedule 22.11.2019    source источник


Ответы (2)


Вопрос 1

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

У вас может быть другое задание, настроенное для каждого со своими собственными scrape_interval и HTTP Параметры URL params. Далее, это зависит от функций, предлагаемых экспортером.

В случае node_exporter вы можете передать список сборщиков:

  • cpu каждые 15 с (задание: node_cpu)
  • process каждые 30 секунд (задание: node_process)
  • (ну вы поняли) ...

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

Вопрос 2

Как я могу безопасно запросить метрики с моих 3 серверов?

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

Лично я использовал exporter_exporter в классической архитектуре.

Вопрос 3

Можно ли настроить node-exporter для отправки набора метрик каждый X раз на сервер Prometheus? (так что мне не нужно открывать публичный порт на каждом публичном сервере, только на сервере Prometheus) Я так понимаю, что для этого нужен pushgateway? Как изменить поведение узла-экспортера?

Нет, Prometheus - это архитектура на основе pull: вам понадобится URI, доступный Prometheus для каждой службы, которую вы хотите отслеживать. Я предполагаю, что вы могли бы повторно использовать компоненты из другого решения для мониторинга и использовать специальный экспортер, такой как collectd экспортер.

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

person Michael Doubez    schedule 24.11.2019

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

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

Как я могу безопасно запросить метрики с моих 3 серверов?

В документе по безопасности Prometheus говорится об использовании обратного прокси-сервера для такого рода вещей.

Можно ли настроить node-exporter для отправки набора метрик каждый X раз на сервер Prometheus?

Я так не верю. Prometheus - это система мониторинга тягового типа. Если вам действительно нужно перемещать данные с помощью push, то вам, вероятно, придется иметь сценарии или любые другие данные, которые отправляются в кеш на сервере Prometheus, а затем Prometheus регулярно опрашивает этот кеш. Я не знаю, существует ли такое.

person Michael Kohne    schedule 22.11.2019