Необходимо получить ошибку runbook автоматизации Azure с помощью rest api call
Я использую метод Rest API для запуска Runbook. Я получаю вывод после выполнения runbook с использованием rest API, но не получаю ошибок с этим
API, который я использую, чтобы получить вывод
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobName}/output?api-version=2017-05-15-preview
Но не получить API для получения ошибок. В этой ссылке ( https://docs.microsoft.com/en-us/rest/api/automation/job/get) я вижу там ErrorResponse, но не знаю, как его использовать.
Мне нужно отдохнуть API, чтобы получить ошибки в Runbook.
2 ответа
Я столкнулся с той же ситуацией, когда моему приложению нужно было знать, закончилось ли задание с ошибками или нет. Поскольку нет прямого способа сделать это, я нашел обходной путь.
Шаг 1: Я предполагаю, что у вас есть идентификатор вакансии. Используйте API задания, чтобы получить название задания . Я не думаю, что пользовательский интерфейс отображает название задания. Вот почему мне пришлось использовать API вакансий, чтобы получить то же самое. например.
Шаг 2. Используйте имя задания с API потока заданий. например. https://management.azure.com/subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.Automation/automationAccounts/{AUTOMATION_ACCOUNT_NAME}/jobs/{JOB_NAME}/streams/?&api-version=2017-15-превью
Это вернет все выходные данные, включая ошибку.
{"value" = [{
"id": "...",
"properties":
{
"jobStreamId": "...",
"summary": "Resource group not found",
"time": "2021-04-05T13:37:04.3629685+00:00",
"streamType": "Error"
}
}
]}
Формат вывода определен в официальной документации здесь. https://docs.microsoft.com/en-us/rest/api/automation/jobstream/listbyjob
Во-первых, ErrorResponse, который вы видите в Job - Get или Job - Get Output, REST API в основном говорит об ответной реакции этой конкретной операции REST API. Он не связан с ошибкой задания автоматизации Azure.
Во-вторых, в AFAIK в настоящее время нет напрямую поддерживаемого API REST для получения информации об ошибках задания Azure Automation. Если вы заинтересованы, вы можете поделиться своим отзывом в качестве запроса функции здесь. Однако если вы хотите получить информацию об ошибках задания Azure Automation, то мы можем перенаправить состояние задания и потоки заданий из журналов Azure Automation в журналы Azure Monitor, как описано в этом документе, а затем использовать API REST Azure Log Analytics для получения информации об ошибках задания Azure Automation, где вы можете Возможно, придется предоставить запрос, как показано ниже.
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and StreamType_s == "Error" and JobId_g == "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
| summarize AggregatedValue = count() by JobId_g
Надеюсь это поможет!!
ОБНОВЛЕНИЕ:
Ниже приведены скриншоты для иллюстрации того, что с помощью get output API захватывается только содержимое выходного потока.
Сценарий 1 - Задание имеет только поток ошибок, но не имеет выходного потока и API-интерфейса get output:
Сценарий 2. У задания есть только выходной поток, но нет потока ошибок и выходных данных API get output: