Ubuntu系统下GitLab运行监控的综合方法
GitLab内置了丰富的监控功能,可直接通过命令行或Web界面快速检查实例状态:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production,该命令会验证GitLab各组件的健康状况(如数据库连接、存储路径权限、服务进程等),并输出详细的检查结果。top、htop或atop查看GitLab进程的CPU、内存占用;使用ps aux | grep gitlab确认GitLab相关服务(如unicorn、sidekiq、postgresql)是否正常运行。http://<服务器IP>),左侧菜单进入「管理」→「监控」→「仪表盘」,可查看实时资源使用率(CPU、内存、磁盘)、活跃用户数、正在运行的CI/CD作业及错误日志等关键指标。Prometheus(开源监控系统)与Grafana(可视化工具)的组合是GitLab监控的主流方案,支持全面的指标收集与直观的可视化,并能设置告警通知:
/etc/prometheus/prometheus.yml),添加GitLab监控目标:scrape_configs:
- job_name: 'gitlab'
static_configs:
- targets: ['your_gitlab_server_address:8080'] # GitLab默认暴露指标的端口为8080
重启Prometheus使配置生效:sudo systemctl restart prometheus。http://<服务器IP>:3000),添加Prometheus作为数据源(填写Prometheus的URL,如http://localhost:9090)。通过Grafana的「仪表盘」→「+新建」,选择GitLab预设模板(如「GitLab Overview」),添加CPU使用率、内存占用、作业执行时间、数据库查询延迟等监控图表。/etc/prometheus/alerts.yml),定义触发条件与通知方式。例如:groups:
- name: gitlab_alerts
rules:
- alert: HighCPUUsage
expr: rate(node_cpu_seconds_total{job="gitlab"}[1m]) > 0.8 # CPU使用率超过80%
for: 1m # 持续1分钟触发
labels:
severity: warning
annotations:
summary: "GitLab服务器CPU使用率过高"
description: "当前CPU使用率:{{ $value }}%,持续时间:{{ $duration }}"
- alert: HighMemoryUsage
expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes > 0.8 # 内存占用超过80%
for: 1m
labels:
severity: critical
annotations:
summary: "GitLab服务器内存不足"
description: "当前内存占用率:{{ $value }}%,剩余内存:{{ $value2 }}"
加载告警规则:sudo systemctl restart prometheus。再通过Grafana的「告警」→「+新建告警规则」,关联Prometheus数据源,设置通知渠道(如邮件、Slack、企业微信等)。Ubuntu系统自带的工具可用于快速查看GitLab的资源消耗情况:
top -p $(pgrep -f gitlab)过滤出GitLab相关进程。/var/opt/gitlab)所在磁盘的剩余空间,避免因磁盘满导致服务异常。GitLab的日志文件记录了详细的运行信息与错误堆栈,是排查问题的关键:
/var/log/gitlab/,包含以下关键日志:
gitlab-rails/production.log:GitLab Rails应用的日志(如用户操作、API请求);sidekiq.log:后台作业队列的日志(如CI/CD流水线执行记录);nginx/gitlab_access.log/nginx/gitlab_error.log:Nginx的访问与错误日志(如HTTP请求状态);postgresql.log:PostgreSQL数据库的日志(如查询慢、连接问题)。tail -f /var/log/gitlab/gitlab-rails/production.log实时查看最新日志,或通过grep "ERROR" /var/log/gitlab/gitlab-rails/production.log筛选错误信息。GitLab提供了RESTful API,可通过HTTP请求获取实例的监控指标(如项目数量、用户数、CI/CD作业状态):
<your-gitlab-token>和<your-gitlab-server>):curl --header "PRIVATE-TOKEN: <your-gitlab-token>" "https://<your-gitlab-server>/api/v4/application/health"
返回结果示例:{"status":"ok","database_status":"ok","redis_status":"ok"},可用于自动化监控脚本(如结合Shell/Python定期检查)。