Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(resource-detector-aws): update readme for aws resource detector #2060

Merged
merged 5 commits into from
Apr 9, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 78 additions & 7 deletions detectors/node/opentelemetry-resource-detector-aws/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Loading