Skip to content
Search
Examples

Telemetry

Description

Identify the source of telemetry data. Resources describe the entity producing telemetry (service name, host, environment) and can combine auto-detected system attributes with custom metadata.

Documentation

Code

<?php

declare(strict_types=1);

use Flow\Telemetry\Tracer\SpanKind;
use Flow\Telemetry\Tracer\SpanStatus;
use function Flow\Telemetry\DSL\{
    console_exporter,
    memory_context_storage,
    memory_span_processor,
    resource,
    resource_detector,
    telemetry,
    tracer_provider
};
use function Flow\ETL\DSL\clock;

require __DIR__ . '/vendor/autoload.php';

// Detect system resource attributes (OS, host, process, service)
$detected = resource_detector()->detect();

// Add custom attributes that override or extend detected values
$custom = resource([
    'deployment.environment.name' => 'production',
    'service.instance.id' => 'worker-01',
    'service.namespace' => 'order-processing',
]);

// Merge resources (custom attributes take precedence)
$combinedResource = $detected->merge($custom);

$telemetry = telemetry(
    $combinedResource,
    tracer_provider(
        memory_span_processor(console_exporter(colors: false)),
        clock(),
        memory_context_storage(),
    ),
)->registerShutdownFunction();

$tracer = $telemetry->tracer('order-service');

$span = $tracer->span('process-order', SpanKind::INTERNAL);
$span->setAttribute('order.id', 'ORD-12345');
$span->setStatus(SpanStatus::ok());
$tracer->complete($span);
Contributors

Built in the open.

Join us on GitHub
scroll back to top