Rundeck监控告警配置:Prometheus指标暴露与Grafana可视化
一、痛点与解决方案
在企业级自动化运维场景中,Rundeck作为任务调度核心,其运行状态直接影响业务连续性。运维团队常面临三大痛点:
- 指标盲区:缺乏关键指标(如任务成功率、执行延迟)实时监控
- 告警滞后:任务失败后无法及时通知管理员
- 可视化缺失:难以直观评估系统负载与资源瓶颈
本文提供完整解决方案,通过三步实现监控闭环:
- 配置Rundeck暴露Prometheus指标
- 搭建Prometheus数据采集管道
- 构建Grafana可视化仪表盘与告警规则
二、Rundeck指标暴露配置
2.1 启用Metrics Web插件
Rundeck通过grails-metricsweb插件提供指标暴露能力,默认包含在企业版中。社区版需手动安装:
# 下载插件JAR包
wget https://gitcode.com/gh_mirrors/ru/rundeck/-/raw/main/grails-metricsweb/build/libs/metricsweb-4.17.0.jar -P $RUNDECK_HOME/libext/
# 重启Rundeck服务
systemctl restart rundeckd
2.2 配置application.yml
修改grails-metricsweb/grails-app/conf/application.yml开启Prometheus端点:
management:
endpoints:
enabled-by-default: false
web:
exposure:
include: health,prometheus # 暴露健康检查和Prometheus端点
prometheus:
enabled: true # 启用Prometheus格式输出
metrics:
export:
prometheus:
enabled: true # 启用Prometheus指标导出
step: 1m # 指标采集间隔
descriptions: true # 包含指标描述
2.3 验证指标暴露
启动服务后访问指标端点:
curl http://rundeck-server:4440/actuator/prometheus
成功响应示例:
# HELP rundeck_jobs_total Total number of jobs
# TYPE rundeck_jobs_total gauge
rundeck_jobs_total{project="default",status="succeeded"} 128
# HELP rundeck_executions_duration_seconds Execution duration in seconds
# TYPE rundeck_executions_duration_seconds summary
rundeck_executions_duration_seconds_count{job_name="backup-db"} 42
三、Prometheus数据采集配置
3.1 Prometheus配置文件
创建rundeck-prometheus.yml:
global:
scrape_interval: 15s # 全局采集间隔
scrape_configs:
- job_name: 'rundeck'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['rundeck-server:4440'] # Rundeck服务地址
labels:
service: 'rundeck'
environment: 'production'
3.2 启动Prometheus容器
docker run -d \
-p 9090:9090 \
-v $(pwd)/rundeck-prometheus.yml:/etc/prometheus/prometheus.yml \
--name prometheus \
prom/prometheus:v2.45.0
四、Grafana可视化配置
4.1 添加Prometheus数据源
- 登录Grafana(默认
admin/admin) - 进入Configuration > Data Sources > Add data source
- 选择Prometheus,配置URL:
http://prometheus:9090 - 点击"Save & Test"验证连接
4.2 导入Rundeck仪表盘
使用社区维护的仪表盘模板(ID: 13834):
# 下载仪表盘JSON
wget https://gitcode.com/gh_mirrors/ru/rundeck/-/raw/main/examples/grafana/rundeck-dashboard.json
# 通过Grafana API导入
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer $GRAFANA_API_KEY" \
-d @rundeck-dashboard.json \
http://grafana:3000/api/dashboards/db
4.3 关键指标可视化
仪表盘包含五大监控面板:
| 面板名称 | 核心指标 | 预警阈值 | |
|---|---|---|---|
| 任务执行状态 | rundeck_executions_total{status=~"failed | timeout"} | 5分钟内失败>3次 |
| 系统资源使用率 | jvm_memory_used_bytes | 堆内存使用率>85% | |
| 节点健康状态 | rundeck_nodes_healthy_ratio | 健康节点比例<90% | |
| API响应延迟 | http_server_requests_seconds_sum{uri!~"/actuator.*"} | P95延迟>500ms | |
| 线程池状态 | tomcat_threads_busy_threads | 繁忙线程数>总线程80% |
五、告警规则配置
5.1 Prometheus告警规则
创建alert.rules.yml:
groups:
- name: rundeck_alerts
rules:
- alert: JobExecutionFailureRate
expr: sum(rate(rundeck_executions_total{status="failed"}[5m])) / sum(rate(rundeck_executions_total[5m])) > 0.05
for: 2m
labels:
severity: critical
annotations:
summary: "任务执行失败率过高"
description: "过去5分钟失败率{{ $value | humanizePercentage }}"
- alert: HighJvmMemoryUsage
expr: jvm_memory_used_bytes / jvm_memory_max_bytes > 0.85
for: 5m
labels:
severity: warning
annotations:
summary: "JVM内存使用率过高"
description: "当前使用率{{ $value | humanizePercentage }}"
5.2 配置Grafana告警通道
- 进入Alerting > Notification channels
- 添加Slack/Email/Webhook通道
- 配置通知模板:
{
"dashboardId": "{{dashboardId}}",
"evalMatches": [
{
"metric": "{{metric}}",
"value": "{{value}}"
}
],
"message": "Rundeck告警: {{alertName}} ({{status}})",
"title": "{{alertName}}"
}
六、完整部署架构
七、最佳实践与优化
7.1 指标采集优化
- 采样频率:非核心指标设置30s+采集间隔
- 指标过滤:通过relabel_configs排除低价值指标
- 存储策略:配置Prometheus retention=15d,避免磁盘溢出
7.2 高可用配置
- Prometheus采用联邦集群架构,实现数据分片
- Grafana配置数据库持久化,避免仪表盘丢失
- 所有组件部署为Docker Swarm/K8s服务,确保自动恢复
7.3 进阶监控
- 集成ELK栈分析Rundeck日志,配置日志异常告警
- 使用Node Exporter监控主机层指标,关联任务执行性能
- 部署Blackbox Exporter监控外部API依赖健康状态
八、总结与展望
通过本文配置,运维团队可实现:
- 实时掌握Rundeck集群运行状态
- 提前识别潜在系统瓶颈
- 建立标准化告警响应流程
Rundeck 4.17+版本将引入OpenTelemetry支持,未来可实现分布式追踪与Metrics的统一采集。建议定期关注官方文档获取更新。
附录:关键配置文件清单
$RUNDECK_HOME/etc/rundeck-config.propertiesgrails-metricsweb/grails-app/conf/application.yml- Prometheus配置文件与告警规则
- Grafana仪表盘JSON模板
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



