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 <TEAM@cpan.org>

LICENSE

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

