Hey there, our fantastic open-edx community!
We’re thrilled to share some exciting news with you today. We’ve got big plans in the pipeline - we’re integrating OpenTelemetry into our project!
Why OpenTelemetry?
We want to take our monitoring game to the next level. OpenTelemetry (Otel), with its strong community support, allows us to generate valuable data without breaking a sweat. No OpenTelemetry Collector is needed for now; we’re focusing on the means of data generation.
Our Current Setup:
Right now, we’re using the trusty edx-django-utils package/repo for our monitoring module. You can find it here. This module is our go-to for monitoring, and it defaults to using New Relic. It’s our gateway to third-party monitoring libraries like newrelic.agent. It’s packed with middleware and utility methods that make it a breeze to add custom attributes and keep an eye on memory consumption. For a full rundown of what’s in our public API, check out our init.py file.
What’s Next?
Our plan is to write middleware classes that implement OpenTelemetry for various monitoring purposes: cache monitoring, deployment monitoring, cookie monitoring, code owner monitoring, and monitoring memory. We’re taking it one step at a time. Our initial move is to put OpenTelemetry to work for cache monitoring. We’re still deciding whether to use the existing abstraction layer or define our middleware classes separately and import them here.
Currently, we’re already using middleware classes to tap into New Relic’s monitoring capabilities. You can see an example of how it’s done by using the edx-django-utils package for monitoring here.
The Key Point:
We’re not bidding farewell to our New Relic setup. Instead, we’re getting clever with it. We’ll introduce environment variables or feature flags to enable the OpenTelemetry-based middleware classes where needed. This means no changes in the edx-django-utils package; we’ll take care of the conditions on our end.
Looking Ahead:
Once OpenTelemetry is seamlessly integrated, we’re all set to use Grafana as a trace exporter. We’ll also explore other third-party tools to enhance our tracing capabilities further if required.
We’re super excited about this journey, and we want you to be a part of it. Your insights, feedback, and contributions are always welcome. Let’s make monitoring better together!
Stay tuned for updates, and feel free to drop any questions or suggestions in the comments. Here’s to a brighter, more open future for monitoring!
Best,