Application Performance Monitoring

edx.org has used New Relic for APM (Application Performance Monitoring) for many years, and it is still arguably the most capable product in this category of services. However, there are many competing tools in this space, some of which are much less expensive or even open source. We would like to avoid imposing New Relic related overhead on Open edX users who don’t actually use the service, and would additionally like to make it easy to install at least one of the open source APM services alongside Open edX development and production environments. This document assembles some initial notes and ideas on how to make this happen.

Open Source APM Options

SkyWalking

SkyWalking is an Apache project licensed under the Apache 2.0 license, making it feasible from a licensing perspective to distribute alongside Open edX.

  • Can store data in either MySQL, PostgreSQL, Elasticsearch, OpenSearch, or h2

  • Compatible with OpenTelemetry, Prometheus, and other metrics/logging systems

  • Has a browser agent for reporting errors and performance data from browser sessions

  • Has significantly more contributors and GitHub Stars than the alternatives

  • Primarily implemented in Java

SigNoz

SigNoz is an “open core” APM service, with the bulk of the code under the MIT license but a handful of “enterprise” features (SSO, audit logs, granular access control, etc.) only available with a commercial license. This could work for development environments, but would have to be compared against other commercial APM solutions for production use.

  • Stores data in ClickHouse (which is Apache 2.0 licensed, but another data storage engine that would need to be installed)

  • Uses OpenTelemetry for agents

  • No browser agent yet?

  • Primarily implemented in TypeScript

Pinpoint

Pinpoint is Apache 2.0 licensed, but has a narrower range of supported server side languages than the alternatives (primarily Java and PHP, with Python added 2 years ago).

  • Stores data in HBase

  • No OpenTelemetry support or brower agent?

  • Primarily implemented in Java

Elastic APM

Elastic APM is “open source” to the extent that Elasticsearch (one of its dependencies) is. It can be downloaded and installed for most development and production contexts, but has restrictions to prevent commercial competition for Elastic that render it incompatible with most open source licenses. So I don’t think Open edX would want to recommend it as a default, but it could be a viable option for some users.

  • Stores data in Elasticsearch

  • Uses OpenTelemetry for agents

  • Has a browser agent

  • Primarily implemented in Go