The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

OpenTracing::Manual::Ecosystem - An overview of the OpenTracing puzzle pieces

DESCRIPTION

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

TABLE OF CONTENTS

"The OpenTracing API Specification"
"Integrations and Frameworks"
"Instrumenting a Application"
"Implementations"
"Development and Testing"
"Planned work"
"The Roadmap"

AN OVERVIEW PER CATEGORY

The OpenTracing API Specification

The specification itself, and related modules.

OpenTracing::Interface

The description of the interface.

OpenTracing::Types

To make type-checking more easy.

OpenTracing::Implementation::NoOp

Allow OpenTracing to be disabled without breaking instrumentation code and have a safe fallback when no tracer can be initialised.

Integrations and Frameworks

Distributed Tracing is all about connecting services and microservices together, the following modules will handle the edges of the application and services and bootstrap tracer implementations.

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.

DBIx::OpenTracing

Auto generate spans around database calls.

Log::Log4perl::OpenTracing

Add OpenTracing context information to logs.

Instrumenting a Application

Once an application is running and the framework has taken care of most of the bootstrapping, the following modules help to can more detailed spans.

OpenTracing::GlobalTracer

Get access to a bootstrapped implementation.

OpenTracing::AutoScope

Finish a span after exiting a scope.

OpenTracing::WrapScope

Create spans around subroutines.

Implementations

A list of various Implementations that are compliant with the OpenTracing API.

OpenTracing::Implementation

Bootstrap an implementation and set a global tracer.

OpenTracing::Implementation::NoOp

Prevent applications from crashing (see "NoopTracer" in https://opentracing.io/specification/).

OpenTracing::Implementation::Test

Keep spans as an in-memory data structure and expose Test::Builder-compatible comparison functions in order to allow easy testing of new instrumentation code or frameworks.

OpenTracing::Implementation::DataDog

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

Development and Testing

Modules that might be of interest when developing integrations or implementations.

OpenTracing::Implementation::Test

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

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::Roles

A generic set of attributes and methods for building implementations.

Planned work

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

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 Perceptyx, 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.

SEE ALSO

OpenTracing::Interface

A role that defines the Tracer interface.

OpenTracing::Manual

A quick overview about Perl5 and OpenTracing

OpenTracing::Manual::Instrumentation

For Application developers and Devops.

OpenTracing::Manual::Integration

For Framework or Integration Developers

OpenTracing::Manual::Implementation

For Tracing Service Implementations

OpenTracing Overview

The OpenTracing API standard.

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.