Я пытался найти лучший способ вызвать предупреждение, когда задача ADF (например, CopyActivity или задача хранимой процедуры) выполняется более N часов, я хотел использовать Azure Monitor, поскольку это одно из рекомендуемых уведомлений служб в Azure, однако мне не удалось найти критерий «Выполняется», поэтому мне пришлось поиграть с доступными критериями (успешно и неудачно) и проверять их каждые N часов, однако это все еще не идеально, поскольку я не знать, когда процесс начался, и мы можем запускать его вручную несколько раз в день, можете ли вы как-то порекомендовать это сделать? например, уведомление на основе событий, которое прослушивает некоторую временную переменную, и как только она превышает пороговое значение, запускает уведомление по электронной почте?
Как инициировать оповещение о длительном процессе в фабрике данных Azure V2 с помощью Azure Monitor или самого ADF?
Ответы:
есть ли способ, которым вы бы порекомендовали это сделать? например, уведомление на основе событий, которое прослушивает некоторую временную переменную, и как только она превышает пороговое значение, запускает уведомление по электронной почте?
Исходя из ваших требований, я предлагаю вам использовать фабрику данных Azure SDK для отслеживания ваших конвейеров и действий.
Вы можете создать триггер времени Azure Function который срабатывает каждые N часов. В этой триггерной функции:
Вы можете перечислить все выполнение действий в аккаунте фабрики данных.
Затем зациклите их, чтобы отслеживать DurationInMs Свойство в класс ActivityRun, чтобы проверить, выполнялось ли какое-либо действие более N часов и все еще выполняется status.
Наконец, отправьте электронное письмо или прекратите действие, или сделайте все, что хотите.
Я бы предложил простое решение: запрос Kusto для перечисления всех конвейеров со статусом «В очереди» и присоединение его по CorrelationId к тем, которые нас не интересуют - обычно «Успешно», «Неудачно». Вариант присоединения leftanti выполняет эту работу, «возвращая все записи с левой стороны, которые не имеют совпадений с правой». (как указано в документации MS). Следующим шагом будет установка желаемого значения тайм-аута - в приведенном ниже примере кода это 30 минут. Наконец, вы можете настроить правило оповещения на основе этого запроса и получать уведомление по электронной почте или все, что вам нужно.
ADFPipelineRun | где Статус == "В очереди" | вид соединения = leftanti (ADFPipelineRun | где Статус в ("Не удалось", "Успешно")) на CorrelationId | где Начало ‹назад (30м)
Я проверил это ненадолго, возможно, чего-то не хватает. Есть идея добавить другие статусы, которые нужно убрать из результата, например «Отменено».