SpringBoot — метрики для кода состояния ответа HTTP для панели управления Grafana

Небольшой вопрос о Spring Boot и о том, как получить код состояния ответа http и отобразить его в Grafana.

Установка: приложение Java SpringBoot версии 2.5.1 (относится к любому SpringBoot 2.x.x). Приложение имеет зависимости привода и микрометра. Приложение отлично генерирует метрики Prometheus.

Меня очень интересует эта панель инструментов: код состояния ответа https. Не прошедшее время, не количество, а просто ответ кода состояния http (ответил 200, 401, 503 и т. д.). Из-за зависимостей я вижу эти показатели!

http_server_requests_seconds

Поэтому я сначала попробовал это:

increase(http_server_requests_seconds{_ws_="my_workspace",_ns_="my_namespace",_source_="my_source", _bucket_="+Inf"}[15m])

Кажется, это что-то дает:

введите здесь описание изображения

Я могу видеть некоторые http 200, некоторые http 503. Но по какой-то причине я также вижу не только один 200, а их кучу с тем, что, кажется, прошло время.

У меня вопрос, запрос не правильный? Какой запрос будет наиболее подходящим, чтобы получить другой ответ кода состояния http с течением времени, пожалуйста?

Прежде всего, какая панель визуализации была бы лучшей для представления разницы в ответах кода состояния HTTP?

Спасибо


person PatPatPat    schedule 13.06.2021    source источник
comment
Вы используете spring-webflux? Возможно, это связано с тем, что приложение возвращает несколько ответов до полного запроса Flux. Я бы сделал простой тест с запросом к единственному Mono для проверки.   -  person Felipe    schedule 13.06.2021
comment
Спасибо Фелипе за комментарий, вы правы, действительно используете Webflux. Я переключился на возврат простого моно, все еще наблюдая за тем же   -  person PatPatPat    schedule 14.06.2021
comment
Если вы печатаете результат запроса в виде таблицы, то ищете одинаковые значения для одного и того же ответа 200-OK и разные значения для разных ответов 200-OK. Затем вы используете некоторый оператор prometheus, чтобы различать их...   -  person Felipe    schedule 14.06.2021
comment
Запрос возвращает несколько значений с разными метками. Удалите 200 и 500 из легенды запроса, и вы увидите разницу.   -  person anemyte    schedule 30.06.2021
comment
Спасибо @anemyte за комментарий. Мои легенды содержат только это {{status}} Вы имеете в виду, что я должен удалить это? Поменять на что-то другое?   -  person PatPatPat    schedule 30.06.2021
comment
Просто удалите его пока. Вместо этого он покажет вам все метки, и вы поймете, почему их несколько 200.   -  person anemyte    schedule 30.06.2021


Ответы (1)


Grafana добавит по одной строке для каждой отдельной метки, найденной в вашем запросе Prometheus. Когда вы определяете легенду, которая не содержит всех отдельных меток, вы увидите несколько строк с одной и той же легендой.

increase(http_server_requests_seconds_count{}[1m]) с легендой {{status}}:

пример-те же-легенды

Если вы удалите свое определение легенды, вы сможете увидеть все метки, чтобы определить, какие из них создают повторяющиеся значения.

increase(http_server_requests_seconds_count{}[1m]) без определения легенды:

пример-1

Если вы больше ограничите запрос, например, добавив условие {method="POST"}, строк тоже будет меньше:

пример-2

Другой вариант — агрегировать результаты, чтобы исключить ярлыки. Исходя из вопроса, вы хотите увидеть общее увеличение на код состояния HTTP. Вот пример того, что я считаю хорошим способом визуализировать это:

sum(increase(http_server_requests_seconds_count{}[1m])) by (status) с легендой {{status}}:

пример-агрегация

person Matt    schedule 07.07.2021