Поделиться через


Настройка центра мониторинга Fabric

Центр мониторинга в пакете средств разработки рабочей нагрузки Microsoft Fabric является централизованным центром мониторинга. Центр мониторинга предназначен для пользователей Fabric для отслеживания фоновых заданий элементов. Дополнительные сведения см. в разделе "Использование концентратора мониторинга".

Раздел

В этом разделе описывается настройка серверной реализации для концентратора мониторинга.

JobScheduler Определение свойства в манифесте элемента

Чтобы включить поддержку заданий, элемент должен указать типы поддерживаемых заданий. Добавьте свойство в JobScheduler файл манифеста элемента. Свойство JobScheduler включает задания, управляемые Fabric, для ваших элементов.

В следующей таблице представлен обзор поддерживаемых JobScheduler свойств определения:

Свойство Description Возможные значения
OnDemandJobDeduplicateOptions Задает параметр дедупликации для заданий элементов по запросу. - None: не дедупликация задания.
- PerArtifact: убедитесь, что для одного и того же элемента и типа задания выполняется только одно активное задание.
- PerUser: убедитесь, что для одного и того же пользователя и элемента выполняется только одно активное задание.
ScheduledJobDeduplicateOptions Задает параметр дедупликации для заданий элементов по запросу. - None: не дедупликация задания.
- PerArtifact: убедитесь, что для одного и того же элемента и типа задания выполняется только одно активное задание.
- PerUser: убедитесь, что для одного и того же пользователя и элемента выполняется только одно активное задание.
ItemJobTypes Список типов заданий с указанными свойствами. - Name: имя типа задания, который полностью настраивается независимым поставщиком программного обеспечения (ISV).

Реализация API рабочей нагрузки задания

Для интеграции с заданиями рабочая нагрузка должна реализовать API заданий, как определено в спецификации Swagger.

Три API Fabric связаны с заданиями:


Запуск экземпляра задания

Конечная точка: POST /workspaces/{workspaceId}/items/{itemType}/{itemId}/jobTypes/{jobType}/instances/{jobInstanceId}

Этот API вызывается для запуска выполнения задания.

  • Ответ. API должен возвращать 202 Accepted состояние, указывающее, что задание успешно запланировано системой.

Получение состояния экземпляра задания

Конечная точка: GET /workspaces/{workspaceId}/items/{itemType}/{itemId}/jobTypes/{jobType}/instances/{jobInstanceId}

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

  • Ответ. API должен возвращать 200 OK состояние вместе с текущим состоянием экземпляра задания. Ответ должен включать состояние задания, время начала и время окончания, а также сведения об ошибке, если задание завершилось сбоем.

    Поддерживаемые состояния задания:

    • NotStarted
    • InProgress
    • Completed
    • Failed
    • Cancelled

    Важно. Даже если задание завершается ошибкой 200 OK Failed , этот API должен вернуть состояние и состояние задания.


Отмена экземпляра задания

Конечная точка: POST /workspaces/{workspaceId}/items/{itemType}/{itemId}/jobTypes/{jobType}/instances/{jobInstanceId}/cancel

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

  • Ответ. API должен возвращать состояние вместе с текущим 200 OK состоянием экземпляра задания. Ответ должен включать состояние задания, время начала и окончания, а также сведения об ошибке, если задание завершилось ошибкой.

Дополнительные сведения

Число недоставленных заданий:

Задание помечается как "мертвое письмо" платформой Fabric, если оно не начинается в течение 2 часов.

Пример реализации

Пример реализации этих API см . в JobsControllerImpl.cs в репозитории примеров.

Внешний интерфейс

В этом разделе описывается настройка интерфейсной реализации для концентратора мониторинга.

Выполнение задания в пользовательском интерфейсе Fabric

После интеграции заданий в элементы серверной части пользователи могут начать выполнение заданий.

У пользователей есть два варианта выполнения заданий в Fabric:

  • Автоматическое запланированное задание. Этот параметр определяется пользователем для выполнения через регулярные интервалы через общий интерфейс планировщика Fabric.
  • По запросу с помощью пользовательского интерфейса рабочей нагрузки и пакета SDK клиента расширения.

Интерфейс планировщика Структуры из пользовательского интерфейса

  • Параметры точки входа:

    • Используйте расписание контекстного меню.

      Снимок экрана: параметр

    • Используется workloadClient.itemSettings.open, где указан Scheduleидентификатор выбранных параметров.

  • Макет

    Снимок экрана: параметры планировщика Fabric.

    1. Время последнего успешного обновления и следующее время обновления.
    2. Кнопка "Обновить".
    3. Параметры расписания элементов.

Переход

Шаг 1. Добавление элемента контекстного меню расписания

Чтобы отобразить кнопку "Расписание " в контекстном меню элемента, добавьте новую запись contextMenuItems в свойство в манифесте внешнего интерфейса элемента:

{
    "name": "schedule"
}

Шаг 2. Добавление параметров расписания элементов

Добавьте новую schedule запись в свойство параметров элемента в манифесте внешнего интерфейса:

"schedule": {
    "itemJobType": "ScheduledJob",
    "refreshType": "Refresh"
}
  • itemJobType: тип задания элемента, определенный в XML-файле определения задания элемента.
  • refreshType: указывает отображение кнопки "Обновить ". Выберите один из трех вариантов: используйте Refresh Run и включите кнопку обновления и отображаемое имя или установите None для отключения кнопки "Обновить ".

Api JavaScript для заданий

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

  • API запланированных заданий:

    • getItemScheduledJobs(objectId: string): Promise<ItemSchedule>
    • createItemScheduledJobs(createItemScheduledJobs: CreateItemScheduleParams): Promise<ItemSchedule>
    • updateItemScheduledJobs(updateItemScheduleParams: UpdateItemScheduleParams): Promise<ItemSchedule>
  • API конкретного экземпляра задания:

    • runItemJob(jobParams: RunItemJobParams): Promise<ItemJobInstance>
    • cancelItemJob(jobParams: CancelItemJobParams): Promise<CancelItemJobResult>
    • getItemJobHistory(getHistoryParams: GetItemJobHistoryParams): Promise<ItemJobHistory>

Примечание.

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

Интеграция с центром мониторинга

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

Включение элемента в области фильтров концентратора мониторинга

Чтобы добавить элемент в область фильтров, определите новое свойство в манифесте внешнего интерфейса элемента и задайте значение supportedInMonitoringHub true.

Интеграция с быстрыми действиями задания

Снимок экрана: кнопки быстрых действий заданий в центре мониторинга.

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

Команда рабочей нагрузки решает, какой из них требуется включить, задав itemJobConfig свойство в манифесте внешнего интерфейса элемента. Если он не задан, значок не отображается.

Например, конфигурация, которую мы добавили в наш пример элемента, который поддерживает все действия задания, отображаются далее в этом разделе.

Когда пользователь выбирает значок "Отмена " примера задания элемента, мы вызываем предоставленное действие item.job.cancel. Контекст, связанный с заданием, Fabric.WorkloadSample реализуется рабочей нагрузкой, чтобы фактически отменить задание.

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

"itemJobActionConfig": {
    "registeredActions": {
        "detail": {
            "extensionName": "Fabric.WorkloadSample",
                "action": "item.job.detail"
        },
        "cancel": {
            "extensionName": "Fabric.WorkloadSample",
                "action": "item.job.cancel"
        },
        "retry": {
            "extensionName": "Fabric.WorkloadSample",
                "action": "item.job.retry"
        }
    }
}

Область сведений о задании

Снимок экрана: область сведений о задании в центре мониторинга.

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

В настоящее время поддерживаются пары "ключ-значение" в виде обычного текста или гиперссылки.

  • Пример обработки действий задания см. в разделе index.worker.ts в примере репозитория. В файле выполните поиск действий, которые начинаются с item.job.

Последние запуски

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

Точки входа:

  • Контекстное меню>"Последние запуски"

    Снимок экрана: параметр

  • При помощи workloadClient.itemRecentRuns.open.

Переход

Шаг 1. Добавление recentRuns элемента контекстного меню

Чтобы отобразить кнопку "Последние запуски " в меню элемента, добавьте новую запись contextMenuItems в свойство в манифесте внешнего интерфейса элемента.

Пример:

{
    "name": "recentruns"
}

Шаг 2. Добавление параметров элемента recentRun

Добавьте новую recentRun запись в свойство параметров элемента в манифесте внешнего интерфейса.

Пример:

"recentRun": {
     "useRecentRunsComponent": true,
}

Интеграция заданий на ленте примера элемента

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

Снимок экрана: вкладка

Пример реализации этой ленты см. в разделе ItemTabToolbar.tsx в примере репозитория.