You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Log Analytics中定位待查询的目标数据表

操作指引

你在Task表找不到作业启动/结束时间字段是正常情况:Task表仅存储任务配置、关联关系类静态元数据,作业运行时的时间戳、执行状态这类动态数据默认写入作业执行实例对应的专属日志表,不会冗余存储在Task表中,按以下步骤操作即可实现需求:

第一步:定位存储作业运行数据的正确表

  • 先在Log Analytics查询编辑器执行以下查询,自动筛选出最近1小时内包含作业ID字段的所有表,不用手动翻找表列表:
search *
| where TimeGenerated > ago(1h)
| where * has "jobid" or * has "JobId"
| distinct $table
  • 根据你使用的SaaS作业类型,优先核对以下高频表:
    • 自研/无专属资源提供程序的SaaS作业:优先查AzureDiagnostics表,作业运行相关字段通常以_s(字符串)、_t(时间)后缀命名,对应jobId_s、startTime_t、endTime_t、status_s
    • Azure Automation 自动化作业:对应AzureAutomationJobEvent表,通过EventId字段区分作业启动、完成、失败事件,TimeGenerated为事件发生时间
    • Azure Batch 批处理作业:对应AzureBatchJobExecution表,原生自带jobId、startTime、endTime、state字段,可直接提取

第二步:编写查询生成作业指标报表

找到对应数据表后,通过分段查询关联同一个JobId的启动、结束事件,自动计算运行时长,参考通用查询模板(替换尖括号内的环境对应值即可):

// 提取作业启动时间
let JobStartEvents = <替换为上一步找到的目标表名>
| where <替换为启动事件对应的筛选条件,例如 EventName == "JobStarted">
| project JobId = <替换为表中存储作业ID的字段名>, StartTime = TimeGenerated;
// 提取作业结束时间、运行状态
let JobEndEvents = <替换为上一步找到的目标表名>
| where <替换为结束/失败事件对应的筛选条件,例如 EventName in ("JobSucceeded", "JobFailed")>
| project JobId = <替换为表中存储作业ID的字段名>, EndTime = TimeGenerated, JobStatus = <替换为表中存储作业状态的字段名>;
// 关联生成最终报表
JobStartEvents
| join kind=inner JobEndEvents on JobId
| extend RunDuration = format_timespan(EndTime - StartTime, 'dd\.hh\:mm\:ss')
| project JobId, StartTime, EndTime, RunDuration, JobStatus

第三步:配置自动化通知

  • 将上述查询保存到Log Analytics,直接绑定到日志警报规则:设置查询时间范围为最近15分钟,规则执行频率为每15分钟
  • 警报规则关联的动作组直接配置目标通讯组列表,规则触发时会自动将查询返回的作业状态、运行时长结果推送到通讯组,无需单独开发通知任务。

注意事项

  • 不要直接使用Task表的TimeGenerated字段计算运行时长:该字段记录的是任务配置创建/修改的时间,和作业实际运行时间无关,计算结果完全无效
  • 如果是自研SaaS作业,需要在作业代码逻辑中显式将启动、结束事件带上jobId、时间戳、状态字段上报到Log Analytics,平台不会自动采集这部分自定义业务数据

内容的提问来源于stack exchange,提问作者gbolahr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 06:54:43