Сравнение версий
Ключ
- Эта строка добавлена.
- Эта строка удалена.
- Изменено форматирование.
Тип статьи | Познавательная | ||||||||
---|---|---|---|---|---|---|---|---|---|
Компетенции | Администратор | ||||||||
Необходимые права | Администратор платформы и root на сервере | ||||||||
Версия платформы | 2.22 | ||||||||
Статус |
| ||||||||
Сложность | легко | ||||||||
Полезные ссылки | https://www.hangfire.io/ | ||||||||
Дополнительные сведения | Ubuntu 20.04, включен SEQ |
Введение
С превью дашбордов временами могу происходит не понятные вещи. Превью может вовсе не создаться, либо создаться, но виджеты на нём будут с ошибками. Чтобы понять с какой стороны подойти к этой проблеме и была написана эта небольшая статья.
1. Как создаются превью
Превью дашбордов создаются при сохранении этих самых дашбордов. В будущем они обновляются задачей из планировщика (внутри контейнера schedule используется Hangfire для управления запланированными задачами) через определённое время, если верить логам это время равно 1м. Также создание превью инициируется постановкой галки в настройках дашбордов - "Создавать превью автоматически", т.е. если мы её отключим, а затем включим (по умолчанию она включена). Бывает этот самый трюк помогает решить проблему "несоздания" превью. Сами превью хранятся в mongodb - DashboardScreenshots. Также в этой коллекции хранятся такие параметры как дата последнего обновления и флаг "Создавать превью автоматически".
Ниже представлена схема создания превью:
Давайте рассмотрим случай, когда мы сохраняем дашборд в ДД. После сохранения на адрес "/corelogic/api/command" посылается запрос:
Блок кода | ||||
---|---|---|---|---|
| ||||
{ DashboardGuid: "...", CommandType: "MakeDashboardPreview+Command" } |
Если для "Dashboard service" уровень логирования установить Full, то в событие Seq выглядит следующим образом:
По расписанию превью обновляются каждую минуту. Выполняются следующие 2 запроса, адрес "/corelogic/api/command":
Блок кода | ||||
---|---|---|---|---|
| ||||
{ CommandType: "RefreshOutdatedDashboardPreviews+Command" } |
Данный запрос обновляет устаревшие превью.
Блок кода | ||||
---|---|---|---|---|
| ||||
{ CommandType: "MakeBrandNewDashboardPreviews+Command" } |
А этот запрос создаёт превью для дашбордов, у которых его еще нет. Например пустой дашборд.
Запросы посылаются на внешний адрес платформы.
2. Определим тип проблемы
Для начала стоит понять, какого рода проблема перед нами.
Превью не создаётся вовсе
Такая проблема может проявиться если дашборд грузится слишком долго (более 30сек), превью просто не успевает создаться. Также такое поведение бывает на версии 2.19, когда на дашборде имеются виджеты с ошибками. Ну и в других необъяснимых случаях.
Если у нас не 2.19, то идём далее, если 2.19 то следует исправить ошибки в виджетах.
Для диагностики данной проблемы первым делом стоит посмотреть как долго грузится дашборд, если скорость загрузки в норме, то переходим к логам. В логах ищем ошибки рядом с такими событиями, как:
- MakeBrandNewDashboardPreviews;
- MakeDashboardPreview;
- RefreshOutdatedDashboradPreviews.
От этих ошибок можно отталкиваться куда копать далее, если они конечно будут.
Часто для решения проблемы не создавшегося превью в данном случае помогает снятие и дальнейшая установка галки "Создавать превью автоматически" в настройках дашборда на портале. Но это не дает гарантий, что проблема не повторится.
Превью создаётся, но у виджетов ошибки или не все/не те данные
Такое поведение может проявляться если у роли, которая назначена для сбора превью ограничены права. Стоит зайти в базу данных и проверить права у этой роли.
Также такое поведение может быть из-за запущенных загрузчиков или планов загрузки. Когда создание превью попадает на выполняющийся план загрузки, то у виджетов будут ошибки. Это достаточно редкое явление, но оно есть.
Чего не хватает.
- Не расписаны компоненты, которые задействованы в создании превью. Не указано, что там внутри работает для этих созданий.
- не указано, где что-то хранится, настройки, сами картинки.
- Нет реквестов, которые должны решать проблемы нормальной диагностики.
- Не расписан весь пайплайн. Что происходит регулярно, что вручную. Какие команды куда посылаются. Используется ли где-то внеш url в этих созданиях. Могут ли на превьюшки влиять настройки вне докер подсети.
- Нет картинок