Запросы Grafana Dashboard не работают в браузере, но работают через curl/postman

Вопрос или проблема

Настройка

Сначала я развернул стек TIG (Telegraf, InfluxDB и Grafana) на сервере Linux, где он работал как ожидалось. Недавно я развернул его на OKD (OpenShift upstream). У меня есть несколько панелей мониторинга, каждая из которых работает, когда диапазон времени достаточно мал и данные могут загружаться ‘мгновенно’.

Проблема

Но когда я указываю диапазон времени более часа, я начинаю видеть, как POST-запросы блокируются браузером из вкладки сети инструмента разработчика. Это поведение наблюдается в нескольких браузерах (Firefox, Edge и Chrome).

POST-запросы блокируются почти сразу после отправки и не завершаются с тайм-аутом. В Firefox я вижу ошибку NS_BINDING_ABORTED. Панель мониторинга Grafana продолжает отправлять запрос без успеха (как видно на скриншоте инструмента проверки ниже).

Скриншот проверки сети

Через минуту или две эти POST-запросы неожиданно начинают успешно обрабатываться. Я не смог понять, что вызывает эту проблему.

Я скопировал тело запроса и заголовки этих запросов в Postman и попытался отправить оттуда, что сработало безупречно, что заставило меня думать, что это может не быть проблемой Grafana или балансировщика нагрузки. Чтобы дополнительно изолировать балансировщик нагрузки, я вывел Grafana на сервис nodeport, чтобы получить к ней доступ вне балансировщика нагрузки, и получил такое же поведение.

Чтобы проверить, является ли это проблемой InfluxDB, я запустил запросы, указанные в теле запроса, прямо внутри пода InfluxDB, и получил соответствующий вывод.

Некоторые посты в интернете предполагают, что файрволы могут вызывать эти проблемы, но у меня нет установленного файрвола. Клиентский запрос идет к балансировщику нагрузки, который перенаправляет его на один из серверов OKD.

Еще один пост предполагал, что передача HTTP-трафика в HTTPS-соединение может быть причиной этого. У меня есть самоподписанные сертификаты для HTTPS-соединений, так что может ли это быть проблемой? Пока что я не нашел никаких доказательств, подтверждающих это в моей проблеме. Чтобы исключить эту проблему, я создал HTTP/небезопасный маршрут и получил такое же поведение, что заставило меня подумать, что это тоже может не быть проблемой.

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

Ответ или решение

Анализ проблемы: Запросы Grafana Dashboard работают в curl/Postman, но не работают в браузере

1. Контекст и описание настройки

Ваше текущее окружение, состоящее из стека TIG (Telegraf, InfluxDB, Grafana), было успешно развернуто на Linux-сервере, но, после перехода на OpenShift (OKD), вы столкнулись с проблемами при работе с панелями управления Grafana. Наиболее заметными проблемами являются блокировка POST-запросов браузерами при указании временного диапазона более одного часа. Запросы работают нормально при использовании curl или Postman, что указывает на то, что проблема может быть связана с конфигурацией или поведением браузеров, а не с самой Grafana или сервером.

2. Диагностика проблемы

Вы привели несколько важных аргументов, которые помогают сузить круг поиска причины:

  • Ошибка NS_BINDING_ABORTED в Firefox может указывать на то, что запросы блокируются браузером или тем, как они оформлены на стороне клиента.
  • Неправильные настройки для HTTPS, особенно если вы используете самоподписанные сертификаты, могут вызывать проблемы с безопасностью, но вы уже проверили это, создав HTTP-маршрут.
  • Производительность и зависания сети также могут быть фактором, особенно если браузеры продолжают отправлять запросы, а ответ приходит с задержкой или не приходит вовсе.

3. Возможные причины и решения

  1. Проблемы с конфигурацией OpenShift:

    • Убедитесь, что конфигурация вашего сервиса в OpenShift правильно настроена для работы с Grafana. Неправильные параметры, такие как тайм-ауты, могут привести к блоку длинных запросов.
  2. Таймауты браузера:

    • Некоторые браузеры имеют ограничения на время ожидания ответов от серверов. Попробуйте увеличить таймауты на уровне вашей реализации. Это можно сделать через настройки сервера или настройки самой Grafana.
  3. Задержки сети:

    • Вам следует проанализировать сетевой трафик между браузером и сервером, используя инструменты для отслеживания этих данных. Это позволит выявить проблемы с задержками или потерей пакетов, которые могут возникать в вашей сети.
  4. Deferred обрабатываемые запросы:

    • Время ожидания, при котором запросы не обрабатываются, может быть связано с нагрузкой на сервер или с тем, что Grafana не в состоянии возвращать данные быстро. Обратите внимание на производительность вашего сервера на OpenShift и смотрите на использование ресурсов (CPU, память).
  5. Настройки прокси/балансировки нагрузки:

    • Если у вас есть прокси или балансировщик нагрузки, проверьте их настройки, поскольку они могут блокировать большие запросы или неправильно обрабатывать длинные соединения.
  6. Оптимизация запросов:

    • Убедитесь, что запросы, отправляемые в Grafana, оптимизированы. Постарайтесь сократить объем загружаемых данных или измените параметры временного диапазона, чтобы разделить запросы на меньшие части.
  7. Альтернативные браузеры и версии:

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

4. Заключение

Тщательное наблюдение за сетевыми запросами и оптимизация параметров вашего окружения помогут выявить природу проблемы. На данный момент, основное внимание стоит уделить конфигурации OpenShift, сетевым задержкам и производительности серверов. Если ни одно из решений не поможет, возможно, стоит обратиться за поддержкой в сообщество OpenShift или Grafana для получения более специфичной помощи.

Оцените материал
Добавить комментарий

Капча загружается...