Cloud content management leader, Box, recently open sourced its automation tooling for Wavefront. The goal is to further assist the larger Wavefront user community to manage large numbers of alerts and dashboards monitoring cloud software systems. The tooling was specifically developed by SREs and platform engineers at Box to help simplify and automate aspects of their job as they support their Wavefront implementation across more than 400 Box engineers and rates exceeding 800K metric points per second collected and analyzed (or if you think in points per minute, that’s over 48M metrics!).
The tooling is based on wavectl, a command line client to Wavefront inspired by kubectl and git command line tools. It provides a number of valuable use cases not only for the power user/engineer supporting Wavefront self-service metrics across the organization but also developers and DevOps engineers needing custom alerts and dashboards for their particular sub-system of interest. More on these use cases later in the post.
Command line interface (CLI) tools continue to be highly useful for engineers. Knowing CLI commands and using quality CLI tools can make you more productive and can also inspire several new approaches to automation that are far more practical with textual interfaces than with GUI apps.
You can certainly get better at doing repetitive tasks in a GUI, even to the level where your multiple mouse clicks sound like a single long one. Still, that won’t beat the efficiency of a specialized script. Moreover, performing the same operations manually introduces both added cognitive load and increased chances of human error. Given this, we want to rely on automation using machines to handle tasks humans may find boring, repetitive, or overwhelming.
Box developed wavectl as their use of Wavefront alerts and dashboards soared with their business growth and production complexity. And wow, how Box has grown – it recently announced that it’s now supporting close to 60 million users. It was just three years ago that Box realized its home grown, metric monitoring tool wasn’t scaling with its growth, and decisively replaced it with Wavefront’s self-service platform for metrics collection, analytics, and visualization.
“It’s really exciting to empower so many people from a myriad of industries and help them work more efficiently. The workload of our software systems increases similarly to our users,” explained Hakan Baba, Sr. Software Engineer at Box, and part of the tooling team supporting Wavefront for its developers. “In order to provide a high performing and highly available experience to our users, our real-time monitoring, alerting and analytics capabilities have been expanding. Along the way, our friends in Wavefront have been a great partner to us.”
Aligned with its ongoing expansion in microservices architecture, Box has started to run 100s of microservices. Versatility in micro-services also results in a large complexity in monitoring needs. Distinct services will have different monitoring and alerting requirements. Each meta-team owning a set of microservices may have different best practices for their alerts and dashboards. Their pervasive usage and variations in services resulted in 1000s of alerts and dashboards in Wavefront. Box SREs and platform engineers, in particular, became power users of Wavefront and experienced several advanced use cases.
Wavefront has a powerful GUI. But with 1000s of alerts and dashboards in use, Box engineers sought additional ways to automate easily for all of Box’s use cases. So they built wavectl, a command line client to Wavefront. wavectl builds on the Wavefront API and it doesn’t attempt to replace the functionality of the Wavefront GUI. Instead, wavectl complements the GUI in certain use cases. Box has written several guides showing the advantages of wavectl. Here is a selection of them:
- Build a git-grep’able history for your alerts, dashboards
- Repetitive editing of alerts, dashboards
- Using regular expressions for search
- Easily jump to Wavefront GUI from command line
- Use your favorite text processing command line tools on alerts and dashboards
Specifically, wavectl uses the Wavefront v2 API, the most comprehensive API available in a metric monitoring platform. Wavefront is fully API driven. This means that all interactions between the Wavefront UI and your Wavefront instance occur through the Wavefront API. The API is publicly documented in the Swagger generated API documentation. Swagger can also automatically generate code via its Codegen project. You can find some code samples on the VMware code website. In total, with the Wavefront v2 API, you can achieve ‘monitoring as code’.
There is an alternative CLI tool that you can also look at, open sourced by another Wavefront customer. This one mirrors the Wavefront web API more closely. As for wavectl, it evolved from the use cases that Box’s SREs and platform engineers saw. They designed it to add automation and command line access to Wavefront data that’s human generated, initial examples are alerts and dashboards. Note that Wavefront also provides a CLI utility, but it focuses on installing and configuring the Wavefront proxy, collector agent, and integrations.
So in closing, we’re calling all software engineers who are metric power users – wannabe power users invited too! We hope that you give wavectl a try. Plus, let the Box team know whether it has helped you or you want to suggest an enhancement.
Likewise, if you’re starting to see scaling and performance issues with your current metrics monitoring tool, take Wavefront for a test drive and start your free Wavefront trial now. See for yourself the tool that cloud leaders like Box use to run their production operations smoothly.
Get Started with Wavefront Follow @WavefrontHQ