Experimental Open source

otelcol.receiver.awss3

EXPERIMENTAL: This is an experimental component. Experimental components are subject to frequent breaking changes, and may be removed with no equivalent replacement. To enable and use an experimental component, you must set the stability.level flag to experimental.

otelcol.receiver.awss3 receives traces previously stored in S3 by the AWS S3 Exporter.

Warning

otelcol.receiver.awss3 is a wrapper over the upstream OpenTelemetry Collector awss3 receiver. Bug reports or feature requests will be redirected to the upstream repository, if necessary.

The receiver has two modes of operation:

  • Time Range Mode - Specify start and end to fetch data from a specific time range.
  • SQS Message Mode - Subscribe to SQS messages to process new objects as they arrive.

The receiver supports following encodings:

  • otlp_json (OpenTelemetry Protocol format represented as json) with a suffix of .json
  • otlp_proto (OpenTelemetry Protocol format represented as Protocol Buffers) with a suffix of .binpb

Note

Currently, otelcol.receiver.awss3 receiver doesn’t support encoding extensions.

You can specify multiple otelcol.receiver.awss3 components by giving them different labels.

Usage

Alloy
otelcol.receiver.awss3 "<LABEL>" {
  start_time = "..."
  end_time = "..."

  s3downloader {
    s3_bucket = "..."
    s3_prefix = "..."
  }

  output {
    logs = [...]
    metrics = [...]
    trace = [...]
  }
}

Arguments

You can use the following arguments with otelcol.receiver.awss3:

NameTypeDescriptionDefaultRequired
start_timestringThe time at which to start retrieving data.Required if fetching by time.
end_timestringThe time at which to stop retrieving data.Required if fetching by time.

The start_time and end_time fields time format is either RFC3339, YYYY-MM-DD HH:MM or simply YYYY-MM-DD, in which case the time is assumed to be 00:00.

Note

Time-based configuration (start_time and end_time arguments) cannot be combined together with sqs block.

Refer to the upstream receiver documentation for more details.

Blocks

You can use the following blocks with otelcol.receiver.awss3:

BlockDescriptionRequired
s3downloaderConfigures S3 downloader.yes
sqsConfigures SQS queue configuration for receiving object change notification.Required if fetching by SQS notification.
outputConfigures where to send received telemetry data.yes

s3downloader

Required

The s3downloader block contains AWS S3 downloader related config to control things like bucket, prefix, batching, connections, retries, etc.

The following arguments are supported:

NameTypeDescriptionDefaultRequired
regionstringAWS region."us-east-1"no
s3_bucketstringS3 bucket.yes
s3_prefixstringPrefix for the S3 key (root directory inside bucket).yes
s3_partitionstringTime granularity of S3 key: hour or minute."minute"no
file_prefixstringFile prefix defined by user.no
endpointstringOverrides the endpoint used by the exporter instead of constructing it from region and s3_bucket.no
endpoint_partition_idstringPartition id to use if endpoint is specified."aws"no
s3_force_path_styleboolWnen enabled, forces the request to use path-style addressing.falseno

sqs

The sqs block holds SQS queue configuration for receiving object change notifications.

The following arguments are supported:

NameTypeDescriptionDefaultRequired
queue_urlstringThe URL of the SQS queue that receives S3 bucket notifications.yes
regionstringAWS region of the SQS queue.yes
endpointstringCustom endpoint for the SQS service.no
max_number_of_messagesintMaximum number of messages to retrieve in a single SQS request.10no
wait_time_secondsintWait time in seconds for long polling SQS requests.20no

Note

You must configure your S3 bucket to send event notifications to the SQS queue. Time-based configuration (start_time/end_time) and SQS configuration cannot be used together.

output

Required

The output block configures a set of components to forward resulting telemetry data to.

The following arguments are supported:

NameTypeDescriptionDefaultRequired
logslist(otelcol.Consumer)List of consumers to send logs to.[]no
metricslist(otelcol.Consumer)List of consumers to send metrics to.[]no
traceslist(otelcol.Consumer)List of consumers to send traces to.[]no

You must specify the output block, but all its arguments are optional. By default, telemetry data is dropped. Configure the metrics, logs, and traces arguments accordingly to send telemetry data to other components.

Exported fields

otelcol.receiver.awss3 doesn’t export any fields.

Component health

otelcol.receiver.awss3 is only reported as unhealthy if given an invalid configuration.

Debug information

otelcol.receiver.awss3 doesn’t expose any component-specific debug information.

Example

This example forwards received traces through a batch processor before finally sending it to an OTLP-capable endpoint:

Alloy
// Time range mode:
otelcol.receiver.awss3 "default" {
  start_time = "2024-01-01 01:00"
  end_time = "2024-01-02"

  s3downloader {
    region = "us-west-1"
    s3_bucket = "mybucket"
    s3_prefix = "trace"
    s3_partition = "minute"
  }

  output {
    traces = [otelcol.processor.batch.default.input]
  }
}

// SQS message mode:
otelcol.receiver.awss3 "sqs_traces" {
  s3downloader {
    region = "us-east-1"
    s3_bucket = "mybucket"
    s3_prefix = "mytrace"
  }

  sqs {
    queue_url = "https://sqs.us-east-1.amazonaws.com/123456789012/test-queue"
    region = "us-east-1"
  }

  output {
    traces = [otelcol.processor.batch.default.input]
  }
}

otelcol.processor.batch "default" {
  output {
    metrics = [otelcol.exporter.otlp.default.input]
    logs    = [otelcol.exporter.otlp.default.input]
    traces  = [otelcol.exporter.otlp.default.input]
  }
}

otelcol.exporter.otlp "default" {
  client {
    endpoint = sys.env("<OTLP_ENDPOINT>")
  }
}

Compatible components

otelcol.receiver.awss3 can accept arguments from the following components:

Note

Connecting some components may not be sensible or components may require further configuration to make the connection work correctly. Refer to the linked documentation for more details.