# NAME

Plack::Middleware::XRay - Plack middleware for AWS X-Ray tracing

# SYNOPSIS

     use Plack::Builder;
     builder {
         enable "XRay",
             name => "myApp",
         ;
         $app;
     };

     # an example of sampling
     builder {
         local $AWS::XRay::ENABLED = 0; # disable default
         enable_if { rand < 0.01 }      # enable only 1% request
             "XRay"
                 name => "myApp",
         ;
         $app;
     };

# DESCRIPTION

Plack::Middleware::XRay is a middleware for AWS X-Ray.

See also [AWS::XRay](https://metacpan.org/pod/AWS::XRay).

# CONFIGURATION

## name

The logical name of the service that handled the request. Required.

See also [AWS X-Ray Segment Documents](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html).

## annotations

[annotations](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-annotations) object with key-value pairs that you want X-Ray to index for search.

## metadata

[metadata](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-metadata) object with any additional data that you want to store in the segment.

## annotations\_buidler

Code ref to generate an annotations hashref.

   enable "XRay"
     name => "myApp",
     annotations_buidler => sub {
         my $env = shift;
         return {
             app_id => $env->{HTTP_X_APP_ID},
         };
     },

## metadata\_buidler

Code ref to generate a metadata hashref.

# LICENSE

Copyright (C) FUJIWARA Shunichiro.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

# AUTHOR

FUJIWARA Shunichiro <[email protected]>