As we continue to build powerful, microservices-driven experiences for our customers, we’ve grown to love Prometheus, the open-source monitoring and alerting toolkit originally developed by SoundCloud to provide greater visibility into microservices architectures. That’s why we’re so excited to announce Trickster, a new open-source tool we developed to make Prometheus dashboards run smoother and faster.
Microservices are essential to how we deliver services to customers. X1, our class-defining video platform, was designed and built on a microservices platform, as is Xfinity xFi, our groundbreaking home Wi-Fi experience. We know from our experience with microservices that monitoring and alerts are an essential function, and that Prometheus provides an elegant solution.
It also quickly became clear to us that when it comes to Prometheus-powered dashboards, speed is of the essence.
A few extra seconds of response time on a dashboard can be a deal breaker. Many dashboards request the entire time range of data from the time series database every time a dashboard loads or reloads. This can result in slower rendering times, and different results depending on when the request is made.
Trickster was developed internally and recently made available open source. Written in Go, Trickster is a reverse proxy cache for the Prometheus HTTP APIv1 that considerably accelerates dashboard rendering times for any series queried from Prometheus. This is possible because of the delta proxy, step boundary normalization, and fast forward features.
Trickster's delta proxy inspects the time range of a client query to determine what data points are already cached, and requests only the data points still needed to service the client request from Prometheus. Prometheus is queried for small incremental changes on each dashboard load, instead of several hundred data points of replicated data. With the step boundary normalization feature, Trickster slightly adjusts the requested time range to ensure that all data points returned by Prometheus are aligned. Finally, with Trickster's fast forward feature, real-time graphs consistently show the most current data, regardless of how far the next step boundary is.
These features result in noticeably faster chart load times. The highly cacheable data is conveyed visually to users in a way that they are used to, and all dashboard users see consistent data on their display. In a presentation at the first Prometheus meetup event in Philadelphia earlier this month, James Ranson, Software Architect at Comcast, discussed how Trickster was developed, and showed us a live demo of the software. The event was held at the CandiDate office where several other existing tech-meetups are hosted. We highly encourage everyone to use, improve and contribute back to Trickster. You can download the source code at https://github.com/Comcast/trickster.
Prometheus became a part of the CNCF (Cloud Native Computing Foundation) as the second hosted project, after Kubernetes in 2016.
(Trickster would not have been possible without the work of James Ranson, Senior Principal Architect, Video Engineering)