awsxrayexporter

package module
v0.0.0-...-87704df Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 30, 2021 License: Apache-2.0 Imports: 18 Imported by: 0

README

AWS X-Ray Tracing Exporter for OpenTelemetry Collector

This exporter converts OpenTelemetry spans to AWS X-Ray Segment Documents and then sends them directly to X-Ray using the PutTraceSegments API.

Data Conversion

Trace IDs and Span IDs are expected to be originally generated by either AWS API Gateway or AWS ALB and propagated by them using the X-Amzn-Trace-Id HTTP header. However, other generation sources are supported by replacing Trace IDs where necessary. For consistency, you may want to consider using the X-Ray approach if generating Trace IDs within the application.

AWS X-Ray IDs are the same size as W3C Trace Context IDs but differ in that the first 32 bits of a Trace ID is the Unix epoch time when the trace was started. Since X-Ray only allows submission of Trace IDs from the past 30 days, received Trace IDs are checked. If outside the allowed range, a replacement is generated by the exporter using the current time.

The http object is populated when the component attribute value is grpc as well as http. Other synchronous call types should also result in the http object being populated.

AWS Specific Attributes

The following AWS-specific Span attributes are supported in addition to the standard names and values defined in the OpenTelemetry Semantic Conventions.

Attribute name Notes and examples Required?
aws.operation The name of the API action invoked against an AWS service or resource. No
aws.account_id The AWS account number if accessing resource in different account. No
aws.region The AWS region if accessing resource in different region from app. No
aws.request_id AWS-generated unique identifier for the request. No
aws.queue_url For operations on an Amazon SQS queue, the queue's URL. No
aws.table_name For operations on a DynamoDB table, the name of the table. No

Any of these values supplied are used to populate the aws object in addition to any relevant data supplied by the Span Resource object. X-Ray uses this data to generate inferred segments for the remote APIs.

Exporter Configuration

The following exporter configuration parameters are supported. They mirror and have the same affect as the comparable AWS X-Ray Daemon configuration values.

Name Description Default
num_workers Maximum number of concurrent calls to AWS X-Ray to upload documents. 8
endpoint Optionally override the default X-Ray service endpoint.
request_timeout Number of seconds before timing out a request. 30
max_retries Maximun number of attempts to post a batch before failing. 2
no_verify_ssl Enable or disable TLS certificate verification. false
proxy_address Upload segments to AWS X-Ray through a proxy.
region Send segments to AWS X-Ray service in a specific region.
local_mode Local mode to skip EC2 instance metadata check. false
resource_arn Amazon Resource Name (ARN) of the AWS resource running the collector.
role_arn IAM role to upload segments to a different account.
indexed_attributes List of attribute names to be converted to X-Ray annotations.
index_all_attributes Enable or disable conversion of all OpenTelemetry attributes to X-Ray annotations. false

AWS Credential Configuration

This exporter follows default credential resolution for the aws-sdk-go.

Follow the guidelines for the credential configuration.

Documentation

Overview

Package awsxrayexporter implements an OpenTelemetry Collector exporter that sends trace data to AWS X-Ray in the region the collector is running in using the PutTraceSegments API.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsTimeoutError

func IsTimeoutError(err error) bool

IsTimeoutError checks whether error is timeout error.

func NewFactory

func NewFactory() component.ExporterFactory

NewFactory creates a factory for AWS-Xray exporter.

Types

type Config

type Config struct {
	config.ExporterSettings `mapstructure:",squash"`
	// AWSSessionSettings contains the common configuration options
	// for creating AWS session to communicate with backend
	awsutil.AWSSessionSettings `mapstructure:",squash"`
	// By default, OpenTelemetry attributes are converted to X-Ray metadata, which are not indexed.
	// Specify a list of attribute names to be converted to X-Ray annotations instead, which will be indexed.
	// See annotation vs. metadata: https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-annotations
	IndexedAttributes []string `mapstructure:"indexed_attributes"`
	// Set to true to convert all OpenTelemetry attributes to X-Ray annotation (indexed) ignoring the IndexedAttributes option.
	// Default value: false
	IndexAllAttributes bool `mapstructure:"index_all_attributes"`
}

Config defines configuration for AWS X-Ray exporter.

type XRay

type XRay interface {
	PutTraceSegments(input *xray.PutTraceSegmentsInput) (*xray.PutTraceSegmentsOutput, error)
	PutTelemetryRecords(input *xray.PutTelemetryRecordsInput) (*xray.PutTelemetryRecordsOutput, error)
}

XRay defines X-Ray api call structure.

type XRayClient

type XRayClient struct {
	// contains filtered or unexported fields
}

XRayClient represents X-Ray client.

func (*XRayClient) PutTelemetryRecords

func (c *XRayClient) PutTelemetryRecords(input *xray.PutTelemetryRecordsInput) (*xray.PutTelemetryRecordsOutput, error)

PutTelemetryRecords makes PutTelemetryRecords api call on X-Ray client.

func (*XRayClient) PutTraceSegments

func (c *XRayClient) PutTraceSegments(input *xray.PutTraceSegmentsInput) (*xray.PutTraceSegmentsOutput, error)

PutTraceSegments makes PutTraceSegments api call on X-Ray client.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL