GitLab CI监控体系

柔情密语 +0/-0 0 0 正常 2025-12-24T07:01:19 CI/CD · GitLab · 监控

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流水线的可观测性。

推广
广告位招租

讨论

0/2000