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.
INHERITED METHODS
- IO::Async::Notifier
-
add_child, adopt_future, can_event, children, configure_unknown, debug_printf, get_loop, invoke_error, invoke_event, loop, make_event_cb, maybe_invoke_event, maybe_make_event_cb, new, notifier_name, parent, remove_child, remove_from_parent
AUTHOR
Tom Molesworth <TEAM@cpan.org>
LICENSE
Copyright Tom Molesworth 2018-2019. Licensed under the same terms as Perl itself.