OpenTelemetry Resource Detector for AWS
component owners: @carolabadeer
Resource detector for Amazon Web Services.
Status
Installation
npm install --save @opentelemetry/resource-detector-aws
Usage
import { detectResources } from '@opentelemetry/resources';
import { awsEc2Detector } from '@opentelemetry/resource-detector-aws'
const resource = await detectResources({
detectors: [awsEc2Detector],
})
const tracerProvider = new NodeTracerProvider({ resource });
Available detectors
This package uses @opentelemetry/semantic-conventions
version 1.22+
, which implements Semantic Convention Version 1.7.0
AWS Beanstalk Detector
Populates service
for processes running on AWS Elastic Beanstalk
Resource Attribute | Description |
---|
cloud.platform | The cloud platform. In this context, it's always "aws_elastic_beanstalk" |
cloud.provider | The cloud provider. In this context, it's always "aws" |
service.instance.id | Value of deployment_id from config file environment.conf |
service.name | The service name. In this context, it's always "aws_elastic_beanstalk" |
service.namespace | Value of environment_name from config file environment.conf |
service.version | Value of version_label from config file environment.conf |
AWS EC2 Detector
Populates cloud
and host
for processes running on Amazon EC2, including abstractions such as ECS on EC2. Notably, it does not populate anything on AWS Fargate.
Resource Attribute | Description |
---|
cloud.account.id | Value of accountId from /latest/dynamic/instance-identity/document request |
cloud.availability_zone | Value of availabilityZone from /latest/dynamic/instance-identity/document request |
cloud.platform | The cloud platform. In this context, it's always "aws_ec2" |
cloud.provider | The cloud provider. In this context, it's always "aws" |
cloud.region | Value of region from /latest/dynamic/instance-identity/document request |
host.id | Value of instanceId from /latest/dynamic/instance-identity/document request |
host.name | Value of hostname from /latest/dynamic/instance-identity/document request |
host.type | Value of instanceType from /latest/dynamic/instance-identity/document request |
AWS ECS Detector
Populates container
for containers running on Amazon ECS.
Resource Attribute | Description |
---|
aws.ecs.container.arn | Value of ContainerARN from the request to the metadata Uri. The Metadata Uri is stored on the Environment Variable ECS_CONTAINER_METADATA_URI_V4 |
aws.ecs.cluster.arn | Value in the format ${baseArn}:cluster/${cluster} , with baseArn and cluster from a ECS_CONTAINER_METADATA_URI_V4/task request, with values from TaskARN and Cluster respectively |
aws.ecs.launchtype | Value of LaunchType from ECS_CONTAINER_METADATA_URI_V4/task request |
aws.ecs.task.arn | Value of TaskARN from ECS_CONTAINER_METADATA_URI_V4/task request |
aws.ecs.task.family | Value of Family from ECS_CONTAINER_METADATA_URI_V4/task request |
aws.ecs.task.revision | Value of Revision from ECS_CONTAINER_METADATA_URI_V4/task request |
aws.log.group.arns | Value on format arn:aws:logs:${logsRegion}:${awsAccount}:log-group:${logsGroupName} , with logsRegions and logsGroupName from logs metadata, values of awslogs-region and awslogs-group respectively, and awsAccount parsed value from the TaskARN . Logs metadata values come from LogOptions on ECS_CONTAINER_METADATA_URI_V4 request |
aws.log.group.names | Value of awslogs-group from logs metadata. Logs metadata values come from LogOptions on ECS_CONTAINER_METADATA_URI_V4 request |
aws.log.stream.arns | Value on format arn:aws:logs:${logsRegion}:${awsAccount}:log-group:${logsGroupName}:log-stream:${logsStreamName} , with logsRegions , logsGroupName and logsStreamName from logs metadata, values of awslogs-region , awslogs-group and awslogs-stream respectively, and awsAccount parsed value from the TaskARN |
aws.log.stream.names | Value of awslogs-stream from logs metadata |
cloud.account.id | Parsed value from the TaskARN |
cloud.availability_zone | Value of AvailabilityZone from ECS_CONTAINER_METADATA_URI_V4/task request. This value is not available in all Fargate runtimes |
cloud.platform | The cloud platform. In this context, it's always "aws_ecs" |
cloud.provider | The cloud provider. In this context, it's always "aws" |
cloud.region | Parsed value from the TaskARN |
cloud.resource_id | Value of ContainerARN from ECS_CONTAINER_METADATA_URI_V4/task request |
container.id | Value from file /proc/self/cgroup |
container.name | The hostname of the operating system |
AWS EKS Detector
Populates container
and k8s.cluster_name
for containers running on Amazon EKS.
k8s.cluster_name
is not always available depending on the configuration of CloudWatch monitoring for the EKS cluster.
Resource Attribute | Description |
---|
cloud.platform | The cloud platform. In this context, it's always "aws_eks" |
cloud.provider | The cloud provider. In this context, it's always "aws" |
container.id | Value from config file /proc/self/cgroup |
k8s.cluster.name | Value of cluster.name from /api/v1/namespaces/amazon-cloudwatch/configmaps/cluster-info request |
AWS Lambda Detector
Populates faas
and cloud
for functions running on AWS Lambda.
faas.id
is currently not populated as it is not provided by the runtime at startup.
Resource Attribute | Description |
---|
cloud.platform | The cloud platform. In this context, it's always "aws_lambda" |
cloud.provider | The cloud provider. In this context, it's always "aws" |
cloud.region | Value of Process Environment Variable AWS_REGION |
faas.name | Value of Process Environment Variable AWS_LAMBDA_FUNCTION_NAME |
faas.version | Value of Process Environment Variable AWS_LAMBDA_FUNCTION_VERSION |
Useful links
License
Apache 2.0 - See LICENSE for more information.