The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

OpenTracing::Manual - A quick overview about Perl5 and OpenTracing

WARNING

The OpenTracing module on CPAN is NOT COMPLIANT with anything remotely to OpenTracing.IO or the OpenTracing::Interface.

DO NOT USE THE OPENTRACING PACKAGE

DESCRIPTION

This Manual is a quick overview of what is available in Perl related to the OpenTracing API related Interface Definition.

This manual targets three different audiences:

Application developers and Devops

Those that want to add instrumentation and tracing to their appilication or micro services.

Framework or Integration Developers

Those writing integrations for frameworks, such that those can easily extract tracing information from incoming request or inject that into outgoing requests.

Tracing service Implementation providers

Those that want to have the Perl Implementation communicate with their tracing service provider.

Included is a list of Perl Modules and those that are on the horizon.

INTRODUCTION

From the OpenTracing IO website:

OpenTracing is comprised of an API specification, frameworks and libraries that have implemented the specification, and documentation for the project. OpenTracing allows developers to add instrumentation to their application code using APIs that do not lock them into any one particular product or vendor.

Distributed tracing, also called distributed request tracing, is a method used to profile and monitor applications, especially those built using a microservices architecture. Distributed tracing helps pinpoint where failures occur and what causes poor performance.

See also: OpenTracing Overview.

THE MANUAL

For Application developers and Devops

For Framework or Integration Developers

For Tracing service Implementation providers

SEE ALSO

Please have a look at the following modules or distributions to get more detailed information about all the puzzle pieces.

OpenTracing::Interface

The description of the interface.

OpenTracing::Types

To make type-checking more easy.

Test::OpenTracing

Because we made mistakes.

Test::OpenTracing::Interface

Check that the classes/objects adhere to the defined OpenTracing::Interface description.

Test::OpenTracing::Integration

Do a cmp_deeply on a testing implementation.

OpenTracing::GlobalTracer

Get access to a bootstrapped implementation.

OpenTracing::Roles

A generic set of attributes and methods for building implementations.

OpenTracing::Implementation

Bootstrap an implementation and set a global tracer.

OpenTracing::Implementation::NoOp

Prevent applications from crashing.

OpenTracing::Implementation::Test

Build a data structure that can be used to do a cmp_deeply variant.

OpenTracing::Implementation::DataDog

Send traces and spans to the DataDog agent on the local host.

OpenTracing::AutoScope

Finish a span after exiting a scope.

CGI::Application::Plugin::OpenTracing

Auto generate root-span on newly started trace, and on top a setup-span, a run-span and more.

CGI::Application::Plugin::OpenTracing::DataDog

Take care of all the specifics for DataDog. Comes bundled with CGI::Application::Plugin::OpenTracing.

Planned work

The following modules will be needed for easier instrumentation of an application or better framework integration and distributed tracing.

OpenTracing::WrapScope

Wrap full-qualified named subroutines in a scope, instead of modifying all the codebase.

DBIx::OpenTracing

Trace all DBI requests, using DBIx::QueryLog.

LWP::UserAgent::Plugin::OpenTracing

OpenTracing inject_context method for LWP::UserAgent.

HTTP::Tiny::Plugin::OpenTracing

OpenTracing inject_context method for HTTP::Tiny.

Plack::Middleware::OpenTracing

OpenTracing extract_context and create initial root-spans.

OpenTracing::HTTP::Headers

Inject current `SpanContext`, a drop-in replacement, or even override everywhere!.

The roadmap

Since all the work has been done for Peceptyx, no further development will be done on the following, unless ...

Please contact the author!

OpenTracing::Implementation::Zipkin

See ... .

OpenTracing::Implementation::Elastic

See ... .

OpenTracing::Implementation::Jaeger

See ... .

OpenTracing::Implementation::XRay

See ... .

OpenTracing::Implementation::NewRelic

See New Relic APM.

Dancer2::Plugin::OpenTracing

See Dancer2::Plugin.

Mojolicious::Plugin::OpenTracing

See Mojolicious::Plugin.

Catalyst::Plugin::OpenTracing

See Catalyst.

MooX::OpenTracing

Get access to the OpenTracing::GlobalTracer a la MooX::LogAny.

AUTHOR

Theo van Hoesel <tvanhoesel@perceptyx.com>

COPYRIGHT AND LICENSE

'OpenTracing API for Perl' is Copyright (C) 2019 .. 2020, Perceptyx Inc

This library is free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0.

This library is distributed in the hope that it will be useful, but it is provided "as is" and without any express or implied warranties.

For details, see the full text of the license in the file LICENSE.