Перейти к содержанию

Самодиагностика кластера AW

Общие сведения

Утилита AW-Check предназначена для диагностики микросервисов, входящих в состав развернутого программного кластера AW. Данная утилита предоставляет возможность проверки корректного запуска и состояния микросервисов AW. Таким образом, она рассматривается как средство начального тестирования, производимого на первом этапе комплексной проверки кластера на готовность к работе.

Утилита поставляется в комплексе программного продукта AW и архитектурно реализована в составе отдельного микросервиса diag, запускаемого пользователем вручную. Диагностика производится с учетом установочных настроек переменных окружения, которые заданы в файле .env развернутого кластера AW.

Основными задачами производимой диагностики являются:

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

Запуск утилиты

Команда для запуска утилиты:

docker compose run --rm diag check [options]

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

docker compose run --rm diag check --service etl-api --service etl-airflow-webserver

Список возможных значений аргумента для опции --service можно получить, запустив утилиту с опцией --help:

docker compose run --rm diag check --help

Сообщения, формируемые по окончании каждого шага диагностики, подразделяются на три категории: информационные (категория ’‘info”), предупреждающие (категория ”warning”) и критические (категория “error”). При этом первая категория имеет низший приоритет, последняя - высший. Для управления отображением на экран сообщений по уровню их приоритета предусмотрена опция --level или -l (короткая форма). Например, следующая команда подавляет вывод на экран строк категории “info”, оставляя лишь сообщения, относящиеся к категориям “warning” и “error”:

docker compose run --rm diag check --service etl-api --level warning

По умолчанию утилита использует опцию --level info, что влечет вывод на экран всех сообщений в процессе диагностики.

Cервис самодиагностики предоставляет возможность тестового прогона синхронизации и получения предпросмотра (в т.ч., для distinct_preview и get_totals):

docker-compose run --rm diag tests etl

Диагностика отдельных групп сервисов

Некоторые сервисы AW имеют логически связанное или взаимно дополняющее прикладное значение. Поэтому в некоторых случаях удобно рассматривать сервисы AW как элементы программного комплекса, разбитые по нескольким группам с учетом их прикладного контекста. В связи с этим может возникать потребность раздельной диагностики условно выделенных таким образом групп. Исходя из этих соображений, утилита позволяет запускать диагностики для конкретной группы или перечня групп сервисов кластера AW. Для указания нужной группы используется опция -- group. Например, следующая команда запустит диагностику для групп etl и backend:

docker compose run --rm diag check --group etl --group backend

Перечень названий групп и их состав приведен в приложении.

Особенности выполнения диагностики

Как правило, при выполнении диагностики сервиса реализуются два основных этапа:

  1. Первичная диагностика непосредственно данного сервиса;
  2. Диагностика условий работы данного сервиса с другими связанными микросервисами.

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

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

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

Если утилита AW-Check запущена без применения ограничительных опций --group и --service, то диагностика осуществляется для всех перечисленных в приложении сервисов. Такой способ обычно целесообразен, когда и утилита, и диагностируемые ею сервисы исполняются в контейнерах единой Docker-платформы с общим файлом настроек окружения операционной среды ".env".

Если же какой-либо сервис AW вынесен за пределы контура данной Docker-платформы, то диагностика такого сервиса в изложенной форме теряет смысл по нескольким причинам:

  • во-первых, хост в локальной сети, которому присвоено имя данного сервиса, может либо не участвовать в функциональной работе развернутого кластера AW, либо отсутствовать вообще. В любом случае этап (1) становится неактуальным.
  • во-вторых, диагностика и исследуемый сервис будут иметь различные сетевые окружения, будут обращаться к различным файлам ".env" и т.д., что приводит к невозможности корректно оценивать результаты работы этапа (2).

В такой ситуации целесообразно рассмотреть вариант диагностики вынесенного сервиса отдельным экземпляром утилиты, запуская в той же среде Docker-платформы, что и диагностируемый сервис. При этом для включения сервиса в перечень диагностики или исключения из него, возможно, будет полезно воспользоваться опциями --service и --group.

Приложение: Перечень названий групп и их состав

Перечень названий групп и входящих в них сервисов приведен ниже:

backend

  • backend
  • clear-storage
  • file-builder
  • model-sync
  • model-changes
  • create-cache-dir
  • preview
  • puppeteer
  • sender
  • swagger
  • websocket
  • widget-export

etl

  • etl-api
  • etl-data-preview
  • etl-airflow
  • etl-airflow-db
  • etl-mlflow
  • etl-mlflow-db
  • etl-spark
  • etl-tasks

other

  • auth-bridge
  • data-master

common

  • Настройки системы, переменные окружения и пр.

Запуск самодиагностики через интерфейс Системы

Diag-UI предоставляет пользователю средства диагностики кластера AW, аналогичные AW-Check, но расширенные рядом дополнительных возможностей:

Пользователю предоставляется графический интерфейс для работы со средствами диагностики; Поддерживается возможность диагностики в мультихостовой конфигурации, когда сервисы кластера AW распределены по нескольким различным подсетям; Предоставляется возможность экспорта результатов диагностики в pdf-файл. Сценарий диагностики разделяется на четыре этапа:

  1. Исследование сетевого окружения с целью выявления запущенных микросервисов При запуске Diag-UI на первом этапе автоматически происходит поиск запущенных микросервисов AW в доступном сетевом окружении. Пользователь ожидает завершения этого этапа некоторое время.

  2. Подтверждение пользователем перечня проверок По результатам поиска выстраивается список микросервисов, к которым можно применить процедуры проверок. В случае мультихостовой конфигурации AW сервисы будут отображены в разбивке по хостам. Пользователю предоставляется возможность исключить/выбрать из этого списка отдельные сервисы. Пользователь подтверждает сделанный выбор, инициируя тем самым переход к этапу исполнения проверок.

  3. Исполнение проверок в соответствии с перечнем Проверки выполняются в фоновом режиме параллельно, не блокируя друг друга.

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

Для перехода в раздел "Диагностика кластера AW" авторизуйтесь в Системе и в адресной строке web-браузера добавьте в конце ссылки на Систему латинские буквы «diag».

Например, для приложения, размещенного по адресу http://aw-demo.ru/, раздел "Диагностика кластера AW" открывается по ссылке https://aw-demo.ru/diag.

После ввода нужного адреса в строке web-браузера откроется окно консоли сервиса диагностики (Рисунок 1). Раздел доступен авторизованным пользователям.

Чтобы запустить проверку сервисов выберите необходимые сервисы и нажмите на кнопку "Запустить проверку". Система отобразит результаты проверки в разрезе сервисов (Рисунок 2).

Для сохранения отчета нажмите на кнопку "Открыть pdf-файл" и скачайте полученный документ.