环境搭建完成后,最终展示效果如下图所示:

docker-compose.yml

内容如下:

version:'3'services:influxdb:image: influxdb:1.8.0container_name: influxdbrestart: alwaysports:- "8086:8086"volumes:- /opt/docker/influxdb:/var/lib/influxdb            - /etc/localtime:/etc/localtimehostname: influxdbenvironment:- ADMIN_USER=root            - INFLUXDB_INIT_PWD=YOUR_PWD- PRE_CREATE_DB=jenkinschronograf:image: chronograf:1.8container_name: chronografrestart: alwaysports:- 8888:8888volumes:- /opt/docker/chronograf:/var/lib/chronografgrafana:image: grafana/grafana:7.3.0container_name: grafanarestart: alwayslinks:- influxdb:influxdbports:- "3000:3000"user: rootvolumes:- /etc/localtime:/etc/localtime          - /opt/docker/grafana/grafana-data:/var/lib/grafana            - /opt/docker/grafana/grafana-logs:/var/log/grafanaenvironment:- INFLUXDB_HOST=influxdb            - INFLUXDB_PORT=8086# 设置管理员登录密码, 默认为admin, 首次登录时需要进行修改- GF_SECURITY_ADMIN_PASSWORD=YOUR_PWD# 设置要安装的插件- GF_INSTALL_PLUGINS=grafana-piechart-panel

搭建过程中,有几个需要注意的地方,下面来稍微说说:

不需要额外为influxDB容器开放8083端口,这是因为从InfluxDB 1.3以及之后的版本,已经取消了自带的web管理页面了,取而代之的是使用Chronograf;

创建Chronograf容器是可选的,容器启动后,访问:HTTP://IP:8888,可以进入chronograf 控制台页面,如下:

第一项Connection URL不要用localhost,可能出现访问不通的情况,Username 和 Password可以保持空白后面再设置,Telegraf的默认数据库名称为telegraf,直接点击按钮下一步就好。

influxdb 容器启动成功后,进入容器内的/usr/bin目录,这里面存放了Influxdb相关的工具,如下:

当然也可以在Chronograf控制台页面进行数据库的CURD相关操作。

docker exec -it influxdb bashcd /usr/binfind | grep influx./influx_stress
./influx_inspect
./influx
./influxd
./influx_tsm# 查看版本./influx -version
InfluxDB shell version: 1.8.0# 进入Influxdb客户端命令行./influx# 创建jenkins数据库
`CREATE DATABASE  jenkins

grafana这里使用了7.3.0版本,如果从低版本迁移到高版本会有权限问题(坑!!),详见:https://grafana.com/docs/grafana/latest/installation/docker/#migration-from-a-previous-version-of-the-docker-container-to-5-1-or-later。

另外,考虑到要为Jenkins做一个构建成功率和构成失败率统计,所以为Grafana预安装了饼图插件,相关的方法在上面的链接中也有详细介绍。

Jenkins

Jenkins需要安装influxdb插件,承担数据采集的角色,在项目构建完成后,将本次构建信息推送到数据库中,后续Grafana配置好数据源后,就可以将数据进行可视化展示

插件安装完成后,进入系统配置页面,设置下InfluxDB Targets:

配置保存成功后,进入项目配置页面,添加构建后操作

当项目构建完成后,会自动上报十分详细的构建信息到数据库中,可以看到一些数据表已经自动被创建了

Grafana目录代理(可选)

使用Nginx为grafana做了代理,以实现在公网下通过域名+"/grafana"的形式访问,点击查看官方文档,步骤如下:

修改Nginx配置(nginx.conf),红色部分为新增,proxy_pass后面一定要有"/"(用以去掉/grafana/匹配本身)

server {listen 80;roo t/usr/share/nginx/www;index index.html index.htm;location /grafana/ {proxy_pass http://localhost:3000/;}}

修改grafana配置(grafana.ini),由于grafana以容器形式启动,所以先拷贝配置文件到宿主机

docker cp grafana:/etc/grafana/grafana.ini /opt/docker/grafana-data/etc

然后修改配置文件中的以下内容:

[server]domain = 你的域名root_url = %(protocol)s://%(domain)s/grafana/

配置文件修改完成后,重启容器再挂载宿主机配置文件目录到容器中

docker kill grafanadocker rm grafanadocker run  --user root -d --name grafana -p 3000: 3000 -v /opt/docker/grafana-data/etc:/etc/grafana/ -v /opt/docker/grafana-data/grafana:/var/lib/grafana  grafana:mc

reload nginx

配置Grafana 数据源

数据源可以配置多个,配置项和Jenkins中一致就可以了

Jenkins Dashboard

Grafana提供了导入Dashboards模板的功能,在官网可以搜索很多别人已经实现的模板,我们只需要按需导入即可,十分方便,这里以Jmeter为例,进入官网 Grafana Dashboards 搜索页面,点击搜索结果中的第一条:

在页面右侧可以看到模板ID为5496,复制此ID,进入Grafana控制台页面,点击左侧的加号,选择Import然后输入模板ID,并导入即可,导入成功后,会自动新建一个 Jmeter Dashboard

这里尝试去搜索Jenkins相关的模板,发现并没有符合我们要求的模板,所以后续是通过手动配置的方式来完成的,需要手动创建一个名为Jenkins的Dashboard,然后在进行后续操作。

创建环境变量

采集到的数据是包括所有jenkins项目的构建数据,在利用这部分数据时,可以创建项目名称变量(projectName),这个变量实际就是Jenkins的Job Name

配置如下:

保存完成后,在Dashboard页面,会发现多了一个名为"项目名称"的筛选项:

后续配置Panel时,在InfluxQL中可以通过$projectName的方式使用这个自定义的变量。

Add Panel

下面是一些我用到视图类型以及对应的InlfuxQL,Visualization配置可以按照喜欢自行调整。

Pie Chart

#Title构建成功SELECT count("build_result") FROM jenkins_data  WHERE ("build_result" = 'SUCCESS' AND "project_path " =~ /^$projectName$/) AND $timeFilter GROUP BY time($__interval) fill(null)# Title 构建成功SELECT count("build_result") FROM jenkins_data  WHERE ("build_result" = 'FAILURE' AND "project_path" =~ /^$projectName$/) AND $timeFilter GROUP BY time($__interval) fill(null)

Graph

#Title  构建耗时SELECT "build_time" FROM "jenkins_data" WHERE ("project_path" =~ /^$projectName$/) AND $timeFilter ORDER BY time DESC tz('Asia/Shanghai')

Gauge

# Title 健康指数SELECT project_build_health FROM jenkins_data  WHERE ("project_path" =~ /^$projectName$/) AND $timeFilter

Table

#Title 构建记录SELECT "build_agent_name", "build_number", "build_result", "build_status_message", "build_time", "project_build_health" FROM "jenkins_data" WHERE ("project_path" =~ /^$projectName$/) AND $timeFilter GROUP BY "project_name" ORDER BY time DESC

除了Jenkins构建结果外,Jmeter压测结果也可以通过后置处理器非常方便的采集到InfluxDB中,并利用Grafana进行展示


这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

关注我的微信公众号:【伤心的辣条】自行获取~

我的自动化测试之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,所以,我和朋友花了一段时间整理编写了《软件测试工程师发展规划路线》,也整理了不少【教程资源】,打包好了分享在群里面。有需要的朋友可以进群:914172719 获取。希望会给你带来帮助和方向

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

使用Docker+Grafana+InfluxDB可视化展示Jenkins构建信息相关推荐

  1. 内网监控群晖918+(docker telegraf influxdb grafana)

    1 环境准备 #内网快速部署监控,监控总的分为三步:数据采集(telegraf).数据存储(influxdb).可视化(grafana),当然这套也是用在生产上面,当然要视实际情况而定,这里讲的是内网 ...

  2. InfluxDB SpringBoot Docker Grafana实战监控数据统计

    一.InfluxDB是什么? 二.与Java交互中有哪些对象? 三.Docker安装Influxdb 四.SpringBoot + InfluxDB 实战监控数据统计 五.实际监控 一.InfluxD ...

  3. JMeter+InfluxDB+Grafana实现可视化实时监控

    本文我们将介绍如何使用JMeter+InfluxDB+Grafana打造可视化实时监控. 目录 一.简介 概述 简单介绍实现原理 二.indluxdb安装和部署 1.indluxdb下载 2.修改in ...

  4. Node_exporter+Prometheus+Grafana 快速实现Linux系统性能数据提取、存储和可视化展示

    Node_exporter+Prometheus+Grafana 快速实现Linux系统性能数据提取.存储和可视化展示 1. 前言 2. Node_exporter 2.1 安装 node_expor ...

  5. Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目

    Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目 前文使用Docker搭建Jenkins+Docker持续集成环境我们已经搭建了基于docker+ ...

  6. grafana+influxdb数据可视化

    日常我们会有一些记录历史性能数据并进行分析观察的需求,一般简单地做法是通过日志记录下数据,然后整个文档(高级一点存到db里),后面自己通过工具来维护查看. 这里我们就来看一看如何通过grafana+i ...

  7. docker+jenkins构建vue项目

    目录 1.安装docker 2.安装Docker Compose 3.配置docker-compose.yml 4.通过 Compose 创建 jenkins 5.配置 jenkins 6.手动备份J ...

  8. 3.Prometheus + Grafana实现可视化、告警

    3.Prometheus + Grafana实现可视化.告警 3.1.什么是Grafana 3.2.快速入门 3.3.Grafana的下载 3.4.启动grafana 3.5.配置数据源 3.6.配置 ...

  9. ubuntu上 grafana + influxdb + telegraf 安装配置

    apt安装 Grafana 一个纯粹的HTML/JS应用,其功能非常强大,访问InfluxDB时不会有跨域访问的限制.只要配置好数据源为InfluxDB之后就可以,剩下的工作就是配置图表. Influ ...

最新文章

  1. IDEA下使用Jetty进行Debug模式调试【含演示GIF图】
  2. 探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法
  3. 什么是iu组装服务器,超频三全新款 IU服务器散热器全新登场
  4. web页面锁屏初级尝试
  5. CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系...
  6. @Transactional和@Async 使用场景
  7. redis单节点安装
  8. Sublime Text 文件乱码
  9. 设计模式7大结构型模式
  10. 【转】Prewitt 算子
  11. RMQ_第一弹_Sparse Table
  12. Linux如何创建makefile文件,如何在Linux上为gcc创建简单的makefile?
  13. GAN(生成对抗网络)有一本实战书出版了,了解下?
  14. Dezender下载及使用说明
  15. ENVI5.3处理高分五号影像数据
  16. 萌言萌语|测试工作日报及总结
  17. 工具 | Cmder 自定义 aliases 命令
  18. html5程序阅读题,20 个重要的 HTML5 面试题及答案
  19. 公司企业邮箱怎么登录?这些安全登录邮箱的方法你要知道
  20. JsonParseException: Unexpected character (‘sss‘ (code xxx)): was expecting a colon to separ

热门文章

  1. 973. 最接近原点的 K 个点
  2. java 绘图 打印_java调用本地打印机,绘制打印模板,小票模板
  3. c语言人事管理系统,c语言人事管理系统
  4. centos php编译,深入讲解CentOS PHP安装编译
  5. linux ls 参数列表过长,ls提示参数列表过长解决办法
  6. 计算机三级网络技术总结,计算机三级网络技术总结
  7. 指针c语言教学,C语言指针的指针
  8. android软键盘自动弹出,android安卓editText自动弹出软键盘(输入键盘)
  9. C++中实现类似php的UTF8和UrlEncode函数的代码
  10. Android自定义类似ProgressDialog效果的Dialog