diff --git a/cmd/otelcontribcol/builder-config.yaml b/cmd/otelcontribcol/builder-config.yaml index 88f432ab0e1e..decc95cc5242 100644 --- a/cmd/otelcontribcol/builder-config.yaml +++ b/cmd/otelcontribcol/builder-config.yaml @@ -231,6 +231,7 @@ connectors: - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/connector/routingconnector v0.112.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/connector/servicegraphconnector v0.112.0 - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector v0.112.0 + - gomod: github.com/open-telemetry/opentelemetry-collector-contrib/connector/sumconnector v0.112.0 providers: - gomod: go.opentelemetry.io/collector/confmap/provider/envprovider v1.18.0 @@ -462,6 +463,7 @@ replaces: - github.com/open-telemetry/opentelemetry-collector-contrib/connector/routingconnector => ../../connector/routingconnector - github.com/open-telemetry/opentelemetry-collector-contrib/connector/servicegraphconnector => ../../connector/servicegraphconnector - github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector => ../../connector/spanmetricsconnector + - github.com/open-telemetry/opentelemetry-collector-contrib/connector/sumconnector => ../../connector/sumconnector - github.com/openshift/api v3.9.0+incompatible => github.com/openshift/api v0.0.0-20180801171038-322a19404e37 - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure => ../../pkg/translator/azure - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azurelogs => ../../pkg/translator/azurelogs diff --git a/connector/sumconnector/README.md b/connector/sumconnector/README.md index 9d6f39bcfd40..85467bd819dd 100644 --- a/connector/sumconnector/README.md +++ b/connector/sumconnector/README.md @@ -6,15 +6,15 @@ | Issues | [![Open issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aopen%20label%3Aconnector%2Fsum%20&label=open&color=orange&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aopen+is%3Aissue+label%3Aconnector%2Fsum) [![Closed issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aclosed%20label%3Aconnector%2Fsum%20&label=closed&color=blue&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aclosed+is%3Aissue+label%3Aconnector%2Fsum) | | [Code Owners](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/CONTRIBUTING.md#becoming-a-code-owner) | [@greatestusername](https://www.github.com/greatestusername), [@shalper2](https://www.github.com/shalper2), [@crobert-1](https://www.github.com/crobert-1) | -[development]: https://github.com/open-telemetry/opentelemetry-collector#development +[alpha]: https://github.com/open-telemetry/opentelemetry-collector#alpha ## Supported Pipeline Types | [Exporter Pipeline Type] | [Receiver Pipeline Type] | [Stability Level] | | ------------------------ | ------------------------ | ----------------- | -| traces | metrics | [development] | -| metrics | metrics | [development] | -| logs | metrics | [development] | +| traces | metrics | [alpha] | +| metrics | metrics | [alpha] | +| logs | metrics | [alpha] | [Exporter Pipeline Type]: https://github.com/open-telemetry/opentelemetry-collector/blob/main/connector/README.md#exporter-pipeline-type [Receiver Pipeline Type]: https://github.com/open-telemetry/opentelemetry-collector/blob/main/connector/README.md#receiver-pipeline-type @@ -29,7 +29,7 @@ If you are not already familiar with connectors, you may find it helpful to firs ### Basic configuration -This configuration will sum numerical values found within the attribute `attribute.with.numerical.value` of any log telemetry routed to the connector. It will then output a metric time series with the name `my.example.metric.name` with those summed values. +This example configuration will sum numerical values found within the attribute `attribute.with.numerical.value` of any span telemetry routed to the connector. It will then output a metric time series with the name `my.example.metric.name` with those summed values. Note: Values found within an attribute will be converted into a float regardless of their original type before being summed and output as a metric value. Non-convertible strings will be dropped and not included. @@ -38,7 +38,7 @@ receivers: foo: connectors: sum: - logs: + spans: my.example.metric.name: source_attribute: attribute.with.numerical.value exporters: @@ -49,7 +49,7 @@ service: metrics/sum: receivers: [sum] exporters: [bar] - logs: + traces: receivers: [foo] exporters: [sum] ``` @@ -59,7 +59,9 @@ service: The sum connector has three required configuration settings and numerous optional settings - Telemetry type: Nested below the `sum:` connector declaration. Declared as `logs:` in the [Basic Example](#basic-configuration). - - Can be any of `spans`, `spanevents`, `metrics`, `datapoints`, or `logs`. + - Can be any of `spans`, `spanevents`, `datapoints`, or `logs`. + - For metrics use `datapoints` + - For traces use `spans` or `spanevents` - Metric name: Nested below the telemetry type; this is the metric name the sum connector will output summed values to. Declared as `my.example.metric.name` in the [Basic Example](#basic-configuration) - `source_attribute`: A specific attribute to search for within the source telemetry being fed to the connector. This attribute is where the connector will look for numerical values to sum into the output metric value. Declared as `attribute.with.numerical.value` in the [Basic Example](#basic-configuration) @@ -70,7 +72,7 @@ The sum connector has three required configuration settings and numerous optiona - `key`: (required for `attributes`) the attribute name to match against - `default_value`: (optional for `attributes`) a default value for the attribute when no matches are found. The `default_value` value can be of type string, integer, or float. -#### Detailed Example Configuration +### Detailed Example Configuration This example declares that the `sum` connector is going to be ingesting `logs` and creating an output metric named `checkout.total` with numerical values found in the `source_attribute` `total.payment`. @@ -102,4 +104,14 @@ service: exporters: [sum] ``` +**Note for Log to Metrics:** If your logs contain all values in their `body` rather than in attributes (E.G. JSON payload) use a transform processor in your pipeline to upsert [parsed key/value pairs](https://github.com/open-telemetry/opentelemetry-log-collection/tree/main/docs/operators) (in this case from JSON) into attributes attached to the log. +```yaml +processors: + transform/logs: + log_statements: + - context: log + statements: + - merge_maps(attributes, ParseJSON(body), "upsert") +``` + [Connectors README]: https://github.com/open-telemetry/opentelemetry-collector/blob/main/connector/README.md diff --git a/connector/sumconnector/internal/metadata/generated_status.go b/connector/sumconnector/internal/metadata/generated_status.go index d4155ac3e40a..5530f7f6b267 100644 --- a/connector/sumconnector/internal/metadata/generated_status.go +++ b/connector/sumconnector/internal/metadata/generated_status.go @@ -12,7 +12,7 @@ var ( ) const ( - TracesToMetricsStability = component.StabilityLevelDevelopment - MetricsToMetricsStability = component.StabilityLevelDevelopment - LogsToMetricsStability = component.StabilityLevelDevelopment + TracesToMetricsStability = component.StabilityLevelAlpha + MetricsToMetricsStability = component.StabilityLevelAlpha + LogsToMetricsStability = component.StabilityLevelAlpha ) diff --git a/connector/sumconnector/metadata.yaml b/connector/sumconnector/metadata.yaml index 42a50533af3d..d7e5b0b0fd01 100644 --- a/connector/sumconnector/metadata.yaml +++ b/connector/sumconnector/metadata.yaml @@ -3,7 +3,7 @@ type: sum status: class: connector stability: - development: [traces_to_metrics, metrics_to_metrics, logs_to_metrics] + alpha: [traces_to_metrics, metrics_to_metrics, logs_to_metrics] distributions: [] codeowners: active: [greatestusername, shalper2, crobert-1]