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

如何获取Jenkins Agent断开连接时间戳?寻求更稳健实现方案

获取Jenkins Agent离线时间戳的稳健Groovy实现

如果你想直接从Jenkins获取Agent的离线时间戳,不需要解析自定义离线消息,用Computer对象的getOfflineTimestamp()方法就可以实现,这是Jenkins内置的、更可靠的方式:

单Agent查询示例

import jenkins.model.Jenkins

// 替换为你的Agent名称
def targetAgent = "your-agent-name"
def agentComputer = Jenkins.instance.getComputer(targetAgent)

if (agentComputer && !agentComputer.isOnline()) {
    // 获取毫秒级离线时间戳
    long offlineTs = agentComputer.getOfflineTimestamp()
    // 转换为可读的日期格式
    def offlineDate = new Date(offlineTs)
    println "Agent ${targetAgent} 离线时间:${offlineDate}"
} else {
    println "Agent ${targetAgent} 在线或不存在"
}

批量查询所有离线Agent

如果需要统计所有离线节点的时间,可遍历所有Computer实例:

import jenkins.model.Jenkins

Jenkins.instance.computers.each { computer ->
    if (!computer.isOnline()) {
        long ts = computer.getOfflineTimestamp()
        def offlineDate = new Date(ts)
        println "节点 ${computer.name} 离线时间:${offlineDate}"
    }
}

说明

你之前尝试的getOfflineCause()和getOfflineCauseReason()方法仅用于获取节点离线的原因描述,而离线时间戳是Computer对象独立维护的属性,通过getOfflineTimestamp()直接读取即可,无需依赖自定义的离线消息格式,避免了解析出错的风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:45:39