Получить запрос / Второе в многоподвижной пружине - PullRequest
0 голосов
/ 13 марта 2019

У меня есть несколько образов докеров (pod) одного и того же приложения Spring-Boot в среде с балансировкой нагрузки (OpenShift), и каждый образ докера предоставляет конечную точку Prometheus.Я использовал следующий запрос в Prometheus для получения запросов в секунду одного образа докера:

rate(http_server_requests_seconds_count [1m])

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

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

Заранее спасибо.

1 Ответ

1 голос
/ 13 марта 2019

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

Что вам нужно сделатьэто точка Прометея в каждом экземпляре вашего приложения.Затем Прометей будет собирать показатели отдельно от каждого из них, применяя метку instance с IP-адресом или DNS-именем экземпляра, с которого он был получен.Т.е. у вас будет N отдельных http_server_requests_seconds_count метрик:

http_server_requests_seconds_count{job="myapp",instance="1.2.3.4:8080"} 1234
http_server_requests_seconds_count{job="myapp",instance="5.6.7.8:8080"} 5678
...

Если вы затем запросите Prometheus rate(http_server_requests_seconds_count[1m]), вы получите вектор с отдельными значениями для каждого экземпляра:

{job="myapp",instance="1.2.3.4:8080"} 1.234
{job="myapp",instance="5.6.7.8:8080"} 5.678

...

Если вам нужна общая частота запросов на одно задание, вы можете вместо этого запросить sum by(job) (rate(http_server_requests_seconds_count[1m])).

...