В системе, которую мы создаем, нам нужно отслеживать компоненты (Kafka Connect, Spark..etc), запущенные в кластере k8s с помощью Prometheus.
Поскольку кластер k8s работает в другой сети, сервер Prometheus не может напрямую обрабатывать эти компоненты.
Для этого мы собираемся запустить PushGateWay в нашем кластере k8s.
Я придумываю следующий дизайн:
- Пользовательский компонент «Push Proxy» читает «kube-api-service», чтобы получить список модулей для каждого компонента, который мы хотим отслеживать. (Также периодически проверяет состояние модуля / проверяет новые модули .. и т. Д.)
- «Push Proxy» периодически отбирает экспортеров в каждом модуле. (Конечная точка вызова / метрики каждого модуля).
Сохраните эти очищенные матрицы в буфере.
- «Push Proxy» периодически отправляет буферизованные матрицы в PushGateWay.
- Этот PushGateWay доступен от Prometheus. Прометей периодически очищает матрицы от PushGW.
Вопросы:
- есть ли какой-то компонент, такой как "Push Proxy", который мы планируем создать?
- Это правильный дизайн для решения этой проблемы.