Agile DevOps: Build a DevOps dashboard

Display real-time information for cross-functional teams

What if you could get instant feedback on the health of your software system with every change applied — not only to the software application, but also to the database, infrastructure, and configuration? In this final Agile DevOps installment, DevOps expert Paul Duvall helps you set up a DevOps dashboard by using the open source CanaryBoard tool. The dashboard reveals the state of the entire software system under development — from check-in to production — at a glance.

Paul Duvall, CTO, Stelligent

Paul DuvallPaul Duvall is the CTO of Stelligent. A featured speaker at many leading software conferences, he has worked in virtually every role on software projects: developer, project manager, architect, and tester. He is the principal author of Continuous Integration: Improving Software Quality and Reducing Risk (Addison-Wesley, 2007) and a 2008 Jolt Award Winner. He is also the author of Startup@Cloud and DevOps in the Cloud LiveLessons (Pearson Education, June 2012). He's contributed to several other books as well. Paul authored the 20-article Automation for the people series on developerWorks. He is passionate about getting high-quality software to users quicker and more often through continuous delivery and the cloud. Read his blog at Stelligent.com.



08 August 2013 (First published 16 July 2013)

About this series

Developers can learn a lot from operations, and operations can learn a lot from developers. This series of articles is dedicated to exploring the practical uses of applying an operations mindset to development, and vice versa — and of considering software products as holistic entities that can be delivered with more agility and frequency than ever before.

So far in this series, you've learned:

And because the organizational aspects of DevOps are just as important as the technical ones, I've also prescribed ways to break down traditional development and operations silos to enhance teamwork and communication.

When your whole software system is described in code and committed to a version-control repository, changes occur frequently, creating a crucial need for accurate real-time feedback for everyone on your team or in your organization. In this last article in the Agile DevOps series, you'll learn how you can tie all of this feedback together and present it in an easy-to-digest form through a DevOps dashboard. All cross-functional team members in your organization can use the dashboard to learn the status of the system under development and in production. They can then make informed decisions that are based on reality — rather than on the perceptions of the more vocal team members.

Introducing CanaryBoard

CanaryBoard is an open source tool that's modeled on the Stashboard open source tool (which is based on tools from large cloud providers). CanaryBoard is intended to provide a log of the status of applications or services by project, but you can customize it to show whatever you choose. And you can run CanaryBoard by using purely open source platforms.

Figure 1 shows a dashboard that I customized to show the status of some DevOps indicators (Environment, Build, Test, and Deploy) for a project. By running scripts when every code check-in occurs, I can update the dashboard automatically to provide a real-time status for each indicator.

Figure 1. DevOps dashboard status using CanaryBoard
Screen capture of a dashboard using the open-source CanaryBoard framework. The dashboard shows four DevOps indicators: Environment, Build, Test. and Deploy. The left-most column provides the most current state of these DevOps indicators.

You can customize your CanaryBoard dashboard to show anything that's important for your team or organization. You can also create multiple dashboards to reflect various levels within your organization. Many other dashboard platforms are available that integrate with other tools that you might already be using; some dashboard platforms are free and open source, and others require monthly fees. As a developer, I like to have full control not only of customization, but also of the platforms that the software can run on. That's why my company created CanaryBoard.


Setting up the DevOps dashboard

Choices, choices

You can run CanaryBoard on virtually any OS, and you can use almost any programming language to modify the data that's pushed to the service through its REST API. This article uses:

  • Ruby to access CanaryBoard's RESTful API
  • Linux to host CanaryBoard
  • The same Linux instance to run the CanaryBoard scripts

Although the examples are specific to this collection of tools, you can slightly alter the instructions to fit the needs of your own infrastructure provider, OS, packaging system, and programming language.

To get the CanaryBoard tool up and running on a Linux® instance, launch and access a compute instance, install the required packages, download and configure files, and run CanaryBoard.

Step 1: Download and launch the server

Download Ubuntu 12.04 LTS server (see Resources for a link to the download page). Then launch your Ubuntu instance.

Step 2: Install packages

ssh into the server and run the commands that are described in the Installing Rails on Ubuntu 12.04 LTS section of the CanaryBoard readme at https://github.com/stelligent/canaryboard/ (see Resources). By running the commands, you'll install all necessary packages, including the Ruby Version Manager (RVM), Ruby, Git, and Rails. (If you're using a packaging system other than apt-get — such as yum or rpm — modify the commands accordingly.)

Now that you've installed all of the packages, you're ready to install, configure, and run CanaryBoard.

Step 3: Install, configure, and run CanaryBoard

CanaryBoard is a Rails application and RESTful API that was developed by Stelligent and that's hosted on GitHub. You need to follow a few simple steps to get the application up and running. The steps include getting the latest copy from the Git repository, installing any Ruby gems that CanaryBoard requires, setting up and seeding the database, running automated tests, and starting the Rails server. You'll find the exact steps to follow in the Installing CanaryBoard section of the CanaryBoard readme (see Resources).

Launch the website for your CanaryBoard application by typing http://localhost:3000 in your browser. (If necessary, change localhost to your server location.) Be sure that port 3000 is available.

You should see an empty status board like the one in Figure 2:

Figure 2. Blank dashboard ready to be configured
Screen capture of an empty dashboard created with the CanaryBoard framework

Click the Log in link to display a login screen similar to Figure 3:

Figure 3. CanaryBoard login screen
Login screen for the CanaryBoard Rails application.

Enter the default username (admin) and default password (admin). After logging in, click the Profile link, then click Edit to change your password to something other than the default.

To run this article's example code, you need to get the API Key that's set as part of the data seeding. Go back to your profile (http://localhost:3000/profile) and copy the API Key value. Figure 4 shows an example of the profile screen with an API Key:

Figure 4. User profile used to get API Key
Screen capture of the CanaryBoard user profile page that displays the API key

Programmatically updating the DevOps dashboard

You'll use two customizable Ruby scripts — set-indicators.rb and update-indicators.rb — to create the dashboard's indicators through the CanaryBoard REST API.

Begin at the Linux server command prompt and create a new Ruby file called set-indicators.rb. Go to the set-indicators.rb file that's available through a hyperlink in the Using CanaryBoard section of the CanaryBoard readme (see Resources), and paste its contents into the set-indicators.rb file that you just created. If you're not running your server on localhost, replace the localhost part of the API_URL variable's value with your server's location. Change the API_KEY value from changeme to the value that you got from the CanaryBoard profile page. You'll run the set-indicators.rb script later.

Versatile scripts

Keep in mind that — with modifications — you can use the CanaryBoard scripts on virtually any other platform that can run Ruby on Rails.

Now, from the Linux server's command line, create a new Ruby file called update-indicators.rb. Go to the update-indicators.rb file that's available through a hyperlink in the Using CanaryBoard section of the CanaryBoard readme (see Resources), and paste its contents into the update-indicators.rb file that you just created. If you're not running your server on localhost, replace the localhost part of the API_URL variable's value with your server's location. Change the API_KEY value from changeme to the value that you got from the CanaryBoard profile page.

Run the Ruby programs by using these commands (which assume that your set-indicators.rb and update-indicators.rb files are in the home directory on your instance):

sudo ruby ~/set-indicators.rb
sudo ruby ~/update-indicators.rb

In your browser, go to https://localhost:3000/ (or equivalent) to see the results of the services and events that you created. When the code in update-indicators.rb runs, it updates all of the events for the services that are listed in the script. By clicking on any indicator in the dashboard, you can see a history of these events. If you want this script to run with every code check-in, you can call it from your Continuous Integration server or run it through cron or another scheduling system. Figure 5 shows example results for the Deploy service:

Figure 5. Event log for the Deploy service indicator
Screen capture of a CanaryBoard page that shows a history of the events logged for the Deploy indicator. Each row contains a date- and time-stamped description of a event that's related to deployment.

The set-indicators.rb and update-indicators.rb scripts are hard-coded for specific services, but you can make all of the code dynamic.


In conclusion

Get involved

The developerWorks Agile transformation community provides news, discussions, and training to help you and your organization build a foundation on agile development principles.

In this article, the last in the Agile DevOps series, you learned how to use the open source CanaryBoard tool to provide continuous feedback to all team members across development and operations. Many system- and application-monitoring tools provide a plethora of rich information that you can incorporate into DevOps dashboards to help engineers and others make more-informed decisions.

It's been a tremendous adventure sharing my experiences with you over the past several months. My goal with this series has been to show how and why to learn the best approaches and practices from teams and cultures that traditionally are completely different: development and operations. I encourage you to view software as holistic, integrated systems — not as something that gets "thrown over the wall" to another team in your organization.

Resources

Learn

Get products and technologies

  • CanaryBoard: CanaryBoard is an open source tool for displaying a software system's status by project/service and date.
  • Ubuntu: Download version 12.04.2 LTS of Ubuntu.
  • IBM Tivoli Provisioning Manager: Tivoli® Provisioning Manager enables a dynamic infrastructure by automating the management of physical servers, virtual servers, software, storage, and networks.
  • IBM Tivoli System Automation for Multiplatforms: Tivoli System Automation for Multiplatforms provides high availability and automation for enterprise-wide applications and IT services.
  • Evaluate IBM products in the way that suits you best: Download a product trial, try a product online, use a product in a cloud environment, or spend a few hours in the SOA Sandbox learning how to implement Service Oriented Architecture efficiently.

Discuss

  • Get involved in the developerWorks community. Connect with other developerWorks users while exploring the developer-driven blogs, forums, groups, and wikis.
  • The developerWorks Agile transformation community provides news, discussions, and training to help you and your organization build a foundation on agile development principles.

Comments

developerWorks: Sign in

Required fields are indicated with an asterisk (*).


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Select information in your profile (name, country/region, and company) is displayed to the public and will accompany any content you post. You may update your IBM account at any time.

All information submitted is secure.

Choose your display name



The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

Required fields are indicated with an asterisk (*).

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


All information submitted is secure.

Dig deeper into Agile transformation on developerWorks


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Agile transformation, Open source
ArticleID=937083
ArticleTitle=Agile DevOps: Build a DevOps dashboard
publish-date=08082013