Azure Runbook执行者识别及执行记录匹配方法咨询
如何识别Azure Runbook的执行者并匹配执行记录
我之前也碰到过类似的问题,微软确实调整了Azure自动化UI里的字段显示,但其实还是有几种靠谱的方法能找到执行者并关联Job记录,给你整理一下:
一、先解决Job ID不匹配的问题
首先得搞清楚为什么日志里的Job ID和自动化账户里的不一样——其实是Azure Monitor日志里的Job ID是完整的资源路径格式,而自动化账户UI里显示的是最后那串短ID。比如自动化账户里看到的是abc123,日志里的是/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Automation/automationAccounts/xxx/jobs/abc123。
要匹配两者,你可以在Log Analytics里用Kusto查询提取短ID来关联:
AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" | where OperationName in ("JobStarted", "JobCompleted", "JobFailed") | extend ShortJobId = substring(JobId, lastindexof(JobId, '/') + 1) | where ShortJobId == "<你在自动化账户里看到的短Job ID>" | project ShortJobId, RunbookName_s, Caller, TimeGenerated, OperationName
这样就能把日志记录和自动化账户里的Job对应起来了。
二、获取Runbook的执行者信息
方法1:用Azure PowerShell直接查询
虽然UI里的Executed by字段没了,但Get-AzAutomationJob命令返回的对象里依然保留了执行者信息,就是CreatedBy属性。你可以直接运行以下脚本:
# 替换成你的自动化账户和资源组信息 $automationAccountName = "你的自动化账户名" $resourceGroupName = "你的资源组名" $jobId = "<自动化账户里的短Job ID>" $job = Get-AzAutomationJob -AutomationAccountName $automationAccountName -ResourceGroupName $resourceGroupName -Id $jobId Write-Host "该Job的执行者是:" $job.CreatedBy
这个属性会返回执行者的用户邮箱(如果是手动触发),或者服务主体的名称/ID(如果是自动触发,比如逻辑应用、Azure函数)。
方法2:通过Azure Monitor日志直接提取
刚才的Kusto查询里,Caller字段就是执行者的信息,你可以直接查询某个Runbook的所有执行记录及执行者:
AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" | where RunbookName_s == "<你的Runbook名称>" | where OperationName in ("JobStarted", "JobCompleted") | extend ShortJobId = substring(JobId, lastindexof(JobId, '/') + 1) | project ShortJobId, RunbookName_s, Caller, TimeGenerated, Status_s
这样就能一次性看到该Runbook所有执行记录的执行者、时间和状态了。
三、批量查询的小技巧
如果你需要批量查看某个Runbook的所有执行者,可以用PowerShell脚本循环处理:
$automationAccountName = "你的自动化账户名" $resourceGroupName = "你的资源组名" $targetRunbookName = "目标Runbook名称" # 获取该Runbook的所有Job记录 $allJobs = Get-AzAutomationJob -AutomationAccountName $automationAccountName -ResourceGroupName $resourceGroupName | Where-Object {$_.RunbookName -eq $targetRunbookName} # 输出每个Job的详细信息 foreach ($job in $allJobs) { Write-Host "Job ID: $($job.JobId) | 执行者: $($job.CreatedBy) | 执行时间: $($job.CreationTime) | 状态: $($job.Status)" }
内容的提问来源于stack exchange,提问作者Javier M
相关产品推荐
相关产品推荐

