温馨提示×

centos gitlab监控报警

小樊
51
2025-09-20 01:54:51
栏目: 智能运维

CentOS环境下GitLab监控报警配置指南

一、基础环境准备

在CentOS系统上配置GitLab监控报警前,需确保系统已安装GitLab(版本≥13.0,推荐最新稳定版),并具备root或sudo权限。同时,建议关闭SELinux(setenforce 0)或配置SELinux策略允许监控工具访问GitLab端口(默认80/443、9090等)。

二、核心监控方案:Prometheus + Grafana(推荐)

1. 配置GitLab暴露监控指标

修改GitLab主配置文件/etc/gitlab/gitlab.rb,启用内置指标服务:

gitlab_rails['gitlab_metrics_enabled'] = true
gitlab_runner['metrics_enabled'] = true
global['monitoring_enabled'] = true

保存后执行sudo gitlab-ctl reconfigure使配置生效,GitLab会自动启动指标服务(默认端口9090)。

2. 安装并配置Prometheus

  • 安装Prometheus:通过RPM包或Docker安装(推荐RPM包,稳定性更高)。编辑/etc/prometheus/prometheus.yml,添加GitLab指标抓取任务:
    scrape_configs:
      - job_name: 'gitlab'
        static_configs:
          - targets: ['localhost:9090']  # GitLab服务器地址
    
  • 启动Prometheussudo systemctl start prometheus && sudo systemctl enable prometheus。通过http://<服务器IP>:9090访问Prometheus Web界面,验证是否能获取GitLab指标(如gitlab_rails_database_queries_seconds)。

3. 安装并配置Grafana

  • 安装Grafana:通过RPM包安装,执行sudo yum install grafana -y && sudo systemctl start grafana-server
  • 连接Prometheus:登录Grafana(默认账号admin/admin),进入“Configuration→Data Sources”,添加Prometheus数据源(URL填写http://localhost:9090),测试连接成功后保存。
  • 创建监控仪表盘:导入GitLab专用仪表盘(ID:4379,来自Grafana社区),或自定义添加监控指标(如CPU使用率node_cpu_seconds_total{mode!="idle"}、内存使用率node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes、GitLab作业成功率gitlab_runner_jobs_success_rate)。

三、告警规则配置

1. Prometheus告警规则

创建/etc/prometheus/alert.yml文件,定义常见告警规则(如高CPU、高内存、作业失败):

groups:
  - name: gitlab_alerts
    rules:
      - alert: GitLabHighCPU
        expr: (sum by(instance) (irate(node_cpu_seconds_total{mode!="idle"}[5m]))) > 0.8
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "GitLab服务器CPU使用率过高({{ $value }}%)"
          description: "服务器{{ $labels.instance }}的CPU使用率已持续5分钟超过80%,请检查进程负载。"

      - alert: GitLabHighMemory
        expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) < 0.2
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "GitLab服务器内存不足(可用率{{ $value | humanizePercentage }})"
          description: "服务器{{ $labels.instance }}的内存可用率已持续10分钟低于20%,可能导致服务卡顿。"

      - alert: GitLabJobFailureRate
        expr: rate(gitlab_runner_jobs_failed_total[1h]) / rate(gitlab_runner_jobs_total[1h]) > 0.1
        for: 1h
        labels:
          severity: error
        annotations:
          summary: "GitLab作业失败率过高({{ $value | humanizePercentage }})"
          description: "过去1小时内GitLab作业失败率超过10%,请检查Runner配置及项目流水线。"

编辑/etc/prometheus/prometheus.yml,加载告警规则:

rule_files:
  - "/etc/prometheus/alert.yml"
alerting:
  alertmanagers:
    - static_configs:
        - targets: ['localhost:9093']  # Alertmanager地址

重启Prometheus使规则生效。

2. Alertmanager通知配置

安装Alertmanager:sudo yum install alertmanager -y && sudo systemctl start alertmanager。编辑/etc/alertmanager/alertmanager.yml,配置邮件通知(以SMTP为例):

route:
  receiver: 'email-notifications'
  group_by: ['alertname', 'severity']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 1h

receivers:
  - name: 'email-notifications'
    email_configs:
      - to: 'admin@example.com'
        from: 'gitlab-alert@example.com'
        smarthost: 'smtp.example.com:587'
        auth_username: 'gitlab_alert'
        auth_password: 'your_password'
        send_resolved: true  # 问题恢复后发送通知

重启Alertmanager:sudo systemctl restart alertmanager

四、GitLab内置监控(可选补充)

GitLab自带监控功能,可通过以下步骤启用:

  1. 进入GitLab控制台(http://<服务器IP>/admin),点击“Monitoring→Metrics”,确认指标服务已启用。
  2. 配置CI/CD管道收集自定义指标:在项目根目录创建.gitlab-ci.yml文件,添加监控任务(如安装prometheus-node-exporter并导出指标):
    monitoring:
      stage: test
      script:
        - yum install -y prometheus-node-exporter
        - echo "gitlab_custom_metric{project=\"$CI_PROJECT_PATH\"} 1" > /var/lib/node_exporter/custom_metrics.prom
      artifacts:
        paths:
          - /var/lib/node_exporter/custom_metrics.prom
        expire_in: 1 week
    
    此配置会将自定义指标暴露给Prometheus抓取。

五、测试与验证

  1. 模拟高CPU场景:通过stress工具模拟高CPU负载(stress --cpu 4 --timeout 300),观察Prometheus是否触发GitLabHighCPU告警,Grafana仪表盘是否显示异常,以及是否收到邮件通知。
  2. 模拟作业失败:修改项目流水线脚本(如gitlab-ci.yml中添加exit 1),触发作业失败,验证GitLabJobFailureRate告警是否生效。

注意事项

  • 确保Prometheus、Grafana、Alertmanager的版本兼容(推荐最新稳定版)。
  • 生产环境中建议使用HTTPS加密通信(配置Prometheus的basic_auth、Grafana的TLS设置)。
  • 定期备份监控配置文件(prometheus.ymlalert.ymlalertmanager.yml),避免配置丢失。
  • 根据实际业务需求调整告警阈值(如CPU阈值从80%调整为70%)和通知方式(如增加Slack、企业微信通知)。

0