Я нахожусь в процессе написания 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?
Это не рекомендуемая архитектура Prometheus. Prom должен очищать непосредственно каждый из этих серверов AIX. Если бы это было так, у вас не было бы проблем с правильной идентификацией имени хоста. Есть ли какая-то конкретная причина, по которой невозможно следовать рекомендациям Прометея?
@marco.m Есть несколько причин. * njmon предназначен для отправки, а не очистки * njmon json отформатирован несовместимым с Prometheus образом. это может быть некоторое время (или никогда).
Ну я вижу, хоть один. Как бы я ни любил Go, если это не поддерживается (или болезненно) в AIX, я бы подумал об использовании другого языка для написания экспортера, который будет установлен на каждом узле, настроить этот njmon для локальной отправки в экспортер и, наконец, настроить Prometheus для очистить каждый отдельный узел. По моему опыту работы с Prometheus (мне он очень нравится), лучше плыть по течению, чем пытаться что-то впихнуть.
@SashaGolikov ваше предложение сработало отлично. Я понимаю, что это не обычная архитектура Prometheus, но на данный момент она работает и требует лишь минимальных изменений в отслеживаемых системах AIX. Спасибо за помощь.
Поэтому я исправляю свой ответ, данный в комментариях, так как он был полезен автору.
Как я понимаю, вы являетесь автором этого экспортера. Вы можете использовать метку «экземпляр» в экспортере, а не «lpar». Также вы можете использовать «honor_labels: true» в файле scrape_config Prometheus.