DevOps可视化利器—Hygieia

Posted 苏研IT大学堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DevOps可视化利器—Hygieia相关的知识,希望对你有一定的参考价值。

Hygieia是什么


为了提升软件产品的研发效率,越来越多的团队选择使用敏捷开发模式,借助各类研发工具链工具,实现合理高效的管理整个研发流程。然而随着项目的规模不断扩大,在研发流程的各个阶段都有可能出现风险阻碍研发进度,为了保障项目进度的顺利推进,一个全面展示研发流程信息的平台迫在眉睫。


正是在这样的背景下,由Capital One开源的Hygieia项目应运而生。作为一个旨在构建端到端的DevOps Dashboard,Hygieia支持User Story、代码仓库、构建流程、代码质量检测,以及部署状态的的追踪与展示。Hygieia Dashboard提高了整个流程的透明度,以此帮助研发团队建立反馈循环,而这正是DevOps所需要的。


Hygieia架构


Hygieia使用java和nodejs语言开发,通过maven进行管理,采集的数据统一由mongodb进行存储。

DevOps可视化利器—Hygieia

Hygieia分为API、UI、Collector、MongoDB四个部分:


Mongodb作为底层的存储层,存放Collector采集的数据。


Collector通过RESTAPI的方式与众多的工具链进行联系;Collector均采用了java进行开发,通过简单的设定即可启动,当然前提是收集对象也应该是启动的状态。


API作为整个系统的桥梁,接收 Collector采集回来的数据,存入Mongodb中,同时接收UI的请求,从数据库中获取数据返回到UI展示。


UI作为Dashboard供研发人员根据需求进行配置,最终实现devops的流程展现。

DevOps可视化利器—Hygieia

Hygieia功能


从根本上说Hygieia是一个Dashboard,所以最重要的就是数据从哪来,下面列举了Hygieia目前支持的常用工具链:


1. 

Feature(项目需求管理展示) 

  • Jira

  • Version One

  • Gitlab


2. 

Code(代码仓库展示) 

  • Bitbucket

  • Github

  • Gitlab

  • Subversion


3. 

Build(构建流程展示)

  • Jenkins

  • Bamboo


4. 

Quality(代码质量展示)

  • Sonarube

  • HPE Fortify


5. 

Deployment(部署流程展示)

  • uDeploy

  • xldeploy

  • Jenkins


更多详细的Collector支持,可以参考官方文档:https://github.com/capitalone/Hygieia/blob/gh-pages/pages/hygieia/collectors/collectors.md

通过使用Hygieia Dashboard,每个研发人员都能够看到:


  1. 团队所开发的User Story,哪些尚未完成,哪些已完成;

  2. 哪些代码已经提交,提交的频率是多少,是哪些人提交了代码;

  3. 有哪些构建正在进行中,哪些构建失败了,造成失败的原因是什么;

  4. 代码的静态代码分析结果,代码的安全扫描结果,单元测试结果以及测试覆盖率,功能性测试用例执行结果;

  5. 各运行环境以及代码在这些环境中的部署状态;

  6. 通过一个部署管道,展示哪个版本的软件部署在哪个环境中,以及哪些部署失败了。


下图是一个团队级别Dashboard的示例:

DevOps可视化利器—Hygieia


Hygieia实践


我们在devops实践中,与Hygieia做了如下几个方面的结合:


1. 

Feature

在项目跟踪与敏捷管理上我们团队使用了Atlassian公司出品的JIRA:

DevOps可视化利器—Hygieia

根据JIRA的RESTAPI返回的实例信息,合理调整Hygieia提供的JIRA Collector的配置文件

DevOps可视化利器—Hygieia

启动Collector,即可采集到Kanban和Scrum上当前的User Story并在Dashboard中展示: 

DevOps可视化利器—Hygieia


2. 

Code

代码仓库我们团队目前使用的是Gerrit,由于Gerrit对于代码入库有强制的代码审核机制,结合Jenkins持续集成平台,在每次入库前都可以进行一次完整的CI流程,能够有效的提升团队的代码品质。

DevOps可视化利器—Hygieia

但是遗憾的是,目前Hygieia对于Gerrit不能很好的支持,若是想要使用,则需要自己进行二次开发。同时我们也在尝试使用Gitlab作为代码库进行新项目的开发工作,Gitlab作为一个当前非常流行的开源代码仓库,在用户体验上几乎与Github保持一致,对于研发人员能够很快的上手使用。

DevOps可视化利器—Hygieia

在Gitlab上创建一个对项目拥有developer权限的帐号,并将此帐号的API TOKEN写入Hygieia提供的Gitlab Collector的配置文件:

DevOps可视化利器—Hygieia

启动Collector,即可采集到项目代码提交的相关信息并在Dashboard中展示:

DevOps可视化利器—Hygieia


3. 

Quality

代码质量分析平台我们团队采用了时下最流行的SonarQube,用来持续分析和评测项目源代码的质量。通过检测出项目中重复代码,潜在bug,代码风格问题,单元测试等问题,持续提升项目代码质量。

DevOps可视化利器—Hygieia
DevOps可视化利器—Hygieia

启动Collector,即可采集到项目代码的质量信息并在Dashboard中展示:

DevOps可视化利器—Hygieia


4. 

Build

我们团队统一采用了Jenkins作为持续集成平台,每次代码的提交,都会形成一次完整流水线的构建,包括新提交代码的获取、代码的编译、代码风格检测、单元测试检查、测试环境部署、功能测试等一系列流程。

DevOps可视化利器—Hygieia

在Jenkins上创建一个对所有Job拥有只读权限的帐号,并将此帐号的API TOKEN写入Hygieia提供的Jenkins Collector的配置文件:

DevOps可视化利器—Hygieia

启动Collector,即可采集到所有持续集成任务的流程信息并在Dashboard中展示:

DevOps可视化利器—Hygieia


5. 

Deployment

Hygieia的Collector在开源部署工具方面不提供支持,目前仅有uDeploy和XLDeploy两个商业化产品的支持,而对于当下自动化运维界使用广泛的Ansible和Saltstack均未能提供整合。


为了能够在Hygieia上展现部署流程状态信息,我们使用了Jenkins上的Hygieia插件:

DevOps可视化利器—Hygieia

这个插件的原理与Hygieia的Collector主动采集正好相反,在每次Jenkins的部署任务完成后,Jenkins会主动向Hygieia的API模块发起一个RESTAPI请求,将本次部署的应用名称、环境信息、部署程序包、版本等详细信息发送给Hygieia,从而在Dashboard上展示:

DevOps可视化利器—Hygieia

通过Jenkins插件的方式实现,相比直接使用Collector,需要对每个部署的Jenkins任务做单独配置,随着团队项目的不断扩张,这方面的工作量也是相当可观的。


目前Hygieia官方也透露后续会尝试对Ansible进行整合支持,相信这将会给持续部署的展示提供更多的便利。


6. 

Monitor

相比于专业的监控产品Hygieia提供的功能比较简单,仅是通过HTTP/HTTPS的方式监测网站的可用性,同时无需再为此启动Collector,在页面通过填写URL和名称即可完成监控的配置工作。

DevOps可视化利器—Hygieia

但是若希望在Dashboard上看到每次集成后对于软件产品功能、性能等多方面的影响,目前Hygieia还暂时无法满足。

 

下面是我们团队目前在Hygieia Dashboard上的实际使用效果:

 

随着我们研发团队的不断发展,我们将进一步完善Dashboard实践,为研发工作提供强有力的保障。


Hygieia总结


通过对Hygieia Dashboard一段时间的使用,下面是我们在使用过程中的一些总结:


1. 

优势

  • Hygieia整合了devops过程中各个环节的研发工具链,将其中最有价值的信息整合到一个Dashboard中,对于提升效率有很大的帮助;

  • 良好的设计,整个产品的架构选用了基于插件的架构,同时Hygieia本身也提供了RESTAPI,可通过远程调用这些API将数据发布至Hygieia中,对于后续扩展开发提供了便利。


2. 

不足

  • 对于开源软件的支持不足:代码仓库没有对Gerrit进行支持,部署工具对Ansible或Saltstack均未支持。要想使用到其完整功能需要有商业工具链的支持,成本较高;

  • 未能与监控产品进行整合,在Dashboard上对于环境的监控信息较少;

  • UI支持的定制化功能不足,无法满足庞大项目多模块展示的定制化需求;

  • 缺少清晰易用的说明介绍和上手资料,对于团队的使用有较大困难。




以上是关于DevOps可视化利器—Hygieia的主要内容,如果未能解决你的问题,请参考以下文章

fprobe参数 -e

电子书丨《网络数据可视化与分析利器:Gephi 中文教程(全彩)》

python可视化利器:pyecharts

7.可视化利器TensorBoard

数据可视化利器pyechart和matplotlib比较

fprobe参数 -n -k