在配置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是否發送通知。