如何获取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
相关产品推荐
相关产品推荐

