我正在使用Rest api方法启动Runbook。 使用rest API执行runbook后,我得到输出,但没有得到错误
我用来获取输出的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中的错误。
答案 0 :(得分:0)
首先,您在Job - Get或Job - Get Output REST API中看到的“ ErrorResponse”基本上是关于该特定REST API操作的响应的。它与Azure自动化作业错误无关。
其次,AFAIK当前没有直接受支持的REST API来获取Azure自动化作业的错误信息。如果有兴趣,您可以将您的反馈作为功能请求here分享。但是,如果要获取Azure Automation作业的错误信息,则可以按照this文档中的说明将作业状态和作业流从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
希望这会有所帮助!
更新:
请在下面的屏幕截图中找到说明,以了解get output API仅捕获输出流内容。
方案1-作业只有错误流,但是没有输出流和get output API的输出:
方案2-作业仅具有输出流,而没有错误流,并且没有获取输出API的输出:
答案 1 :(得分:0)
我遇到了同样的情况,我的应用程序需要知道作业是否以错误结束。由于没有直接的方法可以做到这一点,我想出了一个解决方法。
第 1 步:我假设您有作业 ID。使用作业 api 获取作业名称。我认为 UI 没有显示作业名称。这就是为什么我必须使用作业 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-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