NAME Net::Async::OpenTracing - basic proof-of-concept implementation for OpenTracing APM DESCRIPTION This all relies on the abstract OpenTracing interface, so that'd be the first port of call for official documentation. Setting up and testing Start up a Jæger instance in Docker like so: docker run -d --name jaeger \ -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \ -p 5775:5775/udp \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 5778:5778 \ -p 16686:16686 \ -p 14268:14268 \ -p 9411:9411 \ jaegertracing/all-in-one:1.12 Set up an Net::Async::OpenTracing instance with those connection details: my $loop = IO::Async::Loop->new; $loop->add( my $tracing = Net::Async::OpenTracing->new( host => '127.0.0.1', port => 6832, ) ); { my $batch = $tracing->new_batch(); my $span = $batch->new_span( 'example_span' ); $span->log('test message ' . $_ . ' from the parent') for 1..3; my $child = $span->new_span('child_span'); $child->log('message ' . $_ . ' from the child span') for 1..3; } # Make sure all trace data is sent $tracing->sync->get; You should then see a trace with 2 spans show up. AUTHOR Tom Molesworth LICENSE Copyright Tom Molesworth 2018-2019. Licensed under the same terms as Perl itself.