Skip to content

This is a DDEV add-on for Seq, a self-hosted search, analysis, and alerting server built for structured logs and traces.

License

Notifications You must be signed in to change notification settings

happiness/ddev-seq

Repository files navigation

ddev-seq

This is a DDEV add-on for Seq, a self-hosted search, analysis, and alerting server built for structured logs and traces.

Add-on installation

ddev add-on get happiness/ddev-seq

Drupal integration

Install the modules OpenTelemetry and OpenTelemetry Log. The OpenTelemetry module comes with it's own log implementation but I have not managed to get that working properly so for now I recommend using the OpenTelemetry Log module instead.

composer require drupal/opentelemetry drupal/otlog

Configure the OpenTelemetry module at /admin/config/development/opentelemetry and add the Endpoint http://seq/ingest/otlp.

That's it. Open http://seq.<DDEV_NAME>.ddev.site:8501/ to start exploring your logs and traces.

Use OpenTelementry bundled log module

If you want to use the log module bundled with the OpenTelemetry module you need to apply the patch from the following issue to get the log message body into Seq.

Tracing

The following example of how to do your own tracing in your custom code is taken from the OpenTelemetry module page with some minor modifications.

$tracer_provider = \Drupal::service('opentelemetry.tracer_provider');
$tracer = $tracer_provider->getTracer('drupal_test');
$main_span = $tracer->spanBuilder('My custom operation')->startSpan();

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

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

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

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

About

This is a DDEV add-on for Seq, a self-hosted search, analysis, and alerting server built for structured logs and traces.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published