先打个广告:欢迎关注我的公众号,参与 文史大挑战 趣味题目。使用方法见 这篇文章 。
正文开始:
Jenkins 的 agent 是运行在 slave 节点上的一个 java进程,用于接收 master 的指令,并执行动作。agent 一旦停止运行,Jenkins 上的所有指令都不能正常执行。所以会需要一个定时任务,检查 agent 是否存活。
crontab 写法
首先看看 crontab 内容,类似 这一节 中的例子
# crontab
SHELL=/bin/bash
PATH=/home/yourname/jdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
20 * * * * /home/yourname/monitor_agent.sh
上面这个 crontab 脚本指定了每小时的第20分钟,执行健康检查任务。需要注意的是:
脚本使用绝对路径 由于 这个原因 ,调用的脚本使用绝对路径
PATH 变量 Jenkins agent 是一个 java进程,需要事先指定 JDK 的路径。由于 这个原因 ,首先设置了运行时的 PATH 环境变量;后面添加的一连串路径是为了余下其他脚本中使用命令(
ps
、grep
等)能正常执行。
监控脚本
上节 crontab 里调用了一个 monitor_agent.sh
脚本用于监控 agent 进程,内容如下:
#!/bin/bash
# monitor_agent.sh
AGENT_PID=$(ps -ef | grep agent.jar | grep -v grep)
if [ -z "${AGENT_PID}" ]; then
/home/yourname/start_agent.sh
fi
这个 monitor_agent.sh
脚本从进程列表中找出 agent.jar
的名字,如果不存在就执行启动 agent 的脚本。在执行前,需要为 monitor_agent.sh
增加可执行属性:
$ chmod +x /home/yourname/monitor_agent.sh
启动脚本
上节 监控脚本 里调用的 start_agent.sh
则是 Jenkins 提供的启动命令,类似如下的命令:
#!/bin/bash
# start_agent.sh
nohup java -jar agent.jar -jnlpUrl ....
如果您对本文有疑问或者寻求合作,欢迎 联系邮箱 。邮箱已到剪贴板
标签: JENKINS
给个免费的赞吧~
精彩评论
本站 是个人网站,采用 署名协议 CC-BY-NC 授权。
欢迎转载,请保留原文链接 https://www.lfhacks.com/tech/jenkins-agent-monitoring/ ,且不得用于商业用途。