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_deeplyvariant. - 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_deeplyvariant. - 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_deeplyon 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
DBIrequests, using DBIx::QueryLog. - LWP::UserAgent::Plugin::OpenTracing
-
OpenTracing
inject_contextmethod for LWP::UserAgent. - HTTP::Tiny::Plugin::OpenTracing
-
OpenTracing
inject_contextmethod for HTTP::Tiny. - Plack::Middleware::OpenTracing
-
OpenTracing
extract_contextand 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.