Debian上Jenkins的监控与告警设置
一 监控方案总览
- 系统层:用 systemd 守护进程、Debian 资源工具查看 CPU/内存/磁盘/IO,保障 Jenkins 进程与服务可用性。
- 应用层:在 Jenkins 内安装插件获取指标与可视化,如 Monitoring(JavaMelody) 与 Prometheus metrics。
- 可视化与告警:用 Prometheus + Grafana 做指标可视化与阈值告警;用 邮件 或 脚本 做作业级事件告警。
二 系统层监控与基础告警
- 服务可用性
- 查看状态:sudo systemctl status jenkins
- 启动/自启:sudo systemctl start jenkins && sudo systemctl enable jenkins
- 若异常,优先检查日志:sudo journalctl -u jenkins -f
- 资源与性能
- CPU/内存/负载:top/htop、free -m、uptime
- 磁盘与 IO:df -h、iostat -x 1
- 网络:iftop、nethogs
- 简易可用性脚本(示例)
- 每 5 分钟探测 http:///login;非 200 或超时即触发告警(可扩展为企微/钉钉/短信)。
三 应用层监控插件
- Monitoring 插件(JavaMelody)
- 功能:提供 内存、CPU、HTTP 响应时间、当前请求数 等维度,开箱即用,适合快速观测。
- 入口:Manage Jenkins → Manage Plugins 安装 Monitoring;访问 /monitoring 查看仪表盘。
- 说明:该插件侧重监控展示,不具备内置告警,可结合外部监控系统做阈值告警。
- Prometheus metrics 插件
- 功能:在 Jenkins 暴露 /prometheus 指标端点,供 Prometheus 抓取,适合长期趋势与容量规划。
- 入口:安装 Prometheus metrics 插件后,确认 http:///prometheus 可访问。
四 Prometheus Grafana 监控与告警配置
- 部署与抓取
- Prometheus 配置片段(示例):
- job_name: “jenkins”
- metrics_path: “/prometheus”
- scheme: http
- static_configs:
- targets: [“<jenkins_ip>:<jenkins_port>”]
- 重载 Prometheus 配置并检查 Targets 健康。
- 可视化
- Grafana 添加 Prometheus 数据源,导入 Jenkins 仪表盘模板(如 ID 9964),查看 构建队列、执行时长、节点状态 等。
- 告警规则示例(Prometheus)
- 作业失败激增:
- ALERT JenkinsJobFailureSpike
- IF increase(jenkins_job_build_failed_total[5m]) > 0
- FOR 2m
- LABELS { severity=“warning” }
- ANNOTATIONS { summary=“Jenkins 作业失败增加”, description=“最近5分钟失败构建数增加” }
- 节点离线:
- ALERT JenkinsNodeOffline
- IF jenkins_node_offline == 1
- FOR 1m
- LABELS { severity=“critical” }
- ANNOTATIONS { summary=“Jenkins 节点离线”, description=“节点 {{ $labels.node }} 处于离线状态” }
- 建议将告警接入 Alertmanager,通过 邮件/企业微信/钉钉/Webhook 发送。
五 作业级事件告警
- 邮件告警
- 安装 Email Extension 与 Email Extension Template 插件。
- 在 Manage Jenkins → System 配置 SMTP,在 Job 的 Post-build Actions 使用 “Editable Email Notification” 设置主题、收件人、触发条件(如 Failure/Unstable/Always)。
- Webhook/脚本告警
- 在 Job 的 Post-build Actions 使用 “HTTP Request” 或 “Execute system command” 调用企业微信/钉钉机器人 Webhook,或执行自定义脚本推送告警。
- 命令行与 API 辅助
- 通过 Jenkins CLI 或 REST API 获取 节点在线状态、构建结果 等,作为外部监控/自愈脚本的数据源。