From 69e8077caa2949d2243ccd998a66b88c900b7744 Mon Sep 17 00:00:00 2001 From: Marylia Gutierrez Date: Tue, 9 Apr 2024 18:46:46 -0400 Subject: [PATCH] docs(resource-detector-aws): update readme for aws resource detector (#2060) Refs: #2055 Signed-off-by: maryliag --- .../README.md | 85 +++++++++++++++++-- 1 file changed, 78 insertions(+), 7 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-aws/README.md b/detectors/node/opentelemetry-resource-detector-aws/README.md index 690c25700d..aeb075c237 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/README.md +++ b/detectors/node/opentelemetry-resource-detector-aws/README.md @@ -33,13 +33,84 @@ const tracerProvider = new NodeTracerProvider({ resource }); ## Available detectors -- `awsBeanstalkDetector`: Populates `service` for processes running on [AWS Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) -- `awsEc2Detector`: Populates `cloud` and `host` for processes running on [Amazon EC2](https://aws.amazon.com/ec2/), including abstractions such as ECS on EC2. Notably, it does not populate anything on AWS Fargate -- `awsEcsDetector`: Populates `container` for containers running on [Amazon ECS](https://aws.amazon.com/ecs/) -- `awsEksDetector`: Populates `container` and `k8s.cluster_name` for containers running on [Amazon EKS](https://aws.amazon.com/eks/) - - `k8s.cluster_name` is not always available depending on the configuration of CloudWatch monitoring for the EKS cluster -- `awsLambdaDetector`: Populates `faas` and `cloud` for functions running on [AWS Lambda](https://aws.amazon.com/lambda/) - - `faas.id` is currently not populated as it is not provided by the runtime at startup +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +### AWS Beanstalk Detector + +Populates `service` for processes running on [AWS Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) + +| 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](https://aws.amazon.com/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](https://aws.amazon.com/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` | +| container.id | Value of 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](https://aws.amazon.com/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](https://aws.amazon.com/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