Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.


Тип статьиПознавательная
КомпетенцииАдминистратор
Необходимые праваАдминистратор платформы и root на сервере
Версия платформы2.22
Статус
Статус
colourGrey
titleЧерновик
Сложность легко
Полезные ссылкиhttps://www.hangfire.io/
Дополнительные сведенияUbuntu 20.04, включен SEQ


Введение


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


1. Триггеры, вызывающие создание превью.


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

  1. Сохранение в DD. Нажимаем кнопку "Сохранить" в Дэшборд Дизайнере.
  2. Обновление по расписанию. Существует регулярная задача в контейнере schedule (внутри используется Hangfire для управления запланированными задачами), которая запускается раз в 10 минут.
  3. Постановка флажка в настройках дашбордов (в веб администрировании) - "Создавать превью автоматически". Т.е., если мы её отключим, а затем включим (по умолчанию она включена), то превью создастся. 


2. Где хранятся картинки и настройки.



  • Сами превью хранятся в компоненте mongodb - DashboardScreenshots. Также в этой коллекции хранятся такие параметры как дата последнего обновления и флаг "Создавать превью автоматически".
2. Где хранятся картинки и настройки
  • Также в Монге в коллекции GeneralSettings хранится информация о расписании обновлении превьюшек, создании новых и удалении неактуальных.

         Image Added

  • Заглушка для случаев неуспешного создания превью хранится внутри компонента экспорт-сервис. Во время неудачной попытки создания превью картинка записывается в соответствующий дашборд в mongodb - DashboardScreenshots.Image Added


3. Описание работы и имеющиеся логи.



Давайте рассмотрим случай, когда мы сохраняем дашборд в ДД. После сохранения на адрес "/corelogic/api/command" посылается запрос:

Блок кода
languagejava
themeRDark
{
    DashboardGuid: "...",
    CommandType: "MakeDashboardPreview+Command"
}


Если для "Dashboard service" уровень логирования установить Full, то в событие Seq выглядит следующим образом:




По расписанию превью обновляются каждую минуту. Выполняются следующие 2 запроса, адрес "/corelogic/api/command":

Блок кода
languagejava
themeRDark
{
    CommandType: "RefreshOutdatedDashboardPreviews+Command"
}

Данный запрос (картинка выше) обновляет устаревшие превью.

Блок кода
languagejava
themeRDark
{
    CommandType: "MakeBrandNewDashboardPreviews+Command"
}

А этот запрос (картинка выше) создаёт превью для дашбордов, у которых его еще нет. Это в первую очередь нужно для дашбордов по внешней ссылке, добавленных внутри настроек портала.


Запросы посылаются на внешний адрес платформы.

2. Определим тип проблемы


Для начала стоит понять, какого рода проблема перед нами.

Превью не создаётся вовсе

Такая проблема может проявиться если дашборд грузится слишком долго (более 30сек), превью просто не успевает создаться. Также такое поведение бывает на версии 2.19, когда на дашборде имеются виджеты с ошибками. Ну и в других необъяснимых случаях.

Если у нас не 2.19, то идём далее, если 2.19 то следует исправить ошибки в виджетах.

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

  • MakeBrandNewDashboardPreviews;
  • MakeDashboardPreview;
  • RefreshOutdatedDashboradPreviews.

От этих ошибок можно отталкиваться куда копать далее, если они конечно будут.
Часто для решения проблемы не создавшегося превью в данном случае помогает снятие и дальнейшая установка галки "Создавать превью автоматически" в настройках дашборда на портале. Но это не дает гарантий, что проблема не повторится.


Бывает этот самый трюк помогает решить проблему "несоздания" превью

Превью создаётся, но у виджетов ошибки или не все/не те данные

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

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