当前位置: 首页 > 工具软件 > Hygieia > 使用案例 >

Hygieia预研

弓华茂
2023-12-01

由于收集材料时没有具体记录文件来源,参考文献栏暂时为空。若有人知道来源,请在评论区与我联系,我会将来源备注于此,谢谢。而且若要转载,请务必注明转载地址。在公司实习的时候图片一直上传失败,实习结束后,图片就找不到了,所以图片可能就无法上传了。
一、 开发背景
为了提升软件产品的研发效率,越来越多的团队选择使用敏捷开发模式,借助各类研发工具链工具,实现合理高效的管理整个研发流程。然而随着项目的规模不断扩大,在研发流程的各个阶段都有可能出现风险阻碍研发进度,为了保障项目进度的顺利推进,一个全面展示研发流程信息的平台迫在眉睫。
二、 预研目标
本次预研的目标是全面研究Hygieia软件。
三、 Hygieia
(一) 软件简介
Hygieia 是 CapitalOne 公司内部孵化的一个项目,目的是解决 DevOps 工具链中的数据碎片化的问题,Hygieia 为不同的工具提供了收集数据的 Collector,将数据存储在 MongoDB 里,然后进行数据可视化的展示。可视化地提供交付流水线全过程的有效反馈。Hygieia有两种完备的仪表盘来可视化CI/CD流水线信息,这两种仪表盘分别为工程师和执行者设计。官网地址:http://capitalone.github.io/Hygieia/getting_started.html
(二) 功能介绍

  1. 支持的接口平台
  1. Build Collectors(构建管理)
    a) Bamboo
    b) Jenkins
    c) Jenkins-codequality
    d) Jenkins Cucumber
    e) Sonar
  2. Cloud Collectors(云管理)
    f) AWS
  3. Deploy Collectors(部署管理)
    g) uDeploy
    h) XLDeploy
  4. Feature Collectors(项目需求管理展示)
    i) Jira
    j) VersionOne
    k) Gitlab
    l) Rally
  5. Miscellaneous Collectors
    m) Chat Ops
    n) Score
  6. SCM Collectors(配置管理)
    o) Bitbucket
    p) GitHub
    q) Gitlab
    r) Subversion
    s) GitHub GraphQL
  7. Performance Collector(性能管理)
    t) AppDynamics
  8. Configuration Management Database (CMDB)
    u) HP Service Manager (HPSM)
  9. Library Policy
    v) Nexus IQ
  10. Artifact Repository
    w) Artifactory
  1. 功能
  1. 工程师仪表盘
    分为团队仪表盘和产品仪表盘。
    选择仪表盘类型界面如图 1所示。

图 1
A. 团队仪表盘
组件视图
展现产品细节信息,包括当前Sprint中的Feature、代码提交情况、持续集成活动,代码分析、安全分析、单元测试、功能测试结果、部署和环境状态等。可以管理配置CI/CD流水线中的多种DevOps工具。可以选择显示哪些部件的信息,如图 2。可打分来促进组织内良性竞争,如图 3。

图 2

图 3
流水线视图
如图 4,展现每个组件从开发到测试,再到部署的整个生命周期过程,如提交编号和提交日期,还可以设置具体有哪些环节和环节名称。

图 4
云视图:展现应用实例、资源占用率等信息。
云 – 总览视图:
将所给云账号的信息可视化。功能如图 5所示。

图 5
云-细节视图:
显示所给账号的如图 6所示信息。

图 6
B. 产品仪表盘
展现每个配置的产品的从开发到部署的整个生命周期过程。如图 7。

图 7
提交级:
• 绿盒子代表了不超过两个标准偏差(standard deviations)的提交
• 红盒子代表超过了两个标准偏差的提交次数

• 图 8
构建级:

图 9
每一级的具体提交信息:

图 10
部署级:

图 11
产品级:

图 12
流水线健康度详细信息:

图 13

  1. 执行者仪表盘
    A. Selecting a Portfolio界面:可看自己和下属执行部门的人的资料:姓名,职位,部门。如图 14。

图 14
B. Portfolio界面:显示文件主人的所有测试结果以及文件主人的所有产品的事件。如图 15。

图 15
界面详细讲解如下。

图 16
组件信息 描述
指标(Metric)名 当前文件的状态
指标值 根据portfolio里所有信息
What’s this? 点击这里去看指标的简短定义
指标分解 在portfolio层次组成指标真的不同的成分
详情 点击此按钮去看Portfolio指标界面,
产品 点击此按钮去看Products界面
时间戳下的趋势暗示 90天内的指标变化趋势
表 1
向上红箭头 – 在过去90天里开源违规或产品问题恶性增长
向上绿箭头 – 通过最新执行的自动化测试百分比良性增长
向下红箭头 – 相关产品组件的产品发布数量恶性下降
向下绿箭头 – 代码问题良性下降
无状态 – 没有足够数据
指标详细内容如下
内容 定义
Blocker 重要程度被标记为blocker的发生时间的组件数量
Components Reporting 数据成功收集的组件百分比
Technical Debt 用来解决现有问题的时间。如果按天显示则默认一天花费8小时
Open Incidents 开放状态下产品问题的总数
Mean Time to Resolve 问题发现到解决所经过的时间
表 2
C. 产品界面
a) 事件发生次数的总数显示
b) 不同组件的分值还有当前状态的解释
c) Portfolio里的所有产品列表还有指标的趋势预测
d) 点击Details可以跳到组件详情界面
e) 点击Change Metric来看其他指标的详情

图 17
另一种产品界面,可以通过调节配置显示。

图 18
D. 产品详情界面
一个执行者所管理的全部应用都被显示在这个界面。
a) Portfolio下的所有产品列表
b) 每一个产品的各种指标值和相应趋势
c) 用于计算指标的组件数据百分比
d) 点击Details可查看Components界面
e) 点击Change Portfolio查看其它执行者的Portfolio

图 19
E. 组件详情界面
显示了一个产品的组件信息。
f) 事件发生次数的图形化显示
g) 产品中所有组件的重要级,重要级主要有block, critical, major
h) 产品的所有组件列表

图 20
(三) 工程架构

  1. 架构图
  1. 工程师仪表盘
    架构如下图 1所示,具体每层功能如表 1所示

图 21
层次名称 描述
UI层 作为Dashboard供研发人员根据需求进行配置,最终实现devops的流程展现。
API层 包含Hygieia API和审计API。Hygieia API包含所有典型的Rest API服务。作为整个系统的桥梁,接收 Collector采集回来的数据,存入Mongodb中,同时接收UI的请求,从数据库中获取数据返回到UI展示。审计API是服务于审计CI/CD数据的API终端集合。
DevOps工具 Jira, Git, Sonar等工具。
收集者层 通过RESTAPI的方式与众多的工具链进行联系;Collector均采用了java进行开发,通过简单的设定即可启动,当然前提是收集对象也应该是启动的状态。
数据库层 作为底层的存储层,存放Collector采集的数据。
表 3
2) 执行者仪表盘
架构如下图 2所示,具体每层功能如表 2所示

图 22
组件 描述
数据库层 读写数据库
收集者层 包含文件和指标收集器,每一个收集者都从读数据库获取数据,生成指标,并将这些指标写入写数据库。
API层 提供了在UI上显示指标的接口。
UI层 用户从该层看到仪表盘。不能配置仪表盘信息。
表 4
2. 编码方式
使用的语言有java、JavaScript与html,开源,源代码网址:https://github.com/capitalone/Hygieia
(四) 环境配置
前提是已经有,java 、maven、node、mongoDB的环境了,这些环境的搭建不在本篇范围内

  1. 启动api模块
  1. 项目下载下来后,先mvn install root模块,有些查询对象使用了maven插件编译生成的,所以必须先编译
  2. 在Hygieia\api\src\main\resources\application.properties中配置你的mongDB连接信息,基本不用动了,server.port先别改,默认使用8080
  3. 运行Hygieia\api\src\main\java\com\capitalone\dashboard\Application.java中的main方法启动服务
  1. 启动UI模块
    进入Hygieia\UI目录下,
  1. 执行 npm install ,bower install ,这个过程会比较长
  2. 待所有依赖都下载完成后,执行gulp serve启动UI模块,默认端口:3000
  3. UI模块不配置访问api接口地址,默认范围本地8080端口,所以刚刚的api模块不建议改端口,当然也可以在gulpfile.js的config中配置
    以上步骤没有问题的话,浏览器会跳出http://localhost:3000/#/,界面如图 1,代表已经成功了
    图 23
  1. 启动插件模块
    以scm插件gitlib为例,Hygieia支持的插件很多
  1. 至Hygieia\collectors\scm\gitlab\src\main\resources 目录下新增文件application.properties,配置内容如下
    gitlab.host=git.yudianbank.com gitlab.port=80 gitlab.cron=0/10 * * * * ? #多久同步一次gitlib数据
    gitlab.protocol=http gitlab.apiVersion=3 gitlab.firstRunHistoryDays=200
    注意gitlab.apiVersion版本的差异,gitlib api的接口会不一样
  2. 运行Hygieia\collectors\scm\gitlab\src\main\java\com\capitalone\dashboard\Application.java中的mian方法启动服务
  1. 测试gitlib插件
    按如下图 2图 3图 4图 5操作,最后可看到软件提交的生命周期

图 24

图 25

图 26

图 27
(五) 开发所需人力与资源
(以下人日按照每天工作8小时估算)

  1. 编写软件使用说明文档:5人日
    (六) 优势与不足
  2. 优势
  1. Hygieia整合了devops过程中各个环节的研发工具链,将其中最有价值的信息整合到一个Dashboard中,对于提升效率有很大的帮助。
  2. 良好的设计,整个产品的架构选用了基于插件的架构,同时Hygieia本身也提供了RESTAPI,可通过远程调用这些API将数据发布至Hygieia中,对于后续扩展开发提供了便利。
  3. 开源软件。
  4. 不需要专门维护。
  5. 功能齐全,界面简洁大气。
  6. 对数据的分析更透彻,图表清晰。
  1. 不足
  1. 只能显示数据分析数据,不能真正深入到各个jenkins等接口软件中去执行动作。
  2. 若希望在Dashboard上看到每次集成后对于软件产品功能、性能等多方面的影响,目前Hygieia还暂时无法满足。
  3. 缺少清晰易用的说明介绍和上手资料,对于团队的使用有较大困难。
  4. 英文显示,对英语要求高。
 类似资料: