一、使用Prometheus+Grafana组合实现监控与告警
Prometheus是开源的时间序列数据库,Grafana是可视化工具,二者结合是Linux环境下GitLab监控告警的主流方案。
prometheus.yml文件,添加GitLab监控任务:scrape_configs:
- job_name: 'gitlab'
static_configs:
- targets: ['your_gitlab_server_address:8080'] # 替换为GitLab服务器IP及默认端口
保存后重启Prometheus服务,通过http://<Prometheus_IP>:9090/targets验证是否成功连接到GitLab。http://localhost:9090),点击“Save & Test”确保连接成功。alerts.yml文件,定义告警条件(如CPU使用率超过80%持续1分钟):groups:
- name: gitlab_alerts
rules:
- alert: GitLabHighCPU
expr: node_cpu_seconds_total{job="gitlab"} > 0.8 for: 1m
labels:
severity: warning
annotations:
summary: "High CPU Usage on GitLab Server"
description: "GitLab server CPU usage is above 80% for more than 1 minute."
将alerts.yml加载到Prometheus(通过prometheus.yml的rule_files配置),并在Grafana的“Alerting→Alert Rules”中创建对应的告警通道(如邮件、Slack),设置通知方式为“Send to Alertmanager”。二、利用GitLab内置监控功能
GitLab自带监控模块,无需额外安装工具,适合快速启用基础监控。
/etc/gitlab/gitlab.rb,开启以下配置:gitlab_rails['gitlab_metrics_enabled'] = true
gitlab_runner['metrics_enabled'] = true
global['monitoring_enabled'] = true
运行sudo gitlab-ctl reconfigure使配置生效,GitLab会自动启动Prometheus服务(默认端口9090)和Grafana服务(默认端口3000)。三、通过.gitlab-ci.yml文件实现CI/CD流水线监控与告警
在项目的.gitlab-ci.yml文件中定义监控任务和告警规则,适合监控CI/CD流程及项目相关指标。
.gitlab-ci.yml中添加monitoring job,安装prometheus-node-exporter(用于收集系统指标),并生成GitLab自定义指标文件:monitoring:
script:
- apt-get update && apt-get install -y prometheus-node-exporter
- echo "gitlab_ci_pipeline_success{project=\"$CI_PROJECT_PATH\", ref=\"$CI_COMMIT_REF_NAME\"} 1" > /etc/prometheus/exporters/gitlab_metrics.prom
artifacts:
paths:
- /etc/prometheus/exporters/gitlab_metrics.prom
expire_in: 1 week # 保留artifacts一周
该任务会将GitLab流水线的成功状态指标暴露给Prometheus。.gitlab-ci.yml中添加alerting section,定义告警规则(如流水线失败率超过50%):alerting:
rules:
- alert: HighPipelineFailureRate
expr: sum(gitlab_ci_pipeline_failures_total{job="monitoring"}) / sum(gitlab_ci_pipeline_total{job="monitoring"}) > 0.5 for: 5m
labels:
severity: critical
annotations:
summary: "High pipeline failure rate in ${CI_PROJECT_NAME}"
description: "Pipeline failure rate is above 50% in the last 5 minutes."
notify:
- name: email
when: alerting
info:
email: admin@example.com # 替换为实际通知邮箱
配置完成后,GitLab会根据规则触发告警,并通过指定的通知方式(如邮件)发送给相关人员。四、第三方监控工具补充
除上述方案外,还可使用第三方工具扩展监控能力: