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

如何在一段时间后终止Azure虚拟机规模集的代理实例

针对Azure VMSS代理实例的超时终止方案

核心思路:实例级指标采集+触发式自动化操作

Azure本身没有直接的“终止超时作业实例”一键功能,但可以通过组合以下组件实现需求:

1. 开启VMSS实例级指标采集

先解决单实例指标可见性问题:

  • 在VMSS的诊断设置中,开启实例级指标收集,将单个VM实例的系统指标(或自定义指标)发送到Log Analytics工作区。
  • 如果代理作业无法自动上报运行时长,可在实例内部署脚本(PowerShell/Bash均可),定期采集作业进程的运行时间,通过Azure Monitor Agent推送到Log Analytics作为自定义指标(比如命名为JobElapsedHours)。

2. 基于日志查询创建警报触发Azure Function

  • 编写Log Analytics Kusto查询,筛选出作业运行时长超过1小时的实例:
    // 假设自定义指标为JobElapsedHours,筛选值大于1的实例
    CustomMetrics
    | where MetricName == "JobElapsedHours"
    | where Value > 1
    | project InstanceId = tostring(split(ResourceId, '/')[-1]), ResourceId
    
  • 基于该查询创建日志警报,触发条件设为“返回结果数大于0”,并将警报动作组关联到Azure Function。
  • 在Azure Function中,解析警报推送的实例ID和资源ID,调用Azure Compute REST API(或Azure SDK)执行实例删除操作。注意给Function的托管标识分配Virtual Machine Contributor或更精细的权限,确保能操作VMSS实例。

3. 替代方案:Azure Automation Runbook定期检查

如果不需要实时响应,可采用定期扫描的方式:

  • 创建Azure Automation Runbook,定期执行Log Analytics查询获取超时实例列表。
  • 在Runbook中调用Azure Compute API删除符合条件的实例,同样需要给Runbook的托管标识配置对应权限。

关键注意事项

  • 作业状态准确性:建议在作业启动/结束时记录时间戳到本地日志或直接上报到Azure Monitor,避免依赖进程运行时间的误判。
  • 安全终止验证:在执行删除前,可在Function/Runbook中再次验证实例的作业状态,确认确实超时后再操作,防止误删正在运行的正常作业。
  • 权限最小化:遵循权限最小化原则,给自动化组件(Function/Runbook)分配仅能删除VMSS实例的权限,避免过度授权。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:22:38