Open Source APMs
Running proprietary APMs like AppDynamics or NewRelic at scale can become quite expensive. Let's explore open-source alternatives and try to find suitable replacement for them.
Proprietary APMs
Just like monitoring and logging, tracing and profiling are also important in general observability of your running applications. Here come Application Performance Monitoring, or in short APM. Some of the leaders in this field are certaily AppDynamics, New Relic and Dynatrace.
Cost problems
As time passed, these APMs became very popular and many companies turned to them, when they needed to optimize or otherwise debug their applications. These proprietary APMs actually make sense when you need to monitor few servers, but running them on thousands of servers, things become very expensive…
Open Source Alternatives
I recently found a few open source APMs that aren’t that known, so I decided to add them alongside some of the de-facto standard ones and I’ll let you decide if you want to try them out.
Jaeger Tracing - https://www.jaegertracing.io
Jaeger is an open-source application performance monitoring (APM) tool originally developed by Uber and later contributed to the Cloud Native Computing Foundation (CNCF). Jaeger is a distributed tracing system designed to troubleshoot microservices-based distributed systems. As its fast adoption by many companies, Jaeger is a solid option to evaluate if you're looking for an APM solution to replace some proprietary one.
Coroot - https://github.com/coroot/coroot
Coroot is a monitoring platform for tracking performance of microservices and distributed applications, particularly in cloud-native environments. It prioritizes service-level objectives (SLOs), enabling teams to monitor application health from a service-oriented perspective, focusing on user experience and reliability instead of just basic metrics. Using eBPF, Coroot automatically collects detailed telemetry data, including metrics, logs, and traces. Integration with kubernetes is especially awesome and I was pretty impressed by it.
SkyWalking - https://skywalking.apache.org
Application performance monitor tool for distributed systems, especially designed for microservices, cloud native and container-based (Kubernetes) architectures. Leveraging eBPF technology, Kubernetes Network Monitoring delivers granular insights into network traffic, topology, and TCP/HTTP metrics.
Uptrace - https://uptrace.dev
Uptrace is another open source APM that supports distributed tracing, metrics, and logs. You can use it to monitor applications and troubleshoot issues. Uptrace comes with an intuitive query builder, rich dashboards, alerting rules, notifications, and integrations for most languages and frameworks.
Signoz - https://signoz.io
SigNoz is an open-source observability tool powered by OpenTelemetry. You can use SigNoz to monitor your applications and infrastructure and get insights about it. It supports a wide variety of telemetry signals like logs, metrics, traces, and exceptions. You can set alerts and get notified in your preferred channel about any issue or some critical metric crossing a threshold. You can then use SigNoz as an analytics tool to debug the issue using its different features.
My takeaway
I’ve tried several options, and while some are well-suited for specific use cases, I still lean towards a few favorites. In my opinion, if you're looking for a well-rounded APM with an intuitive UI, Jaeger is an excellent choice.