GitLab监控与报警设置指南
一 架构与前置条件
- 监控链路建议采用:应用/系统指标 → Prometheus 抓取 → Alertmanager 路由与去重 → 通知渠道(邮件、Slack 等);在 GitLab 中可将这些指标以图表方式展示,并支持创建自定义仪表盘。若使用 Kubernetes 环境,GitLab 可部署并管理 Prometheus,配合 Auto DevOps 与 Ingress 快速打通指标采集与展示。对于非 K8s 场景,需手动部署 Prometheus 并在 GitLab 中配置连接。上述能力覆盖从指标采集、处理到在 UI 中展示的完整流程。
二 在 GitLab 中接入 Prometheus 与展示指标
- 手动接入 Prometheus
- 在 GitLab 项目或管理界面的 Operations > Metrics 中,选择 Connect Prometheus,填写 Prometheus 服务器地址 并至少定义一个 Environment,保存后 GitLab 将开始从该实例抓取指标。
- 使用 GitLab 托管的 Prometheus(Kubernetes)
- 进入项目的 Operations > Kubernetes,确保已安装 Prometheus、GitLab Runner、Ingress;在 Settings > CI/CD 的 Auto DevOps 中选择部署策略,并在变量中新增 KUBE_INGRESS_BASE_DOMAIN(填入 Ingress 的 endpoint);在 CI/CD > Pipelines 运行任意分支,成功后即可在 Operations > Metrics 查看默认仪表盘。
- 查看与自定义仪表盘
- 在 Operations > Metrics 可按 Environment 与 时间范围 查看默认仪表盘,并支持 Add metric、Edit dashboard YAML、Duplicate、Create new dashboard、Metrics settings 等操作,满足团队自定义可视化需求。
三 配置告警规则与通知
- Prometheus 侧告警规则
- 在 Prometheus 配置中加载告警规则文件(例如 alerts.yml),定义触发条件、持续时间、严重级别与注解。示例:
- groups:
- name: gitlab_alerts
rules:
- alert: GitLabHighCPU
expr: 1 - avg by(instance)(rate(node_cpu_seconds_total{mode=“idle”}[5m])) > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: “High CPU Usage on {{ $labels.instance }}”
description: “CPU usage is above 80% (current value: {{ $value }})”
- 配置 Alertmanager 的路由与接收器(如 email、Slack 等),完成去重、分组与发送策略设置。
- GitLab 项目内告警通知
- 进入项目 Settings > Monitor > Alerts > Alert settings,勾选 Send a single email notification to Owners and Maintainers for new alerts,即可在触发告警时向项目 Owner/Maintainer 发送单次邮件通知。
- 升级到事件响应与升级策略(可选,Premium)
- 通过 Escalation Policy 配置 值班响应人 与升级规则,对 告警/事件 进行自动升级通知(邮件)。当 告警升级 或 事件升级 时,按规则逐级通知;由告警创建的 事件 与告警共享状态与升级策略,避免重复通知。
四 自监控与 Runner 监控
- 启用 GitLab 自监控
- 在 Admin Area > Settings > Metrics and profiling > Self monitoring 启用自监控后,GitLab 会生成一个 监控项目,用于可视化实例级指标(如 CPU、内存、请求延迟 等),便于日常巡检与容量规划。
- 监控 GitLab Runner
- 若使用 Runner,建议在 Runner 配置中开启 metrics_enabled: true,并在 Prometheus 中为其配置抓取任务,实现对 作业队列、执行时长、失败率 等 Runner 指标的监控与告警。
五 快速验证与常见问题
- 验证要点
- Prometheus 的 Targets 页面应显示 GitLab 与(如有)Runner 的抓取目标为 UP;在 GitLab Operations > Metrics 能看到对应 Environment 的指标图表;触发条件满足时,Alertmanager 应发送通知,项目成员按配置收到 邮件 或 Slack 提醒。
- 常见问题与排查
- 抓取失败:核对 目标地址/端口、网络连通性与访问权限(认证/防火墙/ServiceAccount)。
- 规则不触发:检查 expr 与 for 阈值、指标是否存在与时间对齐。
- 通知未送达:核对 Alertmanager 路由与接收器 配置、邮件网关/Slack Webhook 可达性与权限。
- K8s 托管模式无数据:确认 Prometheus/Ingress/Runner 已安装、KUBE_INGRESS_BASE_DOMAIN 正确、流水线已成功运行并部署到目标环境。