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"
- "Frameworks and Integrating OpenTracing"
- "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
-
Prevent applications from crashing.
Frameworks and Integrating OpenTracing
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.
Instrumenting a Application
Once an application is running and the framwork 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.
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.
- 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.
Development and Testing
Modules that might be of interest when developping 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.
- 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.
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.