• Grafana+InfluxDB可视化展示Jenkins构建信息


    InfluxDB

    Docker version: 19.03.8

    运行容器实例:

    docker run -d 
    --rm 
    --name influxdb 
    -p 8086:8086 
    -v /opt/docker/influxdb:/var/lib/influxdb  
    --hostname=influxdb 
    influxdb:1.8.0
    

    这里不需要再额外为influx开放8083端口,因为InfluxDB 1.3以及之后的版本,已经取消了自带的web管理页面了,取而代之的是使用Chronograf。启动Chronograf容器实例:

    这里选择是否创建Chronograf并不会影响后续的操作;

    docker run -d 
    -p 8888:8888 
    --name chronograf 
    -v /opt/docker/chronograf:/var/lib/chronograf 
    chronograf:1.8
    

    Chronograf 容器启动后,访问:IP:8888,进入控制台页面。

    image-20200818231244453 除了使用Chronograf,若要在本地连接InfluxDB数据库,还可以下载使用 InfluxDB Studio.

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

    docker exec -it influxdb bash
    cd /usr/bin
    find | grep influx
    ./influx_stress
    ./influx_inspect
    ./influx
    ./influxd
    ./influx_tsm
    
    # 查看版本
    ./influx -version
    InfluxDB shell version: 1.8.0
    
    # 进入Influxdb客户端命令行
    ./influx
    
    # 创建数据库用户root,并设置密码
    CREATE USER "root" WITH PASSWORD "123456" WITH ALL PRIVILEGES
    
    # 创建jenkins数据库
    `CREATE DATABASE  jenkins
    


    Jenkins

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

    img

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

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

    image-20200818230625743

    image-20200818225624425

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

    image-20200818230655486

    Grafana

    我是之前在k8s的一套测试环境安装的kube-promethus,直接拿过来用

    image-20200818230852073


    配置Grafana 数据源

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

    image-20200818230929951

    Jenkins Dashboard

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

    image-20200818231725624

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

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

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

    image-20200818231807182

    下面就直接参考别人的博客了https://www.jianshu.com/p/06b0da4737fd,grafana没有系统的学一下,配置有点一头雾水

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

    image-20200818231826154

    后续配置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
    

    成功的图:

    image-20200818231340939

  • 相关阅读:
    Spark 内核架构+宽依赖与窄依赖+基于Yarn的两种提交模式
    Spark RDD高级编程:基于排序机制的wordcount程序+二次排序+topn
    Spark RDD持久化原理+共享变量原理(Broadcast Variable和Accumulator)
    Spark RDD工作原理详解+RDD JAVA API编程
    Spark 程序设计详解
    剑指offer 39.知识迁移能力 平衡二叉树
    剑指offer 38.知识迁移能力 二叉树的深度
    ElasticSearch 倒排索引原理+document写入流程+数据恢复
    剑指offer 37.知识迁移能力 数字在排序数组中出现的次数
    剑指offer 36.时间空间效率的平衡 两个链表的第一个公共结点
  • 原文地址:https://www.cnblogs.com/dalianpai/p/13526765.html
Copyright © 2020-2023  润新知