热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jenkins脚本实现监控slave是否掉线

jenkisn提供了api获取node节点状态http:localhostcomputerslave_nameapijson?prettytrue只需要将slave_name换成指

jenkisn提供了api获取node节点状态

http://localhost/computer/slave_name/api/json?pretty=true

只需要将slave_name换成指定的slave名称即可,返回数据是json格式的

{
"actions" : [
{
},
{
}
],
"displayName" : "Niubility_MacPro",
"executors" : [
{
},
{
},
{
}
],
"icon" : "computer-x.png",
"iconClassName" : "icon-computer-x",
"idle" : true,
"jnlpAgent" : true,
"launchSupported" : false,
"loadStatistics" : { },
"manualLaunchAllowed" : true,
"monitorData" : {
"hudson.node_monitors.SwapSpaceMonitor" : null,
"hudson.node_monitors.ArchitectureMonitor" : null,
"hudson.node_monitors.ResponseTimeMonitor" : {
"timestamp" : 1473177958848,
"average" : 3112
},
"hudson.node_monitors.TemporarySpaceMonitor" : null,
"hudson.plugins.network_monitor.NameResolutionMonitor" : null,
"hudson.plugins.systemloadaverage_monitor.SystemLoadAverageMonitor" : null,
"hudson.node_monitors.DiskSpaceMonitor" : null,
"hudson.node_monitors.ClockMonitor" : null
},
"numExecutors" : 3,
"offline" : true,
"offlineCause" : { },
"offlineCauseReason" : "Connection was broken: java.io.EOFException\n\tat org.jenkinsci.remoting.nio.NioChannelHub$3.run(NioChannelHub.java:614)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:262)\n\tat hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)\n\tat jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:262)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)\n\tat java.lang.Thread.run(Thread.java:745)\n",
"oneOffExecutors" : [ ],
"temporarilyOffline" : false
}

如果key offline的value为true说该slave掉线了,offlineCauseReason表面原因。可以写个简单地python脚本,把脚本放到jenkins上定时执行进行监控,最好是限定这个任务在master上执行,保证任务顺利执行。shell里可以判断返回不为空时设置为exit 1,使任务失败,对于任务失败配置邮件(构建后任务里)提醒即可。

import urllib2
import json
baseapi = http://localhost/computer/%s/api/json?pretty=true
def request(slaves):
slaveapis = slaves.split(",")
offlineapi = ""
for api in slaveapis:
url = baseapi % api
ret = json.load(urllib2.urlopen(url))
if ret['offline']:
offlineapi += url
offlineapi += ","
return offlineapi


推荐阅读
author-avatar
mobiledu2502898543
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有