好久没写博客,今天整理一篇关于发布信息统计入库以及展示、报表等
统计信息包括:微服务数量、发布的项目、版本号、发布人、发布状态、发布次数等,发布信息放入mysql,灾备集群发布直接获取mysql信息(灾备一键发布下次再分享)

先上图

Jenkins用于统计构建数据的插件 jenkins统计发布次数_插入数据


Jenkins用于统计构建数据的插件 jenkins统计发布次数_数据库_02


Jenkins用于统计构建数据的插件 jenkins统计发布次数_插入数据_03


Jenkins用于统计构建数据的插件 jenkins统计发布次数_数据库_04


接下来讲下发布信息获取以及如何入库

一:首先设计表结构,即都有哪些属性需要统计展示的

例如我这里统计发布namespaces、服务名、用户、版本、发布状态、发布类型等,然后表结构设计完之后就是实现了,这里重点讲下

1.1、发布之后需要统计发布状态,就需要等待发布结果,我们使用helm发布,状态信息获取是通过kubectl rollout status获取的 需要加个 --watch=false ,不加的话io会一直等待,我们是循环判断以及设置timeout,还有判断deadline信息,当然简单通过这一结果判断明显有些差强人意,我还加了kubectl get deployment 相关统计目标 当前 更新数量是否一致 来增加判断正确性。相关命令如下:

kubectl rollout status deployment deployment_name -n group --watch=false
kubectl get deployment -n group deployment_name |awk ‘$1 ~ /deployment_name/ {print $0}’|awk '{if ($2==$3 && $3==$4 && $5==$4) {print ‘0’} else {print ‘1’}}

1.2、发布时候还需要统计 发布人,获取当前build_user_id即可

1.3、版本号肯定是发布时候选择的。。其他属性就不一一说明了

1.4、发布、入库。我是通过python把相关信息获取之后传入参数的形式放入数据库的,部分代码如下:(简化版)

Jenkins用于统计构建数据的插件 jenkins统计发布次数_Jenkins用于统计构建数据的插件_05


#根据deployment_name获取type类型,我们一般类型是开头字段所以取第一段,其他也有判断(比如是否只有一段)

Jenkins用于统计构建数据的插件 jenkins统计发布次数_插入数据_06


循环验证结果:status成功就为0,失败1,插入数据库为int类型(方便统计状态信息)

最后放入元组中:value = (group, service, version, user, status, now_time, type),如果你有其他属性需要插入,就需要放在一起传给数据库

1.5、插入数据

我们需要写一个插入数据库的方法,当我们获取到value之后,直接执行该插入方法即可

例如:

get_insert_sql(value)

数据库插入过程异常以及错误还是需要处理的,这些都交给get_insert_sql方法去处理,最后插入成功关闭操作、库连接。

接下来就是统计展示了

1.6、grafana展示我们统计数据(就如上面刚开始图片一样)

首先我们需要把数据源加上,之后就开始我们展示了

发布失败次数:(就是统计status=1的总数)

Jenkins用于统计构建数据的插件 jenkins统计发布次数_数据库_07


发布总次数就是id的总数

服务发布统计报表都是通过sql语句生成的,这样发布情况一览无余。

就讲到这里吧。。。

下篇讲讲如何一键发布灾备环境(前提是你所有发布相关的参数已经放到了数据库下)