Skip to main content
drupalreleases

Use direct release data with your AI assistant.

Learn more

OpenTelemetry

Security covered Under active development 584 sites

This module integrates the OpenTelemetry PHP library with Drupal to provide detailed performance insights. It allows you to monitor not only the total request execution time but also the time spent on internal processes like database queries.

Integration of the OpenTelemetry PHP library with Drupal. More info about OpenTelemetry »

This allows you to see not only the total execution time of the Drupal Request, but also detailed information about internal processes like time spent on preparing the Request, SQL queries, etc.

The module was presented at DrupalCon Singapore 2024 - here is the presentation recording and the slides.

Quick start

If you are new to observability, telemetry, and all that stuff - here are the easy steps to make it work directly on your localhost out of the box, using ddev:

  1. Install Drupal using DDEV
  2. Install an OpenTelemetry Receiver locally, for example from Grafana:
    ddev get MurzNN/ddev-grafana && ddev restart
  3. Install and enable the Drupal OpenTelemetry module:
    composer require drupal/opentelemetry && drush en opentelemetry
  4. Go to the /admin/config/development/opentelemetry and set the endpoint to http://opentelemetry-grafana:4318
  5. Open the Grafana Web UI on the url like https://your-project-name.ddev.site:3000/, click on the "Explore" item on the left menu, and choose the "Traces" in the dropdown.

Usage example in your custom code:

$this->openTelemetryTracer = \Drupal::service('opentelemetry.tracer');
$tracer = $this->openTelemetryTracer->getTracer();
$mainSpan = $tracer->spanBuilder('My custom operation')->startSpan();

// Make an external API call.
$apiCallSpan = $tracer->spanBuilder("Coindesk API call")->startSpan();
$data = json_decode(
  file_get_contents('https://api.coindesk.com/v1/bpi/currentprice.json')
);
$apiCallSpan->end();

// Set attributes and put an event to the main span.
$bots = 3;
$mainSpan->setAttribute('Bitcoin value', $data->bpi->USD->rate_float);
$mainSpan->addEvent('Starting bots tuning', ['bots available' => $bots]);

for ($i = 1; $i <= $bots; $i++) {
  $innerSpan = $tracer->spanBuilder("Tuning bot $i")->startSpan();
  // Do some internal business logic.
  usleep(rand(200000, 500000));
  $raised[$i] = rand(0, 100);
  $innerSpan->addEvent("Bot $i raised money!", ['amount' => $raised[$i]]);
  usleep(rand(100000, 200000));
  $innerSpan->end();
}

// Do some more stuff and finalize the main span.
usleep(rand(200000, 500000));
$mainSpan->addEvent('We got richer!', ['raised' => array_sum($raised)]);
$mainSpan->setAttribute('raised_details', $raised);
$mainSpan->end();

Ask your assistant about OpenTelemetry

Check compatibility with your Drupal and PHP version, maintenance and security coverage, from current release data. How it works

Depends on

Dependencies of the latest stable release

No dependencies recorded for this project.

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
16
Tracked since
Mar 2023
Latest release
6 months ago
Releases (12 mo)
3 ▲ from 2
Maintenance
Slowing

Release Timeline

Releases

Version Type Core PHP Release date
1.0.0-alpha6 Pre-release 9–10 PHP >=8.0 Jun 27, 2023
1.0.0-alpha5 Pre-release 9–10 PHP >=8.0 Jun 27, 2023
1.0.0-alpha4 Pre-release 9–10 PHP >=8.0 May 15, 2023
1.0.0-alpha3 Pre-release 9–10 PHP >=8.0 May 12, 2023
1.0.0-alpha2 Pre-release 9–10 PHP >=8.0 Apr 3, 2023
1.0.0-alpha1 Pre-release 10 PHP >=8.0 Mar 31, 2023