Jenkins Linux 版监控任务状态的实用方案
一 内置与插件方式
二 Prometheus Grafana 监控与告警示例
scrape_configs:
- job_name: 'jenkins'
metrics_path: '/prometheus'
static_configs:
- targets: ['<jenkins_host>:8080']
- alert: JenkinsNodeOffline
expr: default_jenkins_nodes_online == 0
for: 2m
labels:
severity: warning
annotations:
summary: "Jenkins 节点离线"
description: "Jenkins 节点 {{ $labels.node }} 已离线超过 2 分钟"
三 Linux Shell 与 API 轮询监控
curl -s -u <user>:<token> \
http://<jenkins>/job/<job_name>/lastBuild/api/json | jq -r '.result'
常见结果:SUCCESS、UNSTABLE、FAILURE、ABORTED、NOT_BUILT、null(构建中)。#!/usr/bin/env bash
set -euo pipefail
JENKINS_URL="http://<jenkins>"
JOB="<job_name>"
USER="<user>"
TOKEN="<api_token>"
# 触发构建(可选)
# curl -X POST -u "$USER:$TOKEN" "$JENKINS_URL/job/$JOB/build"
# 获取最新构建号
BUILD=$(curl -s -u "$USER:$TOKEN" \
"$JENKINS_URL/job/$JOB/lastBuild/api/json" | jq -r '.number')
echo "Watching build #$BUILD"
while true; do
RESULT=$(curl -s -u "$USER:$TOKEN" \
"$JENKINS_URL/job/$JOB/$BUILD/api/json" | jq -r '.result')
if [[ "$RESULT" != "null" ]]; then
echo "Build #$BUILD finished with result: $RESULT"
case "$RESULT" in
SUCCESS) exit 0 ;;
UNSTABLE) exit 1 ;;
FAILURE|ABORTED) exit 2 ;;
*) exit 3 ;;
esac
fi
sleep 5
done
四 构建后动作根据状态执行逻辑
五 实践建议