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.