NAME
OpenTracing::Implementation::DataDog::SpanContext - A DataDog Implementation
SYNOPSIS
use aliased OpenTracing::Implementation::DataDog::SpanContext;
my $span_context = SpanContext->new(
service_name => "MyFancyService",
service_type => "web",
resource_name => "/clients/{client_id}/contactdetails",
environment => 'staging',
hostname => 'web.01.host',
);
#
# please do not add parameter values in the resource,
# use tags instead, like:
# $span->set_tag( client_id => $request->query_params('client_id') )
DESCRIPTION
This is a OpenTracing SpanContext compliant implementation with DataDog specific extentions
EXTENDED ATTRIBUTES
trace_id
DataDog requires this to be a unsigned 64-bit integer
span_id
DataDog requires this to be a unsigned 64-bit integer
DATADOG SPECIFIC ATTRIBUTES
service_name
A required NonEmptyString
where length <= 100
.
Defaults to the value of the DD_SERVICE_NAME
environment variable if set.
The service-name will usually be the name of the application and could easilly be set by a intergration solution.
service_type
An enumeration on web
, db
, cache
, and custom
, which is the default.
DataDog has four different service types to make it more easy to visualize the data. See Service List at DataDog HQ
resource_name
A required NonEmptyString
where length <= 5000
.
Good candidates for resource names are URL paths or databasenames and or tables.
environment
An optional NonEmptyString
where length <= 5000
.
hostname
An optional NonEmptyString
where length <= 5000
.
version
An optional NonEmptyString
where length <= 5000
.
CONSTRUCTORS
Warning:
Constructors are not to be used outside an implementation, they are not part of the OpenTracing API.
Only an integration solution should be bothered creating a 'root context'.
new
my $span_context = SpanContext->new(
service_name => "MyFancyService",
resource_name => "/clients/{client_id}/contactdetails",
baggage_items => { $key => $value, .. },
);
Creates a new SpanContext object;
INSTANCE METHODS
Besides all methods available from the OpenTracing::Roles::SpanContext, the following are DataDog specific added methods.
service_type_is_web
Returns a Bool
wether or not the service_type is set to web
.
service_type_is_db
Returns a Bool
wether or not the service_type is set to db
.
service_type_is_cache
Returns a Bool
wether or not the service_type is set to cache
.
service_type_is_ciustom
Returns a Bool
wether or not the service_type is set to custom
.
CLONE METHODS
Since SpanContext
is supposed to be an in-mutable object, and there are some occasions that DataDog settings need to added (i.e. a root span), there are a few cloning methods provided:
with_service_name
Creates a cloned object, with a new value for service_name
.
$span_context_new = $root_span->with_service_name( 'MyAwesomeApp' );
Required Positional Parameter(s)
service_name
-
A
NonEmptyString
wherelength <= 100
.
Returns
A cloned DataDog::SpanContext
with_service_type
Creates a cloned object, with a new value for service_type
.
$span_context_new = $root_span->with_service_type( 'cache' );
Required Positional Parameter(s)
service_type
-
An enumeration on
web
,db
,cache
, andcustom
Returns
A cloned DataDog::SpanContext
with_resource_name
Creates a cloned object, with a new value for resource_name
.
$span_context_new = $root_span->with_resource_name( 'clients/?/index.cgi' );
Required Positional Parameter(s)
resource_name
-
A
NonEmptyString
wherelength <= 5000
.
Returns
A cloned DataDog::SpanContext
with_environment
Creates a cloned object, with a new value for environment
.
$span_context_new = $root_span->with_environment( 'development' );
Required Positional Parameter(s)
environment
-
A
NonEmptyString
wherelength <= 5000
.
Returns
A cloned DataDog::SpanContext
with_hostname
Creates a cloned object, with a new value for hostname
.
$span_context_new = $root_span->with_hostname( 'web.01.host' );
Required Positional Parameter(s)
hostname
-
A
NonEmptyString
wherelength <= 5000
.
Returns
A cloned DataDog::SpanContext
with_version
Creates a cloned object, with a new value for hostname
.
$span_context_new = $root_span->with_version( 'v0.123.456' );
Required Positional Parameter(s)
version
-
A
NonEmptyString
wherelength <= 5000
.
Returns
A cloned DataDog::SpanContext
ENVIRONMENT VARIABLES
For configuring DataDog Tracing there is support for the folllowing environment variables:
DD_SERVICE_NAME
The name of a set of processes that do the same job. Used for grouping stats for your application.
default: none
DD_ENV
Your application environment (for example, production, staging).
default: none
DD_HOSTNAME
Manually set the hostname to use for metrics if autodetection fails, or when running the Datadog Cluster Agent.
DD_VERSION
Your application version (for example, 2.5, 202003181415, 1.3-alpha).
default: none
SEE ALSO
- OpenTracing::Implementation::DataDog
-
Sending traces to DataDog using Agent.
- OpenTracing::Role::SpanContext
-
Role for OpenTracing Implementations.
AUTHOR
Theo van Hoesel <tvanhoesel@perceptyx.com>
COPYRIGHT AND LICENSE
'OpenTracing::Implementation::DataDog' is Copyright (C) 2019 .. 2021, 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 package 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.