Необходимо получить ошибку модуля Runbook автоматизации Azure с помощью вызова rest api

Я использую метод 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, но не знаю, как его использовать.

Мне нужен rest api, чтобы получать ошибки в Runbook.


person Ac9293    schedule 19.08.2019    source источник


Ответы (2)


Во-первых, «ErrorResponse», который вы видите в Job - Получить или Job - получить результат REST API в основном говорит об ответе этой конкретной операции REST API. У него нет связи с ошибкой задания службы автоматизации Azure.

Во-вторых, AFAIK в настоящее время не существует напрямую поддерживаемого REST API для получения информации об ошибках задания автоматизации Azure. Если интересно, вы можете поделиться своим мнением в виде запроса функции здесь. Однако, если вы хотите получить информацию об ошибке задания службы автоматизации Azure, мы можем перенаправить статус задания и потоки заданий из службы автоматизации Azure в журналы Azure Monitor, как описано в этот документ, а затем использовать Azure Log Analytics REST API, чтобы получить информацию об ошибке задания автоматизации Azure, где вам, возможно, придется предоставить запросите что-то вроде показанного ниже.

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and StreamType_s == "Error" and JobId_g == "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
| summarize AggregatedValue = count() by JobId_g

Надеюсь это поможет!!

ОБНОВЛЕНИЕ:

Ниже приведены снимки экрана, на которых показано, что API получения вывода захватывает только содержимое выходного потока.

Сценарий 1. У задания есть только поток ошибок, но нет потока вывода и вывода API получения вывода:

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

Сценарий 2 - у задания есть только выходной поток, но нет потока ошибок и вывода API получения вывода:

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

person KrishnaG-MSFT    schedule 19.08.2019
comment
почти уверен, что есть API для получения вывода работы, потому что портал каким-то образом получает его - person 4c74356b41; 19.08.2019
comment
Да, у нас есть API для получения результатов работы, как указано в ответе выше. Но я не думаю, что он также включает данные потока ошибок. Пожалуйста, подтвердите, если вы уверены, что он также включает поток ошибок. - person KrishnaG-MSFT; 19.08.2019
comment
что ты имеешь в виду? на портале вы можете увидеть как stderr \ stdout. без омов - person 4c74356b41; 19.08.2019
comment
Я имею в виду, что на портале у нас есть различные вкладки (например, вывод, ошибка, исключение, все журналы и т. Д.) Под плиткой определенного задания. И API вывода задания, вероятно, получает контент из вкладки вывода !? но не из других вкладок, таких как ошибка, исключение и т. д. - person KrishnaG-MSFT; 19.08.2019
comment
Почему нет? вы никогда не использовали модули Runbook для автоматизации Azure? вы можете видеть отдельные потоки - person 4c74356b41; 19.08.2019
comment
Обновлены снимки экрана для иллюстрации, чтобы подтвердить, что API получения вывода извлекает содержимое выходного потока, но не содержимое других потоков. Надеюсь, это поможет вам !! - person KrishnaG-MSFT; 19.08.2019
comment
Спасибо Кришне. но мне нужен API, чтобы получить ошибку. Я вижу это не там - person Ac9293; 20.08.2019

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

Шаг 1: Я предполагаю, что у вас есть идентификатор вакансии. Используйте API задания, чтобы получить название задания. Я не думаю, что пользовательский интерфейс отображает название задания. Вот почему мне пришлось использовать API вакансий, чтобы получить то же самое. например.

https://management.azure.com/subscriptions/%7BSUBSCRIPTION_ID%7D/resourceGroups/%7BRESOURCE_GROUP_NAME%7D/providers/Microsoft.Automation/automationAccounts/%7BAUTOMATION_ACCOUNT_NAME%7D/JOBS/?api-version=2017-05-15-preview

Шаг 2. Используйте имя задания с API потока заданий. например. https://management.azure.com/subscriptions/%7BSUBSCRIPTION_ID%7D/resourceGroups/%7BRESOURCE_GROUP%7D/providers/Microsoft.Automation/automationAccounts/%7BAUTOMATION_ACCOUNT_NAME%7D/JOBS/jobs//?&api-version=2017-05-15-preview

Это вернет все выходные данные, включая ошибку.

 {"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

person bala    schedule 05.04.2021