The CTO of OpenNMS, Jesse White, joined us at our ScyllaDB Summit last year to talk about the OpenNMS platform and specifically Newts, a time-series database embedded within the platform that relies on ScyllaDB as a high-performance, scalable storage engine.
OpenNMS is an open source, enterprise-grade platform for building network monitoring solutions. It helps IT teams keep an eye on the routers, switches, servers, and software applications that make up modern networks. Designed to scale from day one, OpenNMS is a complete platform that encompasses multiple applications, SQL and NoSQL databases, as well as various vendor integrations. OpenNMS ships under the AGPL v2.0 license.
Jesse’s path to ScyllaDB began when he started using OpenNMS in 2012, became a contributor, and then joined the OpenNMS group in 2014. Beginning work on Newts, Jesse had his first run-in with Cassandra. He thereafter encountered ScyllaDB in 2017. Just a year later he was presenting the ScyllaDB-based solution at ScyllaDB Summit in 2018.
“OpenNMS has to scale since it ingests events from a huge variety of sources,” Jesse explained. “It supports poll-based approaches to collecting metrics via JMX JDBC, SNMP. It also supports streaming telemetry, where devices stream metrics to the platform. For example, OpenNMS parses syslog messages, transforms them into faults when needed, and issues alerts and notifications, as well as reporting on SLA violations.”
“Using ScyllaDB, we were able to get almost double the results that we saw with Cassandra.”
-Jesse White, CTO of OpenNMS
According to Jesse, these datasets are growing exponentially. Collection, storage, analysis, and reporting are becoming more challenging, while the results are increasingly valuable. “For time-series metrics and network monitoring, people tend to collect everything in case there’s a problem. For that reason, we realized that we write a lot more data than we read. We wind up collecting much more data than our users ever see. So we need a solution that’s optimized for writes.”
Jesse’s team developed Newts to meet these requirements for scale. Newts started as a time-series storage strategy based on Cassandra and designed for high throughput and linear scale. It was also designed for grouped access, that collects, stores, and retrieves groups of related metrics.
Another feature of Newts is ‘late aggregation’; instead of aggregating data when it is stored, Newts aggregates data when it is read. Other time-series solutions perform in-line aggregations of the entire dataset, even when the ratio of reads to writes is small. With late aggregation, Newts removes one bottleneck to storage, eliminating the overhead of unused aggregate values.
In his ScyllaDB Summit presentation, Jesse put particular emphasis on the graphing capabilities and presented a visual sample of time-series data in OpenNMS.
A graph of data in OpenNMS. The graph displays bits in and out over a network interface over a 12-hour period.
Before Newts, OpenNMS relied on RRDtool, a set of open source utilities for time-series storage and graphing. RRDtool stores time-series metrics in flat files or binary files on disk. These files are of a fixed size, allocated whenever an RRD file is created. According to Jesse, “A decade ago, RRDTool’s algorithms were well-suited to our requirements, but they fell short of scaling to current demands. We needed to take a new direction, one that prioritizes write-optimized storage, and that scales beyond a single host.”
Jesse explained the process: “You define the file name, how many different data sources, how data is aggregated, how frequently you expect to push data to it, and so on.” Once you define the file, you can push metrics, retrieve data, and graph it. This was how OpenNMS was originally instrumented.”
To scale the system, a new layer of tooling was needed. For the Newts use case, write performance was paramount. With that in mind, the Newts team wanted to compare Cassandra with ScyllaDB. They installed Cassandra on 5 i3.4xlarge AWS instances and achieved just over 1M samples per second. They then tested ScyllaDB in a similar environment. “Using ScyllaDB, we were able to get almost double (1.8x) the results that we saw with Cassandra, with almost no changes at all. Out-of-the-box, swapping Cassandra for ScyllaDB with no optimizations, we were able to achieve almost 2x throughput.”
OpenNMS has been using Newts since 2015. The Newts project is hosted on GitHub, and published under AGPL v2.0 license. It’s available for all OpenNMS users who want to scale out their time-series data beyond a single host.
Jesse wrapped up his ScyllaDB Summit talk by stating that “Newts is relatively stable and complete, and it makes for a strong engine that can be used to retrieve and write time-series data from applications.”
You can watch Jesse’s full presentation (with slides) from ScyllaDB Summit 2018 in our Tech Talks section. And if you enjoy these in-depth technical insights from OpenNMS as other NoSQL industry leaders, this is also a good reminder that registration is now open for ScyllaDB Summit 2019.
Register Now for ScyllaDB Summit 2019!
If you enjoyed reading about OpenNMS’ implementation of a time series database on top of ScyllaDB, and want to learn more about how to get the most out of ScyllaDB and your big data infrastructure, sign up for ScyllaDB Summit 2019, coming up this November 5-6, 2019 in San Francisco, California.