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进行存储。
Hygieia分为API、UI、Collector、MongoDB四个部分:
Mongodb作为底层的存储层,存放Collector采集的数据。
Collector通过RESTAPI的方式与众多的工具链进行联系;Collector均采用了java进行开发,通过简单的设定即可启动,当然前提是收集对象也应该是启动的状态。
API作为整个系统的桥梁,接收 Collector采集回来的数据,存入Mongodb中,同时接收UI的请求,从数据库中获取数据返回到UI展示。
UI作为Dashboard供研发人员根据需求进行配置,最终实现devops的流程展现。
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,每个研发人员都能够看到:
团队所开发的User Story,哪些尚未完成,哪些已完成;
哪些代码已经提交,提交的频率是多少,是哪些人提交了代码;
有哪些构建正在进行中,哪些构建失败了,造成失败的原因是什么;
代码的静态代码分析结果,代码的安全扫描结果,单元测试结果以及测试覆盖率,功能性测试用例执行结果;
各运行环境以及代码在这些环境中的部署状态;
通过一个部署管道,展示哪个版本的软件部署在哪个环境中,以及哪些部署失败了。
下图是一个团队级别Dashboard的示例:
Hygieia实践
我们在devops实践中,与Hygieia做了如下几个方面的结合:
1.
Feature
在项目跟踪与敏捷管理上我们团队使用了Atlassian公司出品的JIRA:
根据JIRA的RESTAPI返回的实例信息,合理调整Hygieia提供的JIRA Collector的配置文件
启动Collector,即可采集到Kanban和Scrum上当前的User Story并在Dashboard中展示:
2.
Code
代码仓库我们团队目前使用的是Gerrit,由于Gerrit对于代码入库有强制的代码审核机制,结合Jenkins持续集成平台,在每次入库前都可以进行一次完整的CI流程,能够有效的提升团队的代码品质。
但是遗憾的是,目前Hygieia对于Gerrit不能很好的支持,若是想要使用,则需要自己进行二次开发。同时我们也在尝试使用Gitlab作为代码库进行新项目的开发工作,Gitlab作为一个当前非常流行的开源代码仓库,在用户体验上几乎与Github保持一致,对于研发人员能够很快的上手使用。
在Gitlab上创建一个对项目拥有developer权限的帐号,并将此帐号的API TOKEN写入Hygieia提供的Gitlab Collector的配置文件:
启动Collector,即可采集到项目代码提交的相关信息并在Dashboard中展示:
3.
Quality
代码质量分析平台我们团队采用了时下最流行的SonarQube,用来持续分析和评测项目源代码的质量。通过检测出项目中重复代码,潜在bug,代码风格问题,单元测试等问题,持续提升项目代码质量。
启动Collector,即可采集到项目代码的质量信息并在Dashboard中展示:
4.
Build
我们团队统一采用了Jenkins作为持续集成平台,每次代码的提交,都会形成一次完整流水线的构建,包括新提交代码的获取、代码的编译、代码风格检测、单元测试检查、测试环境部署、功能测试等一系列流程。
在Jenkins上创建一个对所有Job拥有只读权限的帐号,并将此帐号的API TOKEN写入Hygieia提供的Jenkins Collector的配置文件:
启动Collector,即可采集到所有持续集成任务的流程信息并在Dashboard中展示:
5.
Deployment
Hygieia的Collector在开源部署工具方面不提供支持,目前仅有uDeploy和XLDeploy两个商业化产品的支持,而对于当下自动化运维界使用广泛的Ansible和Saltstack均未能提供整合。
为了能够在Hygieia上展现部署流程状态信息,我们使用了Jenkins上的Hygieia插件:
这个插件的原理与Hygieia的Collector主动采集正好相反,在每次Jenkins的部署任务完成后,Jenkins会主动向Hygieia的API模块发起一个RESTAPI请求,将本次部署的应用名称、环境信息、部署程序包、版本等详细信息发送给Hygieia,从而在Dashboard上展示:
通过Jenkins插件的方式实现,相比直接使用Collector,需要对每个部署的Jenkins任务做单独配置,随着团队项目的不断扩张,这方面的工作量也是相当可观的。
目前Hygieia官方也透露后续会尝试对Ansible进行整合支持,相信这将会给持续部署的展示提供更多的便利。
6.
Monitor
相比于专业的监控产品Hygieia提供的功能比较简单,仅是通过HTTP/HTTPS的方式监测网站的可用性,同时无需再为此启动Collector,在页面通过填写URL和名称即可完成监控的配置工作。
但是若希望在Dashboard上看到每次集成后对于软件产品功能、性能等多方面的影响,目前Hygieia还暂时无法满足。
下面是我们团队目前在Hygieia Dashboard上的实际使用效果:
随着我们研发团队的不断发展,我们将进一步完善Dashboard实践,为研发工作提供强有力的保障。
Hygieia总结
通过对Hygieia Dashboard一段时间的使用,下面是我们在使用过程中的一些总结:
1.
优势
Hygieia整合了devops过程中各个环节的研发工具链,将其中最有价值的信息整合到一个Dashboard中,对于提升效率有很大的帮助;
良好的设计,整个产品的架构选用了基于插件的架构,同时Hygieia本身也提供了RESTAPI,可通过远程调用这些API将数据发布至Hygieia中,对于后续扩展开发提供了便利。
2.
不足
对于开源软件的支持不足:代码仓库没有对Gerrit进行支持,部署工具对Ansible或Saltstack均未支持。要想使用到其完整功能需要有商业工具链的支持,成本较高;
未能与监控产品进行整合,在Dashboard上对于环境的监控信息较少;
UI支持的定制化功能不足,无法满足庞大项目多模块展示的定制化需求;
缺少清晰易用的说明介绍和上手资料,对于团队的使用有较大困难。
以上是关于DevOps可视化利器—Hygieia的主要内容,如果未能解决你的问题,请参考以下文章