Skip to main content

Command Palette

Search for a command to run...

为 Gitlab 和 Jenkins 添加 InfluxDB 支持

Updated
2 min read

概述

量化和监控对现在的开发运维工作的重要性是毋庸置疑的。在大肆鼓吹 DevOps 的今天,一体化的数据采集和可视化展示就尤为重要了。

为了能在同一视图下对 Jenkins 和 Gitlab 的操作进行监控,本来写了一些数据采集的脚本,后发现这两个系统都有实现向 InfluxDB 发送指标数据的能力,虽说结构和数据的细致程度可能不及定制脚本,但懒人方案始终是更快的解决办法。

非常对不起各位的是,下面的内容主要是堆代码了。

环境准备

Docker

为方便部署,这里采用 Docker 作为执行环境,过程中需要下载一些镜像,所以这里可能要配置代理或者其他途径来获得镜像文件并导入。

这里假设宿主机 IP 为 10.211.55.5

网络

因为几个组件之间互相需要访问,因此我们首先用如下命令创建一个虚拟网络:

docker network create devops

InfluxDB

启动

首先启动我们的 InfluxDB,因为 GitLab 只能连接 InfluxDB 的 udp 端口,而官方版本的镜像并未提供这一功能的方便设置,所以这里采用了一个第三方镜像。

这也是 DockerHub 上的常态 —— 嫡出被庶出灭了。

#!/bin/sh
docker run -d --name=influxdb \
--restart=always \
--network=devops \
-v /var/volume/influxdb:/data \
-p 20002:8083 \
-p 20003:8086 \
-p 20004:8089/udp \
-e UDP_PORT=8089 \
-e UDP_DB=gitlab \
appcelerator/influxdb

稍微做一下解释:

  • 使用了上文创建的虚拟网络
  • 镜像为 appcelerator/influxdb
  • 宿主机上的 /var/volume/influxdb 目录被加载到容器的 /data 目录,用于数据存储的持久化。
  • 开放了三个端口:
    • 8083:管理界面,可用浏览器访问
    • 8086:HTTP API
    • 8089:UDP 端口
  • UDP 端口对应的数据库名为 gitlab

初始化

镜像成功启动之后,就可以使用浏览器打开 http://10.211.55.5:20002,用户名密码缺省为 admin,主机和端口分别为 10.211.55.520003,这些填写结束后,就可以对 influxdb 进行管理了。

分别为 gitlab 和 jenkins 创建数据库:

CREATE DATABASE "gitlab"
CREATE DATABASE "jenkins"

Gitlab

启动

类似的,我们用如下脚本启动 Gitlab:

#!/bin/sh
docker run -d --name=gitlab \
--restart=always \
--network=devops \
-v /var/volume/gitlab/data:/var/opt/gitlab \
-v /var/volume/gitlab/conf:/etc/gitlab \
-v /var/volume/gitlab/log:/var/log/gitlab \
-p 21001:80 \
gitlab/gitlab-ce

跟前面的 InfluxDB 类似,或者说更加简单,连环境变量也不需要了。映射端口为 21001,加入同一个网络。

配置

浏览器登录页面之后,进入 URL: http://10.211.55.5:21001/admin/application_settings,对 Gitlab 进行设置。

在 Metrics 一节,会看到 InfluxDB 的配置信息,选中 Enable 之后,只需要填写主机和 UDP 端口即可,因为有虚拟网络的配置,这里主机我们直接填写 influxdb,端口就是 8089 了。

变更配置后,利用 docker kill/rm 命令停止 gitlab,并重新启动。

验证

接下来我们可以选择一个项目进行 commit/push 操作,然后进入前面提到的 InfluxDB 控制台。 页面右上角的数据库选择 gitlab,在查询输入框中输入 SHOW MEASUREMENTS 并执行,会看到 gitlab 在这一数据库中建立了各个数据表。

继续输入 select * from events,会看到我们刚刚进行的提交记录。

Jenkins

启动

这里用了我自己的 Jenkins 镜像,完成的还是映射端口、挂接存储的任务。

#!/bin/sh
docker run -d --name=jenkins \
--restart=always \
--network=devops \
-v /var/volume/jenkins/data:/data/jenkins \
-v /var/volume/jenkins/maven:/data/maven \
-v /var/volume/jenkins/sonar:/data/sonar \
-v /var/volume/jenkins/kube:/data/kube \
-v /var/volume/jenkins/robot:/data/robot \
-p 21003:8080 \
dustise/jenkins

配置

启动之后访问http://10.211.55.5:21003,对 Jenkins 进行配置。

http://10.211.55.5:21003/pluginManager/available 在这一界面查找 InfluxDB 插件,进行安装启用。

InfluxDB 插件启用之后,就可以在 http://10.211.55.5:21003/configure 找到其配置内容,这里也就是设置一个 InfluxDB 连接到我们之前启动的数据库。

点击 New InfluxDB Target 按钮,在弹出的输入项目中,URL 填写为 http://influxdb:8086,用户名密码同上,数据库为 jenkins

retentionPolicy 一项可以清空。

exposeExceptions 这一项目表示,向 InfluxDB 汇报数据的任务如果失败,是否标记所属 Build 过程为失败。

验证

首先我们创建一个新的 FreeStyle 项目,内容很简单,执行一个 echo "Hello world"

在构建后步骤中,可以看到 Post Build Actions 新增了 Publish build data to InfluDB的动作。

添加这一动作之后,选择我们刚才建立的 InfluxDB Target。

Job 创建完成,就可以开始 Build 了。

Build 成功之后,我们可以在 InfluxDB 控制台上,切换到 Jenkins 数据库,执行 SHOW MEASUREMENTS,可以看到 Jenkins 创建的数据表。运行 SELECT * FROM jenkins_data 进行查询,就会看到我们刚才的 Build 数据。

Robot 等插件也会将结果插入 InfluxDB

展示

有了这些数据,我们就可以以项目为单位,利用 Grafana 或者其他可视化工具,对结果进行叠加和展示了。

More from this blog

龙虾恐慌:AIOps 又要改名了?

ChatGPT 开始,把 AI 拉近到普罗大众的面前,让无数人感受到 AI 的亲民魅力。而龙虾,则把大模型驱动的自动化能力,突然间变得水灵灵、活泼泼地走进千家万户。它不只是“风口上的猪”,而是风口本身。热度高到让 Mac mini 一度断货,不知道这在不在库克的预料之内。 每代人都有每代人的鸡蛋,春节期间,我就领了我的鸡蛋。翻出古老的 MacBook Air M1,充值各种大模型。当然了,这个工具

Mar 9, 20261 min read

再见 2025

我猜不少人以为这个号废了吧?并没有,只是今年变化有点大,一直有种抄起键盘,无从说起的感觉,所以一直偷懒到今天,2025 的最后一天。 今年是我的第四个本命年,去年末一期播客里,大内说本命年不是灾年,是变化年,有危也有机。可是讲真啊,只看到危,没看到机。 各种因缘际会,从鹅厂跳槽到前东家,已经接近四年,第一个合同期已经进入尾声。除了前两年还在云原生领域嗷嗷叫,后两年基本都是些鸡零狗碎的东西了,用老东家的术语说是——偏离主航道,可谓是前景暗淡了。 一旦确定要滚蛋,反倒心思轻松起来,每天骑着我的小红车...

Jan 5, 20261 min read

辅助编程?dora 说:我知道你很急可是请你别急

从 OpenGPT 把大模型的火烧旺了之后,这三年来,相信很多组织或摩拳擦掌、或躬身入局,希望借助聪明能干的大模型,或想偿还技术宅,或想降本增效,或想弯道超车。一时间,沉寂许久的 AIxx 又活过来了,LLM Ops、Vibe Coding、中医大模型、GPT 算命等等,全都老树发新芽,焕发了勃勃生机。那么视角拉回从业者最关注的饭碗相关的领域之一——AI 辅助开发,产生了什么触动,应该如何拥抱呢? DORA 的年度报告中给出了很有意思的结论——强者恒强。 执行摘要部分总结了几个有趣的点: 问题...

Oct 6, 20251 min read

[译]dora:ai 辅助软件开发状态报告

执行摘要 在 2025 年,科技领导者面临的核心问题已不再是“是否要采用 AI”,而是“如何实现其价值”。 DORA 的研究基于超过 100 小时的定性访谈和来自全球近 5,000 名技术专业人士的问卷调查。研究揭示了一个关键事实:AI 在软件开发中的主要角色是“放大器”。它会放大高效能组织的优势,也会凸显组织的缺陷。 关键结论:AI 是放大器 AI 投资的最大回报并非来自工具本身,而是来自组织底层系统的战略性建设: 高质量的内部平台 清晰的工作流 团队的协同能力 缺少这些基础,AI ...

Oct 2, 202514 min read

僭越了,有人在用 Rust 写 Kubernetes

一个新语言问世,最爱做的事情之一,就是重写存量软件了。 云原生喝酒 SIG 重点扶持项目——rk8s(https://github.com/rk8s-dev/rk8s) 也可以归在这个范畴里,只不过这个项目重写的东西比较大,是 Kubernetes。 从 2025 年 1 月第一个 Commit 开始,到现在有了 200 多次 Commit,十几万行代码。当然距离 Kubernetes 的几百万行代码还差得远——老马就是喜欢整这种大无畏项目。 另外该项目也是国内第一个脱离 Cargo 转向使用 ...

Sep 27, 20253 min read

【伪】架构师

342 posts