一、使用Prometheus+Grafana实现GitLab监控与报警(主流方案)
Prometheus是开源的时序数据库与监控系统,Grafana是可视化工具,二者结合能实现GitLab全面的性能监控与灵活报警。
wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz),编辑prometheus.yml配置文件,添加GitLab监控目标:scrape_configs:
- job_name: 'gitlab'
static_configs:
- targets: ['gitlab.example.com:9090'] # 替换为GitLab服务器IP或域名
保存后启动Prometheus(./prometheus --config.file=prometheus.yml),通过http://<服务器IP>:9090/targets验证是否成功连接GitLab。wget https://dl.grafana.com/oss/release/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)并保存。gitlab_runner_jobs_running、node_memory_MemAvailable_bytes),配置图表展示(如CPU使用率折线图、内存占用仪表盘),保存仪表盘。alerts.yml文件,定义告警条件(如CPU使用率超过80%持续1分钟、内存使用率超过80%持续5分钟):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 1 minute"
- alert: GitLabHighMemory
expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes > 0.8
for: 5m
labels:
severity: critical
annotations:
summary: "High Memory Usage on GitLab Server"
description: "GitLab server memory usage is above 80% for 5 minutes"
将alerts.yml放入Prometheus的rules目录,重启Prometheus加载规则。在Grafana中进入“Alerting→Alert rules”,添加基于Prometheus的告警规则,并配置通知渠道(如邮件、Slack)。二、使用GitLab内置监控功能(简单易用)
GitLab自带监控模块,无需额外安装工具,适合快速搭建基础监控体系。
/etc/gitlab/gitlab.rb),开启报警功能并设置邮件接收地址:gitlab_rails['alert_monitor'] = true
gitlab_rails['alert_email'] = ['admin@example.com']
gitlab_rails['alert_on_issues'] = true # 当有新Issue时发送报警
gitlab_rails['alert_on_merged_requests'] = true # 当有合并请求时发送报警
保存后运行sudo gitlab-ctl reconfigure使配置生效。测试:创建一个Issue或合并请求,检查admin@example.com是否收到报警邮件。三、常用行命令工具(实时排查问题)
行命令工具适合快速查看系统资源使用情况,辅助排查GitLab性能问题。
M键按内存排序,按P键按CPU排序,快速定位高资源消耗进程。vmstat 1 5(每1秒刷新一次,共5次),关注r(运行队列长度)、b(阻塞进程数)、si/so(磁盘交换分区读写量)。iostat -x 1,关注%util(磁盘利用率,超过70%需优化)、await(平均I/O等待时间,超过20ms可能存在瓶颈)。netstat -tulnp(查看监听端口)或ss -s(查看socket统计信息),帮助排查网络连接问题。四、第三方监控服务(全面扩展)
若需要更专业的监控(如分布式追踪、日志分析),可集成第三方服务: