Skip to content

Commit

Permalink
proposal for cloud provider-specific resource semantic conventions
Browse files Browse the repository at this point in the history
  • Loading branch information
William Armiros committed Oct 15, 2020
1 parent 507884f commit b158045
Show file tree
Hide file tree
Showing 7 changed files with 132 additions and 2 deletions.
11 changes: 10 additions & 1 deletion semantic_conventions/resource/cloud.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ groups:
brief: 'Amazon Web Services'
- id: Azure
value: 'azure'
brief: 'Amazon Web Services'
brief: 'Microsoft Azure'
- id: GCP
value: 'gcp'
brief: 'Google Cloud Platform'
Expand All @@ -37,3 +37,12 @@ groups:
note: >
In AWS, this is called availability-zone.
examples: ['us-central1-a']
- id: infrastructure.service
type: string
brief: >
Description of cloud resource in use.
note: >
The first entry should generally be a cloud provider, followed by a product
category, then finally a particular piece of compute infrastructure. Each entry
is delimited by a double colon (::).
examples: ['AWS::EC2::Instance', 'Azure::Compute::VM', 'GCP::ComputeEngine::VM']
34 changes: 34 additions & 0 deletions semantic_conventions/resource/cloud_provider/aws/aws.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
groups:
- id: aws
prefix: aws
brief: >
Resources specific to Amazon Web Services.
attributes:
- id: loggroup.name
type: string
brief: >
The name of the AWS log group an application is writing to.
examples: ['/aws/lambda/my-function', 'opentelemetry-service']
- id: loggroup.arn
type: string
brief: >
The Amazon Resource Name (ARN) of an AWS log group.
examples: ['arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*']
note: >
See the
[log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).
- id: logstream.name
type: string
brief: >
The name of the AWS log stream an application is writing to.
examples: ['logs/main/10838bed-421f-43ef-870a-f43feacbbb5b']
- id: logstream.arn
type: string
brief: >
The ARN of the AWS log stream.
examples: ['arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b']
note: >
See the
[log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).
One log group can contain several log streams, so this ARN necessarily identifies both a log
group and a log stream.
38 changes: 38 additions & 0 deletions semantic_conventions/resource/cloud_provider/aws/ecs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
groups:
- id: aws.ecs
prefix: aws.ecs
brief: >
Resources used by AWS Elastic Container Service (ECS).
attributes:
- id: container.arn
type: string
brief: >
The ARN of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).
examples: ['arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9']
- id: cluster
type: string
brief: >
The name of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).
examples: ['opentelemetry-cluster']
- id: launchtype
type:
allow_custom_values: false
members:
- id: EC2
value: "EC2"
- id: Fargate
value: "Fargate"
brief: >
The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.
examples: ['EC2', 'Fargate']
- id: task.arn
type: string
brief: >
The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).
examples: ['arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b']
- id: task.family
type: string
brief: >
The task definition family this task definition is a member of.
examples: ['opentelemetry-family']

6 changes: 6 additions & 0 deletions specification/resource/semantic_conventions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,3 +135,9 @@ Attributes defining a running environment (e.g. Operating System, Cloud, Data Ce
Version attributes, such as `service.version`, are values of type `string`. They are
the exact version used to identify an artifact. This may be a semantic version, e.g., `1.2.3`, git hash, e.g.,
`8ae73a`, or an arbitrary version string, e.g., `0.1.2.20210101`, whatever was used when building the artifact.

## Provider-Specific Attributes

Attributes that are only applicable to resources from a specific cloud provider. Currently, these
resources can only be defined for providers listed as a valid `cloud.provider` in
[Cloud](./cloud.md). Provider-specific attributes all reside in the `cloud_provider` directory.
5 changes: 4 additions & 1 deletion specification/resource/semantic_conventions/cloud.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,17 @@
| `cloud.account.id` | string | The cloud account ID used to identify different entities. | `opentelemetry` | No |
| `cloud.region` | string | A specific geographical location where different entities can run. | `us-central1` | No |
| `cloud.zone` | string | Zones are a sub set of the region connected through low-latency links. [1] | `us-central1-a` | No |
| `cloud.infrastructure.service` | string | Description of cloud resource in use. [2] | `AWS::EC2::Instance`<br>`Azure::Compute::VM`<br>`GCP::ComputeEngine::VM` | No |

**[1]:** In AWS, this is called availability-zone.

**[2]:** The first entry should generally be a cloud provider, followed by a product category, then finally a particular piece of compute infrastructure. Each entry is delimited by a double colon (::).

`cloud.provider` MUST be one of the following or, if none of the listed values apply, a custom value:

| Value | Description |
|---|---|
| `aws` | Amazon Web Services |
| `azure` | Amazon Web Services |
| `azure` | Microsoft Azure |
| `gcp` | Google Cloud Platform |
<!-- endsemconv -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# AWS

**Type:** `aws`

**Description:** Resources specific to Amazon Web Services.

<!-- semconv aws -->
| Attribute | Type | Description | Example | Required |
|---|---|---|---|---|
| `aws.loggroup.name` | string | The name of the AWS log group an application is writing to. | `/aws/lambda/my-function`<br>`opentelemetry-service` | No |
| `aws.loggroup.arn` | string | The Amazon Resource Name (ARN) of an AWS log group. [1] | `arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*` | No |
| `aws.logstream.name` | string | The name of the AWS log stream an application is writing to. | `logs/main/10838bed-421f-43ef-870a-f43feacbbb5b` | No |
| `aws.logstream.arn` | string | The ARN of the AWS log stream. [2] | `arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b` | No |

**[1]:** See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).

**[2]:** See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so this ARN necessarily identifies both a log group and a log stream.
<!-- endsemconv -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# AWS ECS

**type:** `aws.ecs`

**Description:** Resources used by AWS Elastic Container Service (ECS).

<!-- semconv aws.ecs -->
| Attribute | Type | Description | Example | Required |
|---|---|---|---|---|
| `aws.ecs.container.arn` | string | The ARN of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html). | `arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9` | No |
| `aws.ecs.cluster` | string | The name of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html). | `opentelemetry-cluster` | No |
| `aws.ecs.launchtype` | string enum | The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task. | `EC2`<br>`Fargate` | No |
| `aws.ecs.task.arn` | string | The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html). | `arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b` | No |
| `aws.ecs.task.family` | string | The task definition family this task definition is a member of. | `opentelemetry-family` | No |

`aws.ecs.launchtype` MUST be one of the following:

| Value | Description |
|---|---|
| `EC2` | EC2 |
| `Fargate` | Fargate |
<!-- endsemconv -->

0 comments on commit b158045

Please sign in to comment.