CHRONOS: Application Health Monitoring for the Modern Era

Josh James
4 min readJan 5, 2023

--

By: Josh James, Gahl Peled, Troy Prejusa, and Elisa Nie

Chronos is a free, open-source developer tool that monitors health and communications data from servers, Kubernetes clusters, microservices, Kafka clusters, and containers.

Why do we need Chronos?

Many software engineers have discovered the critical importance of consistent health monitoring for their apps. Developers run into problems when they do not anticipate how their app will change over time. Monitoring helps solve this problem. It is difficult, however, to employ robust monitoring strategies within any app, and even more so with microservices architecture.

As an application scales and the reliability becomes threatened, one cannot have a “set-it-and-forget-it” approach. Even the almighty AWS load-balancer cannot fix everything. Developers owe it to themselves and their users to consistently monitor their app so that they can efficiently respond to changing needs over time.

Tools like Grafana are amazing for visualizing metrics for your application. However, Grafana has no way of actually generating metrics. It must interface with a database that already has those metrics. Furthermore, metric visualization tools like Grafana have no way of interfacing with your database to hone in on what metrics are recorded.

This can be especially problematic when you consider that Prometheus can scrape thousands of metrics at every interval. When we saved all scraped metrics, our database was filled with a substantial amount of data after only one hour. This was particularly surprising when you consider that the data consisted of only a few primitive data types. If you want to reduce your database bloat, you would have to go directly into the monitoring tool and configure it there.

That’s where Chronos comes in. Chronos is a free, open-source developer tool that tracks, records, and displays your metrics without having to leave the comfort of our npm package.

Chronos provides metrics for servers, microservices (Dockerized or not), Kubernetes clusters, and Kafka clusters. Chronos also allows you to receive automated notifications over Slack or email.

How do I use Chronos?

To implement Chronos monitoring in your app, simply download the npm package and invoke your preferred Chronos monitoring method. If you want to track request/response lifecycles in your server, just invoke chronos.track() to return middleware within your server. This will allow you to both get health metrics about your app, as well as record metrics for every request and response made to your server. Pretty nifty stuff.

Using the Chronos desktop app, you can then visualize those metrics to gain insight into your application and its changes over time. If you need to track a small handful of metrics, you can use the Chronos desktop app to choose which metrics you want to track, that way you prevent your database from getting overloaded with useless metrics. Also pretty nifty.

A developer trying to gain these insights without Chronos will have a much harder time. But that’s why Chronos was made in the first place: to make sure developers have a simple tool to get critical data as quickly and effectively as possible. If you’re still reading this, Chronos is for you.

Our key features:

  • Distributed tracing enabled across microservice applications
  • Compatible with GraphQL
  • Cross-platform desktop application
  • Supports PostgreSQL and MongoDB databases
  • Displays real-time temperature, speed, latency, and memory statistics
  • Display and compare multiple microservice metrics in rendered graphs
  • Monitor an Apache Kafka cluster via the JMX Prometheus Exporter
  • Tracks Kubernetes cluster metrics from fetched Prometheus server data

Once the Chronos NPM package is installed and deployed, the application is as easy as adding a database URI and selecting the type of database. Currently Chronos supports Kubernetes, Kafka, microservices, PostgreSQL, and MongoDB.

Simple database integration through Chronos dashboard

Choose which metrics are saved to your database

Easily select which metrics are displayed with graphs

How to get Chronos:

Check out our GitHub repo and README to see how to use Chronos. There, you will see a simple set of step-by-step instructions on how to implement Chronos in your app. Just set up a config file, add your database URI, and that’s it! You’re ready to start being an even more responsible app parent.

The Chronos Team is actively working on making Chronos better every day. By working on open-source-products, we hope to enrich developer tools and experiences in a way that makes your lives easier. In the future, we hope to be able to:

  • Provide even more metrics
  • Automate the configuration process
  • Allow text alerts for critical health metrics

If you have any questions, or want to learn more, please reach out! You can visit our website, NPM, and the official OSLabs Chronos Github Page. It has been a pleasure to work on this product and we can’t wait to hear from you. We welcome contributions to our codebase through the open-source community.

Meet the team:

Gahl Peled, Github | Linkedin

Josh James, Github | Linkedin

Elisa Nie, Github | Linkedin

Troy Prejusa, Github | Linkedin

Additional Reading

The future of Kubernetes — and why developers should look beyond Kubernetes in 2022

By Michael Vittrup Larsen

--

--