Building a better UI for Sensu

The Sensu OSS project has been a tremendous success, thanks, in no small part, to the thriving community that’s grown up around it. Sensu started as a monitoring framework designed for managing the elastic nature of cloud infrastructure at a small startup with a few hundred AWS EC2 instances. Since then, Sensu has grown to become a mission-critical platform that is used by over 1500 companies with hundreds of thousands of nodes in production. In fact, Sensu is on track to reach the incredible milestone of “1M nodes under management” sometime in the next 6-12 months!

Although it has taken various different forms over the past few years, the Sensu project has been committed to open source from day one. At some point along the way we adopted an open core business model, which has helped us continue to invest in the OSS project even as we have built a commercial product offering on top of that core engine. Most recently we made the decision to modify our distribution model so that 100% of Sensu Go’s commercial features are now free up to your first 100 nodes. This has had a pretty huge impact on Sensu adoption, simplifying the process of choosing which version of Sensu you should use when you’re initially evaluating the platform – we’re now seeing that almost 100% of Sensu installations with 100 nodes or fewer under management are running the commercial distribution.

While this has been great for users, it has complicated our OSS development process to a certain degree – primarily with respect to the Sensu Go web UI. Trying to maintain a common code base between OSS and the commercial version of the UI which leverages the commercial features of the Sensu backend has introduced some complexity that has slowed frontend product development.

This friction combined with the success of our commercial distribution strategy (i.e., FREE Sensu for everyone!) has prompted us to make the decision to split the OSS web UI off as a separate project. Moving forward, new web UI features will be implemented in the commercial distribution first and continue to be made available for free up to your first 100 nodes. This is not the first time we’ve made such a move; as part of our consideration, we reflected on Sensu’s journey and noted that we took a similar step in the original project:

The big change to the @sensuapp packaging for 0.13.0 is the removal of Sensu Dashboard. Independent releases & competition. #monitoringlove

— eh 🍁 on the wind. (@portertech) July 23, 2014

How does this help Sensu users?

Great question! Behind the scenes this will help us get new features and other improvements into your hands much faster. For example, one of the most exciting features that is coming soon is a new “Sensu Catalog Browser” that will let users enable monitors and integrations directly from the commercial web UI. Sensu Catalogs are inspired by marketplace interfaces like the app store on your phone, or the integration directories in many enterprise software products like Slack’s “App Directory”, or the Grafana Plugin UI.

We’ll have more to share about Sensu Catalogs in the coming weeks, but we can’t wait to see what you do with them!

The nitty-gritty

What does this mean for OSS users? In a future release, the OSS web UI will be removed from the Sensu OSS project and made available as a standalone project at https://github.com/sensu/web. OSS users can continue to use the OSS UI, but it will need to be run as a separate process from the Sensu Go backend. Sensu will continue to maintain a subset of the features that are available in the OSS UI, but some features may be flagged as “deprecated” and if/when they become incompatible with future releases we may remove them rather than fix bugs. Conversely, we may also port certain features from the commercial distribution UI to the OSS UI to keep things consistent. Please visit the sensu/web README for more information.

Join the discussion! Let us know what you think about these changes and/or the Sensu web UI in general by commenting here, or sharing your feedback as a GitHub issue.