监控 Jenkins agent 是否存活的脚本

Jenkins 的 agent 是运行在 slave 节点上的一个 java进程,用于接收 master 的指令,并执行动作。agent 一旦停止运行,Jenkins 上的所有指令都不能正常执行。所以会需要一个定时任务,检查 agent 是否存活。

目录

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 环境变量;后面添加的一连串路径是为了余下其他脚本中使用命令( psgrep 等)能正常执行。

监控脚本

上节 crontab 里调用了一个 monitor_agent.sh 脚本用于监控 agent 进程,内容如下:

#!/bin/bash

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 提供的启动命令,类似如下的命令:

nohup java -jar agent.jar -jnlpUrl ....

坚持原创不易。如果您觉得有收获,请考虑资助本站,以期待更多原创文章。

打赏作者,支持小站
相关文章
本站是个人博客,除非特别说明,所有文章均系原创,并采用 署名协议 CC-BY 授权。
欢迎转载,惟请保留原文链接:https://www.lfhacks.com/tech/jenkins-agent-monitoring