Hygieia is an open source project that enables the user to visualise the entire delivery pipeline. It adds support for multiple teams and a corresponding consolidated view into a program-level dashboard. Hygieia integrates widgets from story tracking, the repository, build, quality, etc, which enables easy access to important DevOps metrics.
Hygieia is an open source project (released under the Apache 2 licence), which provides a single, configurable, easy-to-use dashboard for visualising the status of the entire delivery pipeline in near real-time. It provides two other self-contained dashboards — one for the DevOps engineer to track the current status of Continuous Integration Continuous Delivery(CICD) and the other for executives, to monitor the health of code commits, the deployment process and final production.
Hygieia can give complex insights into the following areas.
DevOps maturity: It offers fully automated CICD tracking of high quality and with good pipeline speed.
Risk management and investing: It connects operational metrics to developmental metrics, offering a full understanding of where to invest in order to improve processes that reduce unnecessary risks, considering the future.
Ongoing enhancements for Agile environments: It quantifies DevOps metrics to track and improve DevOps maturity.
Establishes and raises standards: It sets and achieves a profile for maturity metrics and products. When products dip below the bar, it triggers an alert notification. In addition, this bar goes up incrementally to ensure that all products undergo simultaneous improvements.
Table 1 presents an overview of Hygieia’s architecture.
Setting it up
Let us look at how to install and use Hygieia. I am using Ubuntu 18.04 64-bit.
The prerequisites are given below.
1. Git, required for getting the latest copy of Hygieia. To install it, run the following command:
$sudo apt-get install git
2. Java, the backend of the Hygieia application (1.8 recommended). Download Java from Oracle. Extract it in /opt. Add $JAVA_HOME and $JRE_HOME to /etc/profile.
Add newly downloaded java and javac in System $sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_211/bin/java 1 $sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_211/bin/javac 1 Select oracle-java as default one $sudo update-alternatives --config java $sudo update-alternatives --config javac Check java versions $ java -version java version “1.8.0_211” Java(TM) SE Runtime Environment (build 1.8.0_211-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode) $ javac -version javac 1.8.0_211
3. Maven (3.3.6 or above recommended). To install it, run the following command:
$sudo apt-get install mvn
$apt-get install npm
Hygieia has two components — Hygieia-core and Hygieia. First, you have to create a Hygieia user.
Then download the latest Hygieia-core and Hygieia. (Git clone: https://github.com/Hygieia/hygieia-core.git; Git clone: https://github.com/Hygieia/hygieia.git)
Then move to Hygieia-core and run the following command:
mvn clean install package
This takes a few minutes to complete.
After that, move to the Hygieia directory and run the following command:
mvn clean install package
This takes 20-30 minutes to complete.
The Web application server of the UI will need Gulp and Bower. Gulp is a tool that helps you out with several tasks when it comes to Web development. It’s often used to do frontend tasks like:
- Spinning up a Web server
- Reloading the browser automatically whenever a file is saved
- Using preprocessors like Sass or LESS
$sudo npm install -g bower $sudo npm install -g gulp
Go to the Hygieia/UI directory and run the following command:
$ gulp serve
Press Ctrl+C to stop the server.
MongoDB is used here as a backend of Hygieia.
$sudo apt-get install mongodb
Details of the MongoDB configurations are written in hygieia/db/db-setup.js. Go to that directory, i.e., hygieia/db and run the following command:
$mongo < db-setup.js
Running the Hygieia API
Go to the hygieia/api directory and run the following command:
Create an api.properties file in the hygieia/api directory. You can get the file from https://hygieia.github.io/Hygieia/api.html#api-properties-file.
A sample of a minimal working api.properties file is given below:
dbname=dashboarddb dbusername=dashboarduser dbpassword=dbpassword dbhost=localhost dbport=27017 server.port=8080 logRequest=false logSplunkRequest=false corsEnabled=false version.number=0.0.1 pageSize=10 key=[api token] ##End of file
You can add LDAP as a user backend. Here I have used a standard login.
After that, to run the API service, execute the following command (assuming you are in the hygieia/api directory):
$java -jar target/api.jar --spring.config.location=/home/hygieia/hygieia/api/api.properties -Djasypt.encryptor.password=hygieiasecret
The Hygieia dashboard
There are two separate dashboards in Hygieia — the team dashboard, and the product dashboard. You can log in to the dashboard by going to the following URL in the browser: localhost:3000/#/login or <IP_ADDRESS>:3000/#/login
If you log in for the first time, you have to create a user account by clicking Sign up and entering your user name and password.
Now you can create either the team or the product dashboard. If you want to create the team dashboard, you can use widgets or some predefined templates.
Once you create a dashboard, you can configure it from the home screen. You can add whatever it is about your product that you want to track, as shown in Figure 6.
Next, you have to select your specific application and configure the widgets, as shown in Figure 7.
Hygieia’s dashboards enable users to view CICD pipelines in near real-time. You can add the source code repository, chat server, build server, deployment server, cloud monitoring features and a lot more.
The dashboards also provide crucial information about the overall vitality and performance metrics of your software operations.
The author is a senior technical officer at ICT & Services, CDAC, Kolkata. He has over ten years of industry experience, and his areas of interest include Linux system administration, mobile forensics and Big Data. He can be reached at firstname.lastname@example.org.