Skip to content

Commit

Permalink
chore: update readme for aws resource detector
Browse files Browse the repository at this point in the history
Update README of AWS Resource Detector to clarify the source of the data.

Part Of #2055

Signed-off-by: maryliag <marylia.gutierrez@grafana.com>
  • Loading branch information
maryliag committed Mar 29, 2024
1 parent aed0f0f commit 0b2a8e0
Showing 1 changed file with 74 additions and 5 deletions.
79 changes: 74 additions & 5 deletions detectors/node/opentelemetry-resource-detector-aws/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,83 @@ 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: <https://opentelemetry.io/>
Expand Down

0 comments on commit 0b2a8e0

Please sign in to comment.