Generate FaaS metrics semconv from YAML (#88)
This commit is contained in:
parent
007a4a8bed
commit
9d45283f7a
|
|
@ -17,6 +17,10 @@ release.
|
|||
([#224](https://github.com/open-telemetry/semantic-conventions/pull/224))
|
||||
- Update HTTP `network.protocol.version` examples to match HTTP RFCs.
|
||||
([#228](https://github.com/open-telemetry/semantic-conventions/pull/228))
|
||||
- Generate FaaS metric semantic conventions from YAML.
|
||||
([#88](https://github.com/open-telemetry/semantic-conventions/pull/88))
|
||||
The conventions cover metrics that are recorded by the FaaS itself and not by
|
||||
clients invoking them.
|
||||
|
||||
## v1.21.0 (2023-07-13)
|
||||
|
||||
|
|
|
|||
|
|
@ -13,15 +13,21 @@ The conventions described in this section are FaaS (function as a service) speci
|
|||
metric events about those operations will be generated and reported to provide insights into the
|
||||
operations. By adding FaaS attributes to metric events it allows for finely tuned filtering.
|
||||
|
||||
**Disclaimer:** These are initial FaaS metric instruments and attributes but more may be added in the future.
|
||||
|
||||
<!-- Re-generate TOC with `markdown-toc --no-first-h1 -i` -->
|
||||
|
||||
<!-- toc -->
|
||||
|
||||
- [Metric Instruments](#metric-instruments)
|
||||
* [FaaS Invocations](#faas-invocations)
|
||||
- [Attributes](#attributes)
|
||||
* [FaaS Instance](#faas-instance)
|
||||
+ [Metric: `faas.invoke_duration`](#metric-faasinvoke_duration)
|
||||
+ [Metric: `faas.init_duration`](#metric-faasinit_duration)
|
||||
+ [Metric: `faas.coldstarts`](#metric-faascoldstarts)
|
||||
+ [Metric: `faas.errors`](#metric-faaserrors)
|
||||
+ [Metric: `faas.invocations`](#metric-faasinvocations)
|
||||
+ [Metric: `faas.timeouts`](#metric-faastimeouts)
|
||||
+ [Metric: `faas.mem_usage`](#metric-faasmem_usage)
|
||||
+ [Metric: `faas.cpu_usage`](#metric-faascpu_usage)
|
||||
+ [Metric: `faas.net_io`](#metric-faasnet_io)
|
||||
- [References](#references)
|
||||
* [Metric References](#metric-references)
|
||||
|
||||
|
|
@ -29,45 +35,245 @@ operations. By adding FaaS attributes to metric events it allows for finely tune
|
|||
|
||||
## Metric Instruments
|
||||
|
||||
The following metric instruments MUST be used to describe FaaS operations. They MUST be of the specified
|
||||
type and units.
|
||||
The following metric instruments describe FaaS operations.
|
||||
|
||||
### FaaS Invocations
|
||||
### FaaS Instance
|
||||
|
||||
Below is a table of FaaS invocation metric instruments.
|
||||
The following metrics are recorded by the FaaS instance.
|
||||
|
||||
| Name | Instrument Type ([*](/docs/general/metrics.md#instrument-types)) | Unit | Unit ([UCUM](/docs/general/metrics.md#instrument-units)) | Description |
|
||||
|------------------------|---------------------------------------------------|--------------|-------------------------------------------|------------------------------------------------------------------------------|
|
||||
| `faas.invoke_duration` | Histogram | milliseconds | `ms` | Measures the duration of the invocation |
|
||||
| `faas.init_duration` | Histogram | milliseconds | `ms` | Measures the duration of the function's initialization, such as a cold start |
|
||||
| `faas.coldstarts` | Counter | default unit | `{coldstart}` | Number of invocation cold starts. |
|
||||
| `faas.errors` | Counter | default unit | `{error}` | Number of invocation errors. |
|
||||
| `faas.invocations` | Counter | default unit | `{invocation}` | Number of successful invocations. |
|
||||
| `faas.timeouts` | Counter | default unit | `{timeout}` | Number of invocation timeouts. |
|
||||
#### Metric: `faas.invoke_duration`
|
||||
|
||||
Optionally, when applicable:
|
||||
This metric is [recommended][MetricRecommended].
|
||||
|
||||
| Name | Instrument Type ([*](/docs/general/metrics.md#instrument-types)) | Unit | Unit ([UCUM](/docs/general/metrics.md#instrument-units)) | Description |
|
||||
|------------------|---------------------------------------------------|--------------|-------------------------------------------|-------------------------------------------------|
|
||||
| `faas.mem_usage` | Histogram | Bytes | `By` | Distribution of max memory usage per invocation |
|
||||
| `faas.cpu_usage` | Histogram | milliseconds | `ms` | Distribution of CPU usage per invocation |
|
||||
| `faas.net_io` | Histogram | Bytes | `By` | Distribution of net I/O usage per invocation |
|
||||
<!-- semconv metric.faas.invoke_duration(metric_table) -->
|
||||
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||
| -------- | --------------- | ----------- | -------------- |
|
||||
| `faas.invoke_duration` | Histogram | `ms` | Measures the duration of the function's logic execution |
|
||||
<!-- endsemconv -->
|
||||
|
||||
## Attributes
|
||||
<!-- semconv metric.faas.invoke_duration(full) -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `faas.trigger` | string | Type of the trigger which caused this function invocation. | `datasource` | Recommended |
|
||||
|
||||
Below is a table of the attributes to be included on FaaS metric events.
|
||||
`faas.trigger` MUST be one of the following:
|
||||
|
||||
| Name | Requirement Level | Notes and examples |
|
||||
|-------------------------|-------------------|--------------------------------------------------------------------------------------------------------------------------|
|
||||
| `faas.trigger` | Required | Type of the trigger on which the function is invoked. SHOULD be one of: `datasource`, `http`, `pubsub`, `timer`, `other` |
|
||||
| `faas.invoked_name` | Required | Name of the invoked function. Example: `my-function` |
|
||||
| `faas.invoked_provider` | Required | Cloud provider of the invoked function. Corresponds to the resource `cloud.provider`. Example: `aws` |
|
||||
| `faas.invoked_region` | Required | Cloud provider region of invoked function. Corresponds to resource `cloud.region`. Example: `us-east-1` |
|
||||
| Value | Description |
|
||||
|---|---|
|
||||
| `datasource` | A response to some data source operation such as a database or filesystem read/write |
|
||||
| `http` | To provide an answer to an inbound HTTP request |
|
||||
| `pubsub` | A function is set to be executed when messages are sent to a messaging system |
|
||||
| `timer` | A function is scheduled to be executed regularly |
|
||||
| `other` | If none of the others apply |
|
||||
<!-- endsemconv -->
|
||||
|
||||
More details on these attributes, the function name and the difference compared to the faas.invoked_name can be found at the related [FaaS tracing specification](faas-spans.md).
|
||||
For incoming FaaS invocations, the function for which metrics are reported is already described by its [FaaS resource attributes](../resource/faas.md).
|
||||
Outgoing FaaS invocations are identified using the `faas.invoked_*` attributes above.
|
||||
`faas.trigger` SHOULD be included in all metric events while `faas.invoked_*` attributes apply on outgoing FaaS invocation events only.
|
||||
#### Metric: `faas.init_duration`
|
||||
|
||||
This metric is [recommended][MetricRecommended].
|
||||
|
||||
<!-- semconv metric.faas.init_duration(metric_table) -->
|
||||
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||
| -------- | --------------- | ----------- | -------------- |
|
||||
| `faas.init_duration` | Histogram | `ms` | Measures the duration of the function's initialization, such as a cold start |
|
||||
<!-- endsemconv -->
|
||||
|
||||
<!-- semconv metric.faas.init_duration(full) -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `faas.trigger` | string | Type of the trigger which caused this function invocation. | `datasource` | Recommended |
|
||||
|
||||
`faas.trigger` MUST be one of the following:
|
||||
|
||||
| Value | Description |
|
||||
|---|---|
|
||||
| `datasource` | A response to some data source operation such as a database or filesystem read/write |
|
||||
| `http` | To provide an answer to an inbound HTTP request |
|
||||
| `pubsub` | A function is set to be executed when messages are sent to a messaging system |
|
||||
| `timer` | A function is scheduled to be executed regularly |
|
||||
| `other` | If none of the others apply |
|
||||
<!-- endsemconv -->
|
||||
|
||||
#### Metric: `faas.coldstarts`
|
||||
|
||||
This metric is [recommended][MetricRecommended].
|
||||
|
||||
<!-- semconv metric.faas.coldstarts(metric_table) -->
|
||||
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||
| -------- | --------------- | ----------- | -------------- |
|
||||
| `faas.coldstarts` | Counter | `{coldstart}` | Number of invocation cold starts |
|
||||
<!-- endsemconv -->
|
||||
|
||||
<!-- semconv metric.faas.coldstarts(full) -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `faas.trigger` | string | Type of the trigger which caused this function invocation. | `datasource` | Recommended |
|
||||
|
||||
`faas.trigger` MUST be one of the following:
|
||||
|
||||
| Value | Description |
|
||||
|---|---|
|
||||
| `datasource` | A response to some data source operation such as a database or filesystem read/write |
|
||||
| `http` | To provide an answer to an inbound HTTP request |
|
||||
| `pubsub` | A function is set to be executed when messages are sent to a messaging system |
|
||||
| `timer` | A function is scheduled to be executed regularly |
|
||||
| `other` | If none of the others apply |
|
||||
<!-- endsemconv -->
|
||||
|
||||
#### Metric: `faas.errors`
|
||||
|
||||
This metric is [recommended][MetricRecommended].
|
||||
|
||||
<!-- semconv metric.faas.errors(metric_table) -->
|
||||
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||
| -------- | --------------- | ----------- | -------------- |
|
||||
| `faas.errors` | Counter | `{error}` | Number of invocation errors |
|
||||
<!-- endsemconv -->
|
||||
|
||||
<!-- semconv metric.faas.errors(full) -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `faas.trigger` | string | Type of the trigger which caused this function invocation. | `datasource` | Recommended |
|
||||
|
||||
`faas.trigger` MUST be one of the following:
|
||||
|
||||
| Value | Description |
|
||||
|---|---|
|
||||
| `datasource` | A response to some data source operation such as a database or filesystem read/write |
|
||||
| `http` | To provide an answer to an inbound HTTP request |
|
||||
| `pubsub` | A function is set to be executed when messages are sent to a messaging system |
|
||||
| `timer` | A function is scheduled to be executed regularly |
|
||||
| `other` | If none of the others apply |
|
||||
<!-- endsemconv -->
|
||||
|
||||
#### Metric: `faas.invocations`
|
||||
|
||||
This metric is [recommended][MetricRecommended].
|
||||
|
||||
<!-- semconv metric.faas.invocations(metric_table) -->
|
||||
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||
| -------- | --------------- | ----------- | -------------- |
|
||||
| `faas.invocations` | Counter | `{invocation}` | Number of successful invocations |
|
||||
<!-- endsemconv -->
|
||||
|
||||
<!-- semconv metric.faas.invocations(full) -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `faas.trigger` | string | Type of the trigger which caused this function invocation. | `datasource` | Recommended |
|
||||
|
||||
`faas.trigger` MUST be one of the following:
|
||||
|
||||
| Value | Description |
|
||||
|---|---|
|
||||
| `datasource` | A response to some data source operation such as a database or filesystem read/write |
|
||||
| `http` | To provide an answer to an inbound HTTP request |
|
||||
| `pubsub` | A function is set to be executed when messages are sent to a messaging system |
|
||||
| `timer` | A function is scheduled to be executed regularly |
|
||||
| `other` | If none of the others apply |
|
||||
<!-- endsemconv -->
|
||||
|
||||
#### Metric: `faas.timeouts`
|
||||
|
||||
This metric is [recommended][MetricRecommended].
|
||||
|
||||
<!-- semconv metric.faas.timeouts(metric_table) -->
|
||||
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||
| -------- | --------------- | ----------- | -------------- |
|
||||
| `faas.timeouts` | Counter | `{timeout}` | Number of invocation timeouts |
|
||||
<!-- endsemconv -->
|
||||
|
||||
<!-- semconv metric.faas.timeouts(full) -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `faas.trigger` | string | Type of the trigger which caused this function invocation. | `datasource` | Recommended |
|
||||
|
||||
`faas.trigger` MUST be one of the following:
|
||||
|
||||
| Value | Description |
|
||||
|---|---|
|
||||
| `datasource` | A response to some data source operation such as a database or filesystem read/write |
|
||||
| `http` | To provide an answer to an inbound HTTP request |
|
||||
| `pubsub` | A function is set to be executed when messages are sent to a messaging system |
|
||||
| `timer` | A function is scheduled to be executed regularly |
|
||||
| `other` | If none of the others apply |
|
||||
<!-- endsemconv -->
|
||||
|
||||
#### Metric: `faas.mem_usage`
|
||||
|
||||
This metric is [recommended][MetricRecommended].
|
||||
|
||||
<!-- semconv metric.faas.mem_usage(metric_table) -->
|
||||
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||
| -------- | --------------- | ----------- | -------------- |
|
||||
| `faas.mem_usage` | Histogram | `By` | Distribution of max memory usage per invocation |
|
||||
<!-- endsemconv -->
|
||||
|
||||
<!-- semconv metric.faas.mem_usage(full) -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `faas.trigger` | string | Type of the trigger which caused this function invocation. | `datasource` | Recommended |
|
||||
|
||||
`faas.trigger` MUST be one of the following:
|
||||
|
||||
| Value | Description |
|
||||
|---|---|
|
||||
| `datasource` | A response to some data source operation such as a database or filesystem read/write |
|
||||
| `http` | To provide an answer to an inbound HTTP request |
|
||||
| `pubsub` | A function is set to be executed when messages are sent to a messaging system |
|
||||
| `timer` | A function is scheduled to be executed regularly |
|
||||
| `other` | If none of the others apply |
|
||||
<!-- endsemconv -->
|
||||
|
||||
#### Metric: `faas.cpu_usage`
|
||||
|
||||
This metric is [recommended][MetricRecommended].
|
||||
|
||||
<!-- semconv metric.faas.cpu_usage(metric_table) -->
|
||||
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||
| -------- | --------------- | ----------- | -------------- |
|
||||
| `faas.cpu_usage` | Histogram | `ms` | Distribution of CPU usage per invocation |
|
||||
<!-- endsemconv -->
|
||||
|
||||
<!-- semconv metric.faas.cpu_usage(full) -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `faas.trigger` | string | Type of the trigger which caused this function invocation. | `datasource` | Recommended |
|
||||
|
||||
`faas.trigger` MUST be one of the following:
|
||||
|
||||
| Value | Description |
|
||||
|---|---|
|
||||
| `datasource` | A response to some data source operation such as a database or filesystem read/write |
|
||||
| `http` | To provide an answer to an inbound HTTP request |
|
||||
| `pubsub` | A function is set to be executed when messages are sent to a messaging system |
|
||||
| `timer` | A function is scheduled to be executed regularly |
|
||||
| `other` | If none of the others apply |
|
||||
<!-- endsemconv -->
|
||||
|
||||
#### Metric: `faas.net_io`
|
||||
|
||||
This metric is [recommended][MetricRecommended].
|
||||
|
||||
<!-- semconv metric.faas.net_io(metric_table) -->
|
||||
| Name | Instrument Type | Unit (UCUM) | Description |
|
||||
| -------- | --------------- | ----------- | -------------- |
|
||||
| `faas.net_io` | Histogram | `By` | Distribution of net I/O usage per invocation |
|
||||
<!-- endsemconv -->
|
||||
|
||||
<!-- semconv metric.faas.net_io(full) -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `faas.trigger` | string | Type of the trigger which caused this function invocation. | `datasource` | Recommended |
|
||||
|
||||
`faas.trigger` MUST be one of the following:
|
||||
|
||||
| Value | Description |
|
||||
|---|---|
|
||||
| `datasource` | A response to some data source operation such as a database or filesystem read/write |
|
||||
| `http` | To provide an answer to an inbound HTTP request |
|
||||
| `pubsub` | A function is set to be executed when messages are sent to a messaging system |
|
||||
| `timer` | A function is scheduled to be executed regularly |
|
||||
| `other` | If none of the others apply |
|
||||
<!-- endsemconv -->
|
||||
|
||||
## References
|
||||
|
||||
|
|
@ -83,3 +289,4 @@ FaaS providers. This list is not exhaustive.
|
|||
* [OpenFaas Metrics](https://docs.openfaas.com/architecture/metrics/)
|
||||
|
||||
[DocumentStatus]: https://github.com/open-telemetry/opentelemetry-specification/tree/v1.22.0/specification/document-status.md
|
||||
[MetricRecommended]: https://github.com/open-telemetry/opentelemetry-specification/tree/v1.22.0/specification/metrics/metric-requirement-level.md#recommended
|
||||
|
|
|
|||
|
|
@ -38,24 +38,14 @@ Span `name` should be set to the function name being executed. Depending on the
|
|||
|
||||
If Spans following this convention are produced, a Resource of type `faas` MUST exist following the [Resource semantic convention](../resource/faas.md).
|
||||
|
||||
<!-- semconv faas_span -->
|
||||
<!-- semconv faas_span(full) -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `faas.trigger` | string | Type of the trigger which caused this function invocation. [1] | `datasource` | Recommended |
|
||||
| `faas.invocation_id` | string | The invocation ID of the current function invocation. | `af9d5aa4-a685-4c5f-a22b-444f80b3cc28` | Recommended |
|
||||
| [`cloud.resource_id`](../resource/cloud.md) | string | Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/en-us/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://cloud.google.com/apis/design/resource_names#full_resource_name) on GCP) [2] | `arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function`; `//run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID`; `/subscriptions/<SUBSCIPTION_GUID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<FUNCAPP>/functions/<FUNC>` | Recommended |
|
||||
| [`cloud.resource_id`](../resource/cloud.md) | string | Cloud provider-specific native identifier of the monitored cloud resource (e.g. an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) on AWS, a [fully qualified resource ID](https://learn.microsoft.com/en-us/rest/api/resources/resources/get-by-id) on Azure, a [full resource name](https://cloud.google.com/apis/design/resource_names#full_resource_name) on GCP) [1] | `arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function`; `//run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID`; `/subscriptions/<SUBSCIPTION_GUID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<FUNCAPP>/functions/<FUNC>` | Recommended |
|
||||
| `faas.trigger` | string | Type of the trigger which caused this function invocation. [2] | `datasource` | Recommended |
|
||||
|
||||
**[1]:** For the server/consumer span on the incoming side,
|
||||
`faas.trigger` MUST be set.
|
||||
|
||||
Clients invoking FaaS instances usually cannot set `faas.trigger`,
|
||||
since they would typically need to look in the payload to determine
|
||||
the event type. If clients set it, it should be the same as the
|
||||
trigger that corresponding incoming would have (i.e., this has
|
||||
nothing to do with the underlying transport used to make the API
|
||||
call to invoke the lambda, which is often HTTP).
|
||||
|
||||
**[2]:** On some cloud providers, it may not be possible to determine the full ID at startup,
|
||||
**[1]:** On some cloud providers, it may not be possible to determine the full ID at startup,
|
||||
so it may be necessary to set `cloud.resource_id` as a span attribute instead.
|
||||
|
||||
The exact value to use for `cloud.resource_id` depends on the cloud provider.
|
||||
|
|
@ -73,14 +63,24 @@ The following well-known definitions MUST be used if you set this attribute and
|
|||
This means that a span attribute MUST be used, as an Azure function app can host multiple functions that would usually share
|
||||
a TracerProvider.
|
||||
|
||||
**[2]:** For the server/consumer span on the incoming side,
|
||||
`faas.trigger` MUST be set.
|
||||
|
||||
Clients invoking FaaS instances usually cannot set `faas.trigger`,
|
||||
since they would typically need to look in the payload to determine
|
||||
the event type. If clients set it, it should be the same as the
|
||||
trigger that corresponding incoming would have (i.e., this has
|
||||
nothing to do with the underlying transport used to make the API
|
||||
call to invoke the lambda, which is often HTTP).
|
||||
|
||||
`faas.trigger` MUST be one of the following:
|
||||
|
||||
| Value | Description |
|
||||
|---|---|
|
||||
| `datasource` | A response to some data source operation such as a database or filesystem read/write. |
|
||||
| `datasource` | A response to some data source operation such as a database or filesystem read/write |
|
||||
| `http` | To provide an answer to an inbound HTTP request |
|
||||
| `pubsub` | A function is set to be executed when messages are sent to a messaging system. |
|
||||
| `timer` | A function is scheduled to be executed regularly. |
|
||||
| `pubsub` | A function is set to be executed when messages are sent to a messaging system |
|
||||
| `timer` | A function is scheduled to be executed regularly |
|
||||
| `other` | If none of the others apply |
|
||||
<!-- endsemconv -->
|
||||
|
||||
|
|
@ -158,7 +158,7 @@ The values reported by the client for the attributes listed below SHOULD be equa
|
|||
the corresponding [FaaS resource attributes][] and [Cloud resource attributes][],
|
||||
which the invoked FaaS instance reports about itself, if it's instrumented.
|
||||
|
||||
<!-- semconv faas_span.out -->
|
||||
<!-- semconv faas_span.out(full) -->
|
||||
| Attribute | Type | Description | Examples | Requirement Level |
|
||||
|---|---|---|---|---|
|
||||
| `faas.invoked_name` | string | The name of the invoked function. [1] | `my-function` | Required |
|
||||
|
|
|
|||
|
|
@ -0,0 +1,77 @@
|
|||
groups:
|
||||
- id: attributes.faas.common
|
||||
type: attribute_group
|
||||
brief: "Describes FaaS attributes."
|
||||
prefix: faas
|
||||
attributes:
|
||||
- id: trigger
|
||||
brief: 'Type of the trigger which caused this function invocation.'
|
||||
type:
|
||||
allow_custom_values: false
|
||||
members:
|
||||
- id: datasource
|
||||
value: 'datasource'
|
||||
brief: 'A response to some data source operation such as a database or filesystem read/write'
|
||||
- id: http
|
||||
value: 'http'
|
||||
brief: 'To provide an answer to an inbound HTTP request'
|
||||
- id: pubsub
|
||||
value: 'pubsub'
|
||||
brief: 'A function is set to be executed when messages are sent to a messaging system'
|
||||
- id: timer
|
||||
value: 'timer'
|
||||
brief: 'A function is scheduled to be executed regularly'
|
||||
- id: other
|
||||
value: 'other'
|
||||
brief: 'If none of the others apply'
|
||||
- id: invoked_name
|
||||
type: string
|
||||
requirement_level: required
|
||||
brief: >
|
||||
The name of the invoked function.
|
||||
note: >
|
||||
SHOULD be equal to the `faas.name` resource attribute of the
|
||||
invoked function.
|
||||
examples: 'my-function'
|
||||
- id: invoked_provider
|
||||
type:
|
||||
allow_custom_values: true
|
||||
members:
|
||||
- id: 'alibaba_cloud'
|
||||
value: 'alibaba_cloud'
|
||||
brief: 'Alibaba Cloud'
|
||||
- id: 'aws'
|
||||
value: 'aws'
|
||||
brief: 'Amazon Web Services'
|
||||
- id: 'azure'
|
||||
value: 'azure'
|
||||
brief: 'Microsoft Azure'
|
||||
- id: 'gcp'
|
||||
value: 'gcp'
|
||||
brief: 'Google Cloud Platform'
|
||||
- id: 'tencent_cloud'
|
||||
value: 'tencent_cloud'
|
||||
brief: 'Tencent Cloud'
|
||||
requirement_level: required
|
||||
brief: >
|
||||
The cloud provider of the invoked function.
|
||||
note: >
|
||||
SHOULD be equal to the `cloud.provider` resource attribute of the
|
||||
invoked function.
|
||||
- id: invoked_region
|
||||
type: string
|
||||
requirement_level:
|
||||
conditionally_required: >
|
||||
For some cloud providers, like AWS or GCP, the region in which a
|
||||
function is hosted is essential to uniquely identify the function
|
||||
and also part of its endpoint. Since it's part of the endpoint
|
||||
being called, the region is always known to clients. In these cases,
|
||||
`faas.invoked_region` MUST be set accordingly. If the region is
|
||||
unknown to the client or not required for identifying the invoked
|
||||
function, setting `faas.invoked_region` is optional.
|
||||
brief: >
|
||||
The cloud region of the invoked function.
|
||||
note: >
|
||||
SHOULD be equal to the `cloud.region` resource attribute of the
|
||||
invoked function.
|
||||
examples: 'eu-central-1'
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
groups:
|
||||
- id: metric.faas.invoke_duration
|
||||
type: metric
|
||||
metric_name: faas.invoke_duration
|
||||
brief: "Measures the duration of the function's logic execution"
|
||||
instrument: histogram
|
||||
unit: "ms"
|
||||
attributes:
|
||||
- ref: faas.trigger
|
||||
|
||||
- id: metric.faas.init_duration
|
||||
type: metric
|
||||
metric_name: faas.init_duration
|
||||
brief: "Measures the duration of the function's initialization, such as a cold start"
|
||||
instrument: histogram
|
||||
unit: "ms"
|
||||
attributes:
|
||||
- ref: faas.trigger
|
||||
|
||||
- id: metric.faas.coldstarts
|
||||
type: metric
|
||||
metric_name: faas.coldstarts
|
||||
brief: "Number of invocation cold starts"
|
||||
instrument: counter
|
||||
unit: "{coldstart}"
|
||||
attributes:
|
||||
- ref: faas.trigger
|
||||
|
||||
- id: metric.faas.errors
|
||||
type: metric
|
||||
metric_name: faas.errors
|
||||
brief: "Number of invocation errors"
|
||||
instrument: counter
|
||||
unit: "{error}"
|
||||
attributes:
|
||||
- ref: faas.trigger
|
||||
|
||||
- id: metric.faas.invocations
|
||||
type: metric
|
||||
metric_name: faas.invocations
|
||||
brief: "Number of successful invocations"
|
||||
instrument: counter
|
||||
unit: "{invocation}"
|
||||
attributes:
|
||||
- ref: faas.trigger
|
||||
|
||||
- id: metric.faas.timeouts
|
||||
type: metric
|
||||
metric_name: faas.timeouts
|
||||
brief: "Number of invocation timeouts"
|
||||
instrument: counter
|
||||
unit: "{timeout}"
|
||||
attributes:
|
||||
- ref: faas.trigger
|
||||
|
||||
- id: metric.faas.mem_usage
|
||||
type: metric
|
||||
metric_name: faas.mem_usage
|
||||
brief: "Distribution of max memory usage per invocation"
|
||||
instrument: histogram
|
||||
unit: "By"
|
||||
attributes:
|
||||
- ref: faas.trigger
|
||||
|
||||
- id: metric.faas.cpu_usage
|
||||
type: metric
|
||||
metric_name: faas.cpu_usage
|
||||
brief: "Distribution of CPU usage per invocation"
|
||||
instrument: histogram
|
||||
unit: "ms"
|
||||
attributes:
|
||||
- ref: faas.trigger
|
||||
|
||||
- id: metric.faas.net_io
|
||||
type: metric
|
||||
metric_name: faas.net_io
|
||||
brief: "Distribution of net I/O usage per invocation"
|
||||
instrument: histogram
|
||||
unit: "By"
|
||||
attributes:
|
||||
- ref: faas.trigger
|
||||
|
|
@ -7,8 +7,7 @@ groups:
|
|||
runs without provisioning or managing of servers (also known as
|
||||
serverless functions or Function as a Service (FaaS)) with spans.
|
||||
attributes:
|
||||
- id: trigger
|
||||
brief: 'Type of the trigger which caused this function invocation.'
|
||||
- ref: faas.trigger
|
||||
note: |
|
||||
For the server/consumer span on the incoming side,
|
||||
`faas.trigger` MUST be set.
|
||||
|
|
@ -19,33 +18,15 @@ groups:
|
|||
trigger that corresponding incoming would have (i.e., this has
|
||||
nothing to do with the underlying transport used to make the API
|
||||
call to invoke the lambda, which is often HTTP).
|
||||
type:
|
||||
allow_custom_values: false
|
||||
members:
|
||||
- id: datasource
|
||||
value: 'datasource'
|
||||
brief: 'A response to some data source operation such as a database or filesystem read/write.'
|
||||
- id: http
|
||||
value: 'http'
|
||||
brief: 'To provide an answer to an inbound HTTP request'
|
||||
- id: pubsub
|
||||
value: 'pubsub'
|
||||
brief: 'A function is set to be executed when messages are sent to a messaging system.'
|
||||
- id: timer
|
||||
value: 'timer'
|
||||
brief: 'A function is scheduled to be executed regularly.'
|
||||
- id: other
|
||||
value: 'other'
|
||||
brief: 'If none of the others apply'
|
||||
- id: invocation_id
|
||||
type: string
|
||||
brief: 'The invocation ID of the current function invocation.'
|
||||
examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
|
||||
- ref: cloud.resource_id
|
||||
|
||||
- id: faas_span.datasource
|
||||
prefix: faas.document
|
||||
type: span
|
||||
extends: faas_span
|
||||
brief: >
|
||||
Semantic Convention for FaaS triggered as a response to some data
|
||||
source operation such as a database or filesystem read/write.
|
||||
|
|
@ -90,24 +71,23 @@ groups:
|
|||
|
||||
- id: faas_span.http
|
||||
type: span
|
||||
extends: faas_span
|
||||
brief: >
|
||||
Semantic Convention for FaaS triggered as a response to some data
|
||||
source operation such as a database or filesystem read/write.
|
||||
constraints:
|
||||
- include: trace.http.server
|
||||
attributes: []
|
||||
|
||||
- id: faas_span.pubsub
|
||||
type: span
|
||||
extends: faas_span
|
||||
brief: >
|
||||
Semantic Convention for FaaS set to be executed when messages are
|
||||
sent to a messaging system.
|
||||
constraints:
|
||||
- include: messaging
|
||||
attributes: []
|
||||
|
||||
- id: faas_span.timer
|
||||
extends: faas_span
|
||||
prefix: faas
|
||||
type: span
|
||||
brief: >
|
||||
|
|
@ -128,7 +108,6 @@ groups:
|
|||
examples: "0/5 * * * ? *"
|
||||
|
||||
- id: faas_span.in
|
||||
extends: faas_span
|
||||
span_kind: server
|
||||
prefix: faas
|
||||
type: span
|
||||
|
|
@ -142,63 +121,24 @@ groups:
|
|||
first time (aka cold-start).
|
||||
- ref: faas.trigger
|
||||
requirement_level: required
|
||||
note: |
|
||||
For the server/consumer span on the incoming side,
|
||||
`faas.trigger` MUST be set.
|
||||
|
||||
Clients invoking FaaS instances usually cannot set `faas.trigger`,
|
||||
since they would typically need to look in the payload to determine
|
||||
the event type. If clients set it, it should be the same as the
|
||||
trigger that corresponding incoming would have (i.e., this has
|
||||
nothing to do with the underlying transport used to make the API
|
||||
call to invoke the lambda, which is often HTTP).
|
||||
|
||||
- id: faas_span.out
|
||||
extends: faas_span
|
||||
span_kind: client
|
||||
prefix: faas
|
||||
type: span
|
||||
brief: >
|
||||
Contains additional attributes for outgoing FaaS spans.
|
||||
attributes:
|
||||
- id: invoked_name
|
||||
type: string
|
||||
requirement_level: required
|
||||
brief: >
|
||||
The name of the invoked function.
|
||||
note: >
|
||||
SHOULD be equal to the `faas.name` resource attribute of the
|
||||
invoked function.
|
||||
examples: 'my-function'
|
||||
- id: invoked_provider
|
||||
type:
|
||||
allow_custom_values: true
|
||||
members:
|
||||
- id: 'alibaba_cloud'
|
||||
value: 'alibaba_cloud'
|
||||
brief: 'Alibaba Cloud'
|
||||
- id: 'aws'
|
||||
value: 'aws'
|
||||
brief: 'Amazon Web Services'
|
||||
- id: 'azure'
|
||||
value: 'azure'
|
||||
brief: 'Microsoft Azure'
|
||||
- id: 'gcp'
|
||||
value: 'gcp'
|
||||
brief: 'Google Cloud Platform'
|
||||
- id: 'tencent_cloud'
|
||||
value: 'tencent_cloud'
|
||||
brief: 'Tencent Cloud'
|
||||
requirement_level: required
|
||||
brief: >
|
||||
The cloud provider of the invoked function.
|
||||
note: >
|
||||
SHOULD be equal to the `cloud.provider` resource attribute of the
|
||||
invoked function.
|
||||
- id: invoked_region
|
||||
type: string
|
||||
requirement_level:
|
||||
conditionally_required: >
|
||||
For some cloud providers, like AWS or GCP, the region in which a
|
||||
function is hosted is essential to uniquely identify the function
|
||||
and also part of its endpoint. Since it's part of the endpoint
|
||||
being called, the region is always known to clients. In these cases,
|
||||
`faas.invoked_region` MUST be set accordingly. If the region is
|
||||
unknown to the client or not required for identifying the invoked
|
||||
function, setting `faas.invoked_region` is optional.
|
||||
brief: >
|
||||
The cloud region of the invoked function.
|
||||
note: >
|
||||
SHOULD be equal to the `cloud.region` resource attribute of the
|
||||
invoked function.
|
||||
examples: 'eu-central-1'
|
||||
- ref: faas.invoked_name
|
||||
- ref: faas.invoked_provider
|
||||
- ref: faas.invoked_region
|
||||
|
|
|
|||
Loading…
Reference in New Issue