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 <[email protected]>

LICENSE

   Copyright Tom Molesworth 2018-2019. Licensed under the same terms as
   Perl itself.