Crate xray_lite

source ·
Expand description

Provides a client interface for AWS X-Ray

§Examples

§Subsegment of AWS service operation

The xray_lite_aws_sdk extension is recommended for tracing operations through AWS SDK for Rust.

Here is an example to record a subsegment of an AWS service operation within a Lambda function invocation instrumented with AWS X-Ray:

use xray_lite::{AwsNamespace, Context, DaemonClient, SubsegmentContext};

fn main() {
   // reads AWS_XRAY_DAEMON_ADDRESS
   let client = DaemonClient::from_lambda_env().unwrap();
   // reads _X_AMZN_TRACE_ID
   let context = SubsegmentContext::from_lambda_env(client).unwrap();

   do_s3_get_object(&context);
}

fn do_s3_get_object(context: &impl Context) {
    // subsegment will have the name "S3" and `aws.operation` "GetObject"
    let subsegment = context.enter_subsegment(AwsNamespace::new("S3", "GetObject"));

    // call S3 GetObject ...

    // if you are using `aws-sdk-s3` crate, you can update the subsegment
    // with the request ID. suppose `out` is the output of the `GetObject`
    // operation:
    //
    //     subsegment
    //         .namespace_mut()
    //         .zip(out.request_id())
    //         .map(|(ns, id)| ns.request_id(id));

    // the subsegment will be ended and reported when it is dropped
}
§Subsegment of remote service call

Here is an example to record a subsegment of a remote service call within a Lambda function invocation intstrumented with AWS X-Ray:

use xray_lite::{Context, DaemonClient, RemoteNamespace, SubsegmentContext};

fn main() {
   // reads AWS_XRAY_DAEMON_ADDRESS
   let client = DaemonClient::from_lambda_env().unwrap();
   // reads _X_AMZN_TRACE_ID
   let context = SubsegmentContext::from_lambda_env(client).unwrap();

   do_some_request(&context);
}

fn do_some_request(context: &impl Context) {
    // subsegment will have the name "readme example",
    // `http.request.method` "POST", and `http.request.url` "https://codemonger.io/"
    let subsegment = context.enter_subsegment(RemoteNamespace::new(
        "readme example",
        "GET",
        "https://codemonger.io/",
    ));

    // do some request ...

    // the subsegment will be ended and reported when it is dropped
}
§Custom subsegment

Here is an example to record a custom subsegment within a Lambda function invocation intstrumented with AWS X-Ray:

use xray_lite::{Context, DaemonClient, CustomNamespace, SubsegmentContext};

fn main() {
   // reads AWS_XRAY_DAEMON_ADDRESS
   let client = DaemonClient::from_lambda_env().unwrap();
   // reads _X_AMZN_TRACE_ID
   let context = SubsegmentContext::from_lambda_env(client).unwrap()
       .with_name_prefix("readme_example.");

   do_something(&context);
}

fn do_something(context: &impl Context) {
    // subsegment will have the name "readme_example.do_something"
    let subsegment = context.enter_subsegment(CustomNamespace::new("do_something"));

    // do some thing ...

    // the subsegment will be ended and reported when it is dropped
}

§Acknowledgements

This crate is based on the great work by Doug Tangren (softprops).

Structs§

  • Context information about the AWS environment this segment was run in
  • Namespace for an AWS service.
  • Information about an AWS operation
  • Namespace for a custom subsegment.
  • X-Ray daemon client.
  • Information about an EC2 instance.
  • Information about an Amazon ECS container.
  • Information about an Elastic Beanstalk environment. You can find this information in a file named /var/elasticbeanstalk/xray/environment.conf on the latest Elastic Beanstalk platforms.
  • Detailed representation of an exception
  • Parsed representation of X-Amzn-Trace-Id request header
  • Describes an http request/response cycle
  • Namespace for an arbitrary remote service.
  • Information about a request.
  • Information about a response.
  • Represents fractional seconds since the epoch These can be derived from std::time::Duration and be converted too std::time::Duration
  • Description of an internal application operation which may be an extension of an external operation
  • An object with information about your application.
  • Information about a SQL operation
  • A summary of a single operation within a stack trace
  • Record information about the AWS services and resources that your application accesses. X-Ray uses this information to create inferred segments that represent the downstream services in your service map.
  • Context as a subsegment of an existing segment.
  • Metadata about the type and version of instrumentation used.

Enums§

Traits§

Type Aliases§