You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Zabbix中通过自动发现原型采集多GitLab Runner的Prometheus数据?

实现GitLab Runner自动发现的具体步骤

1. 修改Shell脚本,新增自动发现逻辑

在现有采集脚本中添加Runner ID自动发现分支,输出Zabbix要求的JSON格式数据(结构必须为{"data": [{"{#RUNNERID}": "xxx"}, ...]})。

示例脚本(假设文件名为gitlab_runner_monitor.sh):

#!/bin/bash
PROMETHEUS_URL="http://<你的GitLab Runner Prometheus地址>:9252/metrics"

case $1 in
    discover_runners)
        # 从Prometheus指标中提取唯一的Runner ID并格式化输出
        runner_ids=$(curl -s "$PROMETHEUS_URL" | grep 'gitlab_runner_jobs.*runner_id' | awk -F 'runner_id="|"' '{print $2}' | sort -u)
        echo -n '{"data": ['
        first=1
        for id in $runner_ids; do
            if [ $first -ne 1 ]; then echo -n ','; fi
            echo -n "{\"{#RUNNERID}\": \"$id\"}"
            first=0
        done
        echo ']}'
        ;;
    get_metric)
        # 原有指标采集逻辑,接收Runner ID和指标名参数
        RUNNER_ID=$2
        METRIC=$3
        curl -s "$PROMETHEUS_URL" | grep "gitlab_runner_${METRIC}.*runner_id=\"${RUNNER_ID}\"" | awk '{print $2}'
        ;;
esac

给脚本添加执行权限:

chmod +x /path/to/gitlab_runner_monitor.sh

2. 配置Zabbix Agent的UserParameter

在Zabbix Agent的自定义配置文件(如zabbix_agentd.d/gitlab_runner.conf)中添加以下配置:

# 自动发现所有Runner ID
UserParameter=gitlab.runner.discovery,/path/to/gitlab_runner_monitor.sh discover_runners
# 采集指定Runner的指定指标,$1为指标名,$2为Runner ID
UserParameter=gitlab.runner.metric[*],/path/to/gitlab_runner_monitor.sh get_metric $2 $1

重启Zabbix Agent使配置生效:

systemctl restart zabbix-agent

3. 在Zabbix模板中配置自动发现规则

3.1 创建自动发现规则

  1. 进入Zabbix前端,打开你的GitLab Runner模板,选择「自动发现规则」
  2. 点击「创建自动发现规则」:
    • 名称:GitLab Runner ID自动发现
    • 键值:gitlab.runner.discovery
    • 更新间隔:根据实际需求设置(如5分钟)
    • 其余选项保持默认,点击「添加」

3.2 创建监控项原型

在上述自动发现规则下,为需要的指标创建监控项原型(以「活跃作业数」为例):

  1. 点击「监控项原型」→「创建监控项原型」
    • 名称:Runner {#RUNNERID} 活跃作业数
    • 键值:gitlab.runner.metric[running_jobs,{#RUNNERID}]
    • 类型:Zabbix客户端
    • 信息类型:数字(浮点)
    • 更新间隔:1分钟
    • 其余选项按需配置,点击「添加」

重复此步骤可添加其他指标的原型,如pending_jobs、completed_jobs等,仅需修改键值中的指标名即可。

3.3 可选:创建触发器原型

若需为每个Runner设置告警规则(如活跃作业数超标):

  1. 点击「触发器原型」→「创建触发器原型」
    • 名称:Runner {#RUNNERID} 活跃作业数过高
    • 表达式:{你的模板名称:gitlab.runner.metric[running_jobs,{#RUNNERID}].last()}>5
    • 严重级别:按需设置,点击「添加」

4. 验证配置

  1. 在Agent机器上手动执行自动发现命令,检查输出格式是否正确:
/path/to/gitlab_runner_monitor.sh discover_runners

正常输出示例:

{"data": [{"{#RUNNERID}": "10"}, {"{#RUNNERID}": "15"}]}
  1. 验证指标采集:
/path/to/gitlab_runner_monitor.sh get_metric 10 running_jobs

应返回对应Runner的活跃作业数值。
3. 在Zabbix前端等待自动发现执行后,查看关联主机的监控项,确认每个Runner的对应监控项已自动生成。

内容的提问来源于stack exchange,提问作者solick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 08:18:36