Prometheus Exporter — фильтрация целей

Я нахожусь в процессе написания Prometheus Exporter в Go, чтобы предоставлять метрики, загруженные с серверов AIX. Серверы AIX передают свои метрики (в формате json) центральному приемнику (программе экспорта), который преобразует их в стандартные метрики Prometheus и предоставляет для очистки.

У меня проблема в том, что имя хоста для метрик извлекается из отправленного json. Я храню это как метку в каждой метрике. Например. njmon_memory_free{lpar="myhostname"}. Хотя это работает, это далеко не идеально, поскольку, похоже, нет способа перемаркировать это на обычную метку instance (njmon_memory_free{instance="myhostname"}. Переименование Prometheus происходит до очистки, поэтому метка lpar не там для перемаркировки.

Один из вариантов, по-видимому, состоит в том, чтобы переписать экспортер так, чтобы сервер Prometheus проверял определенные цели, каждая из которых представляла собой lpar. Чтобы это работало, мне нужно средство для фильтрации сохраненных метрик по lpar, чтобы возвращались только метрики, относящиеся к target/lpar. Является ли это практическим решением или я вынужден создавать выделенный прослушиватель или URL-адрес для каждого lpar?

Как я понимаю, вы являетесь автором этого экспортера. Вы можете использовать метку «экземпляр» в экспортере, а не «lpar». Также вы можете использовать «honor_labels: true» в файле scrape_config Prometheus.

Sasha Golikov 23.12.2020 23:13

Это не рекомендуемая архитектура Prometheus. Prom должен очищать непосредственно каждый из этих серверов AIX. Если бы это было так, у вас не было бы проблем с правильной идентификацией имени хоста. Есть ли какая-то конкретная причина, по которой невозможно следовать рекомендациям Прометея?

marco.m 24.12.2020 10:45

@marco.m Есть несколько причин. * njmon предназначен для отправки, а не очистки * njmon json отформатирован несовместимым с Prometheus образом. это может быть некоторое время (или никогда).

Steve Crook 24.12.2020 11:35

Ну я вижу, хоть один. Как бы я ни любил Go, если это не поддерживается (или болезненно) в AIX, я бы подумал об использовании другого языка для написания экспортера, который будет установлен на каждом узле, настроить этот njmon для локальной отправки в экспортер и, наконец, настроить Prometheus для очистить каждый отдельный узел. По моему опыту работы с Prometheus (мне он очень нравится), лучше плыть по течению, чем пытаться что-то впихнуть.

marco.m 24.12.2020 19:00

@SashaGolikov ваше предложение сработало отлично. Я понимаю, что это не обычная архитектура Prometheus, но на данный момент она работает и требует лишь минимальных изменений в отслеживаемых системах AIX. Спасибо за помощь.

Steve Crook 25.12.2020 11:39
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
0
5
320
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

  • Используйте метку «экземпляр» в экспортере, а не «lpar» (измените код экспортера)
  • Используйте «honor_labels: true» в Prometheus scrape_config.

Другие вопросы по теме