GitLab CI监控体系构建实践
在现代DevOps实践中,GitLab CI的监控体系是保障持续集成流水线稳定运行的关键。本文将分享一个可复用的监控解决方案。
1. 基础监控配置
首先,在.gitlab-ci.yml中添加基础指标收集:
stages:
- build
- test
- deploy
- monitor
monitor_job:
stage: monitor
script:
- echo "CI Pipeline Status: $CI_PIPELINE_STATUS"
- echo "Pipeline Duration: $(($CI_PIPELINE_DURATION)) seconds"
- echo "Job Status: $CI_JOB_STATUS"
artifacts:
reports:
junit: test-results.xml
2. 自定义Prometheus指标收集
创建monitor.sh脚本:
#!/bin/bash
PIPELINE_ID=$CI_PIPELINE_ID
JOB_NAME=$CI_JOB_NAME
STATUS=$CI_JOB_STATUS
DURATION=$CI_JOB_DURATION
# 发送到Prometheus Pushgateway
curl -X POST http://prometheus-pushgateway:9091/push?job=$JOB_NAME \
-H "Content-Type: text/plain" \
-d "pipeline_duration{pipeline_id=$PIPELINE_ID,job_name=$JOB_NAME} $DURATION"
3. 告警规则配置
在GitLab中设置CI告警:
variables:
ALERT_THRESHOLD: "300" # 5分钟超时告警
alert_job:
stage: monitor
script:
- if [ $CI_JOB_DURATION -gt $ALERT_THRESHOLD ]; then
- echo "ALERT: Job exceeded timeout threshold"
- exit 1
- fi
4. 可复用监控模板
将上述配置封装为可复用的GitLab CI模板文件,实现跨项目复用。此监控体系能有效提升CI/CD流水线的可观测性。

讨论