Coroot revisited

Aug 6, 2026

Coroot has come a long way since 2023. Now it uses ClickHouse as storage backend, in addition to Prometheus (though you can also set Coroot to store metrics in ClickHouse).


Service runtimes are displayed in applications list, which makes it easier to identify services at a glance. Applications are grouped in application, control-plane and monitoring, which is useful when you want to filter out stuff during a debugging session.

coroot-applications

coroot-applications-control-plane

coroot-applications-monitoring


Peeking into postgres/redis is now also possible. Standard database metrics like current connections, WAL, storage are available. But this requires supplying postgres username and password, which you can do manually via the web ui, or via k8s annotations. Other generic eBPF metrics are available out of the box.

coroot-postgres

For redis, in order to see average latency, queries per second and redis keys, you'll have to point Coroot to target redis instances (but generic eBPF metrics work out of the box).

coroot-redis


A nice addition is baked-in flamegraphs. Normally you'll have to setup manual instrumentation and run your workloads to see a framegraph, which is easy when you have a few services, but would be very tricky to do this in production when you have multiple services working together. With Coroot, you do not have to configure anything (aside from setting up Coroot on your k8s cluster).

coroot-flamegraph


But when something is off, alerts would be nice. What's not nice is having to configure alerts by hand (you'll miss some of them, but hopefully you'll realize before you need them). Coroot has built-in alerting rules, and you can supply a webhook to send you alerts.

coroot-alerts


Traces are a lifesaver when you have to debug interconnected services. Sometimes you are hunting for an error somewhere between the call chains, sometimes you want to shave off 100ms latency here and there. The updated ui makes it easier to look for these information.

coroot-traces-error-causes

coroot-traces-latency-explorer


Especially with logs, you know something is really off when you have high ERROR rates. The nice thing is you can filter between container and OTel logs.

coroot-logs


Less control plane dashboards to check is good. Now you can see ArgoCD deployments from Coroot. It also displays latest rollouts (and it would be sent through webhook notifications as well).

coroot-k8s-argocd

coroot-k8s-rollouts


Usually you'll need to set up OpenCost for FinOps, and you really should use this since it has very extensive coverage.

But if you only need cost estimation based on CPU / memory, Coroot would be good enough.

coroot-cost

If you're on AWS, Coroot can also fetch costs for RDS and ElastiCache (EKS support is planned).

coroot-cost-aws


What's really nice about Coroot is you get almost all the features out of the box, and you don't need to stitch multiple components together manually. You can use something else to scrape OTel traces to Coroot, but then it's only a single service. Less components to upgrade and maintain, sign me up.

https://karnwong.me/posts/rss.xml