监控与日志管理总览
在 CentOS 上,建议采用“内置监控 + 系统工具 + 外部平台”的多层方案:使用 GitLab 内置监控快速查看实例健康,配合 Prometheus + Grafana 做长期指标与可视化,再用 ELK 或系统 logrotate 做日志的集中与轮转管理。
监控方案
- 内置监控与健康页
- 在管理员区域访问 /admin/monitoring,查看 CPU、内存、磁盘、网络 等关键指标与实例状态,用于日常巡检与容量评估。
- 系统级资源监控
- 使用 top、vmstat、free、iostat、df/du、ss 等命令,快速定位 CPU、内存、磁盘 I/O、网络与文件系统 的异常,适合临时排查与应急。
- Prometheus + Grafana
- 部署 Prometheus 抓取 GitLab 与节点指标,配置 Grafana 数据源并导入面板,实现指标可视化与告警;可结合 Alertmanager 进行邮件、Slack 等通知。
- 第三方监控
- 使用 Zabbix、Nagios 等平台对主机与应用层指标进行统一监控与告警,适合已有监控体系的企业环境。
日志管理
- 日志位置与实时查看
- 日志默认位于 /var/log/gitlab/。常用文件:
- gitlab-rails/production.log(Rails 应用日志)
- nginx/gitlab_access.log / gitlab_error.log(Nginx 访问与错误)
- sidekiq/sidekiq.log(后台任务)
- 快速查看:
- 实时跟踪:sudo gitlab-ctl tail
- 指定服务:sudo gitlab-ctl tail nginx/gitlab_error.log
- 直接查看文件:sudo less /var/log/gitlab/gitlab-rails/production.log
- 日志轮转与保留
- logrotate(Omnibus 内置):在 /etc/gitlab/gitlab.rb 中配置
- 示例:
- logging[‘logrotate_frequency’] = “daily”
- logging[‘logrotate_rotate’] = 30
- logging[‘logrotate_compress’] = “compress”
- 生效:sudo gitlab-ctl reconfigure
- Runit 日志(服务内日志轮转与压缩)
- 示例(/etc/gitlab/gitlab.rb):
- logging[‘svlogd_size’] = 200 * 1024 * 1024(单文件约 200MB)
- logging[‘svlogd_num’] = 30(保留 30 个)
- logging[‘svlogd_timeout’] = 24 * 60 * 60(按天切割)
- logging[‘svlogd_filter’] = “gzip”
- 生效:sudo gitlab-ctl reconfigure
- 集中式日志
- 使用 ELK(Elasticsearch + Logstash + Kibana) 收集与索引 /var/log/gitlab/ 日志,在 Kibana 中构建仪表盘实现检索、分析与可视化。
告警与可视化配置示例
- Prometheus 抓取 GitLab 指标
- 编辑 /etc/prometheus/prometheus.yml:
- scrape_configs:
- job_name: ‘gitlab’
static_configs:
- targets: [‘your_gitlab_server_address:9090’]
- 简单告警规则(示例)
- 在 Prometheus 规则文件(如 alerts.yml)中添加:
- 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: “CPU usage on GitLab server is above 80%”
- Grafana 可视化
- 添加 Prometheus 数据源,导入或创建面板,展示 CPU、内存、磁盘、网络 与 GitLab 关键业务指标。
日常巡检命令清单
- 资源与连接
- 资源:top / vmstat / free / iostat
- 磁盘:df -h / du -sh /var/log/gitlab
- 网络与端口:ss -tulpen | grep :80|:443
- GitLab 服务与日志
- 服务状态:sudo gitlab-ctl status
- 实时日志:sudo gitlab-ctl tail
- 错误定位:sudo less /var/log/gitlab/gitlab-rails/production.log
- 配置生效:sudo gitlab-ctl reconfigure。