在配置GitLab监控与报警前,需确保Linux服务器已安装GitLab(版本≥13.0,推荐最新稳定版)、Docker(可选,用于简化组件部署)及curl等基础工具。
Prometheus是开源时序数据库,负责采集GitLab的监控指标。
prometheus-2.30.3.linux-amd64.tar.gz),解压后进入目录。prometheus.yml,添加GitLab监控目标(将your_gitlab_server_address替换为GitLab实际地址):scrape_configs:
- job_name: 'gitlab'
static_configs:
- targets: ['your_gitlab_server_address:8080'] # GitLab默认指标端口为8080
./prometheus --config.file=prometheus.yml,通过http://<服务器IP>:9090访问Web界面,验证是否能获取GitLab指标(如gitlab_rails_up表示GitLab是否存活)。Grafana是可视化工具,用于展示Prometheus采集的GitLab指标。
grafana-8.2.0.linux-amd64.tar.gz),解压后进入目录,运行./bin/grafana-server启动服务。http://<服务器IP>:3000,账号admin/admin),进入Configuration→Data Sources,添加Prometheus数据源(URL填写http://<Prometheus服务器IP>:9090),点击Save & Test验证连接。node_cpu_seconds_total{job="gitlab"}表示CPU使用率),设置可视化类型(如图表),保存仪表盘。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: "GitLab服务器CPU使用率过高"
description: "GitLab服务器当前CPU使用率已超过80%,请及时排查。"
prometheus.yml,添加rule_files配置:rule_files:
- "alerts.yml"
重启Prometheus使规则生效。wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz),编辑alertmanager.yml配置通知渠道(如邮件):route:
receiver: 'email'
receivers:
- name: 'email'
email_configs:
- to: 'admin@example.com'
from: 'alertmanager@example.com'
smarthost: 'smtp.example.com:587'
auth_username: 'your_email'
auth_password: 'your_password'
启动Alertmanager(./alertmanager --config.file=alertmanager.yml),并在Prometheus中配置Alertmanager地址(alerting_config部分)。GitLab自带监控模块,可通过自监控项目实现无需额外部署的监控方案。
/etc/gitlab/gitlab.rb,开启以下配置:gitlab_rails['gitlab_metrics_enabled'] = true
gitlab_runner['metrics_enabled'] = true
global['monitoring_enabled'] = true
运行sudo gitlab-ctl reconfigure使配置生效。适用于需要将监控集成到CI/CD流水线的场景。
.gitlab-ci.yml文件中,添加监控任务(如安装prometheus-node-exporter并生成指标文件):monitoring:
script:
- apt-get update && apt-get install -y prometheus-node-exporter
- echo "gitlab_metrics{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
.gitlab-ci.yml中添加alerting部分,定义告警规则(如内存使用率超过80%)及通知方式(邮件):alerting:
rules:
- alert: HighMemoryUsage
expr: sum(memory_usage) / sum(memory_total) > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "CI项目内存使用过高"
description: "项目${CI_PROJECT_PATH}当前内存使用率已超过80%。"
notify:
- name: email
when: alerting
info:
gitlab_instance: 'gitlab.example.com'
email: 'admin@example.com'
提交代码后,GitLab会自动运行监控任务,触发告警时发送通知。配置告警时,需根据业务需求设置合理的阈值,常见指标及建议阈值如下:
| 指标 | 描述 | 建议阈值 |
|---|---|---|
| CPU使用率 | 服务器CPU占用比例 | >80% |
| 内存使用率 | 服务器内存占用比例 | >80% |
| 磁盘I/O延迟 | 磁盘读写响应时间 | >10ms |
| GitLab响应时间 | GitLab处理请求的平均时间 | >500ms |
| 服务器网络带宽使用率 | 服务器网络带宽占用比例 | >90% |
http://<Prometheus服务器IP>:9090/targets,确认GitLab目标状态为UP。stress-ng命令),观察Prometheus是否触发告警,及Alertmanager是否发送通知。