From 1373d098fb34ef461fbfac98f923cff4baa47cc4 Mon Sep 17 00:00:00 2001 From: maryliag Date: Thu, 28 Mar 2024 11:07:00 -0400 Subject: [PATCH] chore: update readme for aws resource detector Update README of AWS Resource Detector to clarify the source of the data. Part Of #2055 Signed-off-by: maryliag --- .../README.md | 74 +++++++++++++++++-- 1 file changed, 69 insertions(+), 5 deletions(-) diff --git a/detectors/node/opentelemetry-resource-detector-aws/README.md b/detectors/node/opentelemetry-resource-detector-aws/README.md index 690c25700d..c553377938 100644 --- a/detectors/node/opentelemetry-resource-detector-aws/README.md +++ b/detectors/node/opentelemetry-resource-detector-aws/README.md @@ -33,14 +33,78 @@ 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/) +### Aws Beanstalk Detector +Populates `service` for processes running on [AWS Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk/) + +| Resource Attribute | Description | +|---------------------|--------------------------------------------------------------------------| +| cloud.provider | The cloud provider. In this context, it's always "aws" | +| cloud.platform | The cloud platform. In this context, it's always "aws_elastic_beanstalk" | +| 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.provider | The cloud provider. In this context, it's always "aws" | +| cloud.platform | The cloud platform. In this context, it's always "aws_ec2" | +| 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 -- `awsLambdaDetector`: Populates `faas` and `cloud` for functions running on [AWS Lambda](https://aws.amazon.com/lambda/) + +| Resource Attribute | Description | +|--------------------|---------------------------------------------------------------------------------------| +| cloud.provider | The cloud provider. In this context, it's always "aws" | +| cloud.platform | The cloud platform. In this context, it's always "aws_eks" | +| 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.provider | The cloud provider. In this context, it's always "aws" | +| cloud.platform | The cloud platform. In this context, it's always "aws_lambda" | +| 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 - For more information on OpenTelemetry, visit: