使用Docker+Grafana+InfluxDB可视化展示Jenkins构建信息
环境搭建完成后,最终展示效果如下图所示:
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构建信息相关推荐
- 内网监控群晖918+(docker telegraf influxdb grafana)
1 环境准备 #内网快速部署监控,监控总的分为三步:数据采集(telegraf).数据存储(influxdb).可视化(grafana),当然这套也是用在生产上面,当然要视实际情况而定,这里讲的是内网 ...
- InfluxDB SpringBoot Docker Grafana实战监控数据统计
一.InfluxDB是什么? 二.与Java交互中有哪些对象? 三.Docker安装Influxdb 四.SpringBoot + InfluxDB 实战监控数据统计 五.实际监控 一.InfluxD ...
- JMeter+InfluxDB+Grafana实现可视化实时监控
本文我们将介绍如何使用JMeter+InfluxDB+Grafana打造可视化实时监控. 目录 一.简介 概述 简单介绍实现原理 二.indluxdb安装和部署 1.indluxdb下载 2.修改in ...
- Node_exporter+Prometheus+Grafana 快速实现Linux系统性能数据提取、存储和可视化展示
Node_exporter+Prometheus+Grafana 快速实现Linux系统性能数据提取.存储和可视化展示 1. 前言 2. Node_exporter 2.1 安装 node_expor ...
- Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目
Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目 前文使用Docker搭建Jenkins+Docker持续集成环境我们已经搭建了基于docker+ ...
- grafana+influxdb数据可视化
日常我们会有一些记录历史性能数据并进行分析观察的需求,一般简单地做法是通过日志记录下数据,然后整个文档(高级一点存到db里),后面自己通过工具来维护查看. 这里我们就来看一看如何通过grafana+i ...
- docker+jenkins构建vue项目
目录 1.安装docker 2.安装Docker Compose 3.配置docker-compose.yml 4.通过 Compose 创建 jenkins 5.配置 jenkins 6.手动备份J ...
- 3.Prometheus + Grafana实现可视化、告警
3.Prometheus + Grafana实现可视化.告警 3.1.什么是Grafana 3.2.快速入门 3.3.Grafana的下载 3.4.启动grafana 3.5.配置数据源 3.6.配置 ...
- ubuntu上 grafana + influxdb + telegraf 安装配置
apt安装 Grafana 一个纯粹的HTML/JS应用,其功能非常强大,访问InfluxDB时不会有跨域访问的限制.只要配置好数据源为InfluxDB之后就可以,剩下的工作就是配置图表. Influ ...
最新文章
- IDEA下使用Jetty进行Debug模式调试【含演示GIF图】
- 探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法
- 什么是iu组装服务器,超频三全新款 IU服务器散热器全新登场
- web页面锁屏初级尝试
- CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系...
- @Transactional和@Async 使用场景
- redis单节点安装
- Sublime Text 文件乱码
- 设计模式7大结构型模式
- 【转】Prewitt 算子
- RMQ_第一弹_Sparse Table
- Linux如何创建makefile文件,如何在Linux上为gcc创建简单的makefile?
- GAN(生成对抗网络)有一本实战书出版了,了解下?
- Dezender下载及使用说明
- ENVI5.3处理高分五号影像数据
- 萌言萌语|测试工作日报及总结
- 工具 | Cmder 自定义 aliases 命令
- html5程序阅读题,20 个重要的 HTML5 面试题及答案
- 公司企业邮箱怎么登录?这些安全登录邮箱的方法你要知道
- JsonParseException: Unexpected character (‘sss‘ (code xxx)): was expecting a colon to separ
热门文章
- 973. 最接近原点的 K 个点
- java 绘图 打印_java调用本地打印机,绘制打印模板,小票模板
- c语言人事管理系统,c语言人事管理系统
- centos php编译,深入讲解CentOS PHP安装编译
- linux ls 参数列表过长,ls提示参数列表过长解决办法
- 计算机三级网络技术总结,计算机三级网络技术总结
- 指针c语言教学,C语言指针的指针
- android软键盘自动弹出,android安卓editText自动弹出软键盘(输入键盘)
- C++中实现类似php的UTF8和UrlEncode函数的代码
- Android自定义类似ProgressDialog效果的Dialog