gremlintv2,
вообще чисто идеологически prometheus работает через pull данных
но, бывает так что сущности которые мы собираемся мониторить:
1) являются эфемерными, то есть, являются смертными сущностями, которые могут восстать позже, в другом месте и с другим адресом например
2) могут быть просто job'ами которые естественно живут какой-то определенный промежуток времени
3) просто не доступны для prometheus сервера
Хороших вариантов на самом деле 2 как по мне
1) если промитеус сидит внутри того же кластера - то мы просто добавляем в конфиг секцию типа такой
job_name: ${appName}
kubernetes_sd_configs:
- role: pod
relabel_configs:
- action: keep
regex: ${appName}
source_labels:
- __meta_kubernetes_pod_container_name
metrics_path: ${path}
scrape_interval: ${interval}s
тогда промитеус через нативный кубернет DNS сможет получить информацию о подах, отфильтрует по __meta_kubernetes_pod_container_name все нужные и все будет заебись
2) этот вариант подойдет для обоих вариантов когда промитеус сидит внутри или снаружи кластера
https://github.com/prometheus/pushgateway
если вкратце то 1) вы создаете пушгейтвей эндпоинт для вашего сервиса, 2) туда по хттп пушите свои метрики 3) в конфиге промитеус-сервер вы добавляете `scrape_configs` секцию как обычно, которая пулит данные с пушгейтвей эндпоинта
PS
node_exporter в этом случае не особо помогает потому что по сути создает эндпоинт который должен мониторить промитеус, если само приложение не доступон для промитеуса то и node_exporter тоже не будет доступен что очевидно