Skip to content

Add Datadog support for span-related monitoring functions #419

@timmc-edx

Description

@timmc-edx

[Consider breaking out each method as its own ticket when this is to be picked up.]

Acceptance criteria:

  • Complete all of the following for each method:
    • function_trace: feat: Create manual spans for monitoring backends. #435
      • Move implementation into NewRelicBackend.
      • Implement in DatadogBackend.
      • Update function to call all of the telemetry backends.
      • edx_django_utils/monitoring/README.rst updated with latest compatibility info.
      • Inform owners of calling code, especially for backward-incompatible changes in Datadog.
    • set_monitoring_transaction_name
      • Move implementation into NewRelicBackend.
      • Implement in DatadogBackend.
      • Update function to call all of the telemetry backends.
      • edx_django_utils/monitoring/README.rst updated with latest compatibility info.
      • Inform owners of calling code, especially for backward-incompatible changes in Datadog (see notes).
    • ignore_transaction
      • Move implementation into NewRelicBackend.
      • Implement in DatadogBackend.
      • Update function to call all of the telemetry backends.
      • edx_django_utils/monitoring/README.rst updated with latest compatibility info.
      • Inform owners of calling code, especially for backward-incompatible changes in Datadog.
    • Handle get_current_transaction appropriately (see notes).
    • Handle background_task appropriately (see notes).

Implementation notes:

  • Optionally, choose new names that are less specific to NR, and deprecate the old names (leaving stubs in their place that emit a warning and call the new function).

Other notes:

  • Some repos currently call these directly on newrelic.agent rather than using edx-django-utils's indirection. [APM] Remove direct references to newrelic edx/edx-arch-experiments#621 covers resolving this.
  • It appears that get_current_transaction is currently only used internally, despite being exposed, so it can probably be skipped for now.
  • Relatedly, background_task appears to be completely unused. (Should this be retired?)
  • 2U did not end up using OpenTelemetry, so we can't commit to adding support to OpenTelemetryBackend at the moment. These new methods can be implemented as no-ops in that backend.
  • The method set_monitoring_transaction_name is used for XBlocks here, and the resource name will probably change, which may affect monitoring or other XBlock related observability.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions