在持续交付标准中度量与反馈很重要,通过度量平台能够度量当前项目的交付情况开发效率等。今天给大家分享的内容是关于如何收集Jenkins流水线中的构建数据并进行分析。
本文分为3个部分,可能需要5-9分钟阅读
- 整体的架构与方案
- 技术方案
- K8S中安装部署Influxdb
- 流水线中采集发送数据
- 使用Grafana展示度量数据
1.整体架构及方案简介
整个过程:在Jenkins流水线中通过Pipeline脚本收集当前项目的构建数据(项目构建时间、单元测试结果、项目构建详细信息等指标),然后将数据通过HTTP API 存入Influxdb中,最后Grafana导入我们的数据模板进行展示。
2.在Kubernetes中部署InfluxDB
编写yaml文件Deployment,创建一个持久化存储卷,暴露8086端口。文件已经存储在了Github中 。https://github.com/zeyangli/devops-on-k8s/blob/master/devops/influxdb.yml
---kind: DeploymentapiVersion: apps/v1metadata: labels: k8s-app: influxdb name: influxdb namespace: devopsspec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: k8s-app: influxdb template: metadata: labels: k8s-app: influxdb namespace: devops name: influxdb spec: containers: - name: influxdb image: influxdb:1.7.9 imagePullPolicy: IfNotPresent ports: - containerPort: 8086 name: web2 protocol: TCP resources: limits: cpu: 1000m memory: 2Gi requests: cpu: 500m memory: 512Mi volumeMounts: - name: dbhome mountPath: /var/lib/influxdb volumes: - name: dbhome hostPath: path: /data/devops/influxdb/ type: Directory---apiVersion: v1kind: Servicemetadata: name: influxdb namespace: devops labels: k8s-app: influxdbspec: selector: k8s-app: influxdb type: NodePort ports: - name: web port: 8086 targetPort: 8086 nodePort: 30086
3.Jenkins Pipeline采集数据
使用influxdb Http API,写入数据。
4.导入Grafana模板展示数据
在grafana官方找到了一个不错的模板 id为10557, 根据这个模板最终找到了作者发现是用于Github + Jenkins stage plugin使用的。具体没有深入研究,我是直接将此模板导入然后根据自己当前influxdb中的数据结构更改Select语句。最终实现相同的效果。
官方的图如下
最终我模仿的如下,主要是修改了SQL语句。