docs-v2/content/telegraf/v1/output-plugins/opentelemetry/_index.md

128 lines
4.6 KiB
Markdown

---
description: "Telegraf plugin for sending metrics to OpenTelemetry"
menu:
telegraf_v1_ref:
parent: output_plugins_reference
name: OpenTelemetry
identifier: output-opentelemetry
tags: [OpenTelemetry, "output-plugins", "configuration", "logging", "messaging"]
introduced: "v1.20.0"
os_support: "freebsd, linux, macos, solaris, windows"
related:
- /telegraf/v1/configure_plugins/
- https://github.com/influxdata/telegraf/tree/v1.36.1/plugins/outputs/opentelemetry/README.md, OpenTelemetry Plugin Source
---
# OpenTelemetry Output Plugin
This plugin writes metrics to [OpenTelemetry](https://opentelemetry.io) servers and agents
via gRPC.
**Introduced in:** Telegraf v1.20.0
**Tags:** logging, messaging
**OS support:** all
[opentelemetry]: https://opentelemetry.io
## Global configuration options <!-- @/docs/includes/plugin_config.md -->
In addition to the plugin-specific configuration settings, plugins support
additional global and plugin configuration settings. These settings are used to
modify metrics, tags, and field or create aliases and configure ordering, etc.
See the [CONFIGURATION.md](/telegraf/v1/configuration/#plugins) for more details.
[CONFIGURATION.md]: ../../../docs/CONFIGURATION.md#plugins
## Configuration
```toml @sample.conf
# Send OpenTelemetry metrics over gRPC
[[outputs.opentelemetry]]
## Override the default (localhost:4317) OpenTelemetry gRPC service
## address:port
# service_address = "localhost:4317"
## Override the default (5s) request timeout
# timeout = "5s"
## Optional TLS Config.
##
## Root certificates for verifying server certificates encoded in PEM format.
# tls_ca = "/etc/telegraf/ca.pem"
## The public and private key pairs for the client encoded in PEM format.
## May contain intermediate certificates.
# tls_cert = "/etc/telegraf/cert.pem"
# tls_key = "/etc/telegraf/key.pem"
## Use TLS, but skip TLS chain and host verification.
# insecure_skip_verify = false
## Send the specified TLS server name via SNI.
# tls_server_name = "foo.example.com"
## Override the default (gzip) compression used to send data.
## Supports: "gzip", "none"
# compression = "gzip"
## NOTE: Due to the way TOML is parsed, tables must be at the END of the
## plugin definition, otherwise additional config options are read as part of
## the table
## Configuration options for the Coralogix dialect
## Enable the following section of you use this plugin with a Coralogix endpoint
# [outputs.opentelemetry.coralogix]
# ## Your Coralogix private key (required).
# ## Please note that this is sensitive data!
# private_key = "your_coralogix_key"
#
# ## Application and subsystem names for the metrics (required)
# application = "$NAMESPACE"
# subsystem = "$HOSTNAME"
## Additional OpenTelemetry resource attributes
# [outputs.opentelemetry.attributes]
# "service.name" = "demo"
## Additional gRPC request metadata
# [outputs.opentelemetry.headers]
# key1 = "value1"
```
## Supported dialects
### Coralogix
This plugins supports sending data to a [Coralogix](https://coralogix.com)
server by enabling the corresponding dialect by uncommenting
the `[output.opentelemetry.coralogix]` section.
There, you can find the required setting to interact with the server.
- The `private_key` is your Private Key, which you can find in
`Settings > Send Your Data`.
- The `application`, is your application name, which will be added to your
`metric attributes`.
- The `subsystem`, is your subsystem, which will be added to your metric
attributes.
More information in the
[Getting Started page](https://coralogix.com/docs/guide-first-steps-coralogix/).
### Schema
The InfluxDB->OpenTelemetry conversion [schema](https://github.com/influxdata/influxdb-observability/blob/main/docs/index.md) and [implementation](https://github.com/influxdata/influxdb-observability/tree/main/influx2otel) are
hosted on [GitHub](https://github.com/influxdata/influxdb-observability).
For metrics, two input schemata exist. Line protocol with measurement name
`prometheus` is assumed to have a schema matching Prometheus input
plugin when `metric_version = 2`. Line
protocol with other measurement names is assumed to have schema matching
Prometheus input plugin
- Metric name = `[measurement]_[field key]`
- Metric value = line protocol field value, cast to float
- Metric labels = line protocol tags
Also see the OpenTelemetry input plugin.
[schema]: https://github.com/influxdata/influxdb-observability/blob/main/docs/index.md
[implementation]: https://github.com/influxdata/influxdb-observability/tree/main/influx2otel
[repo]: https://github.com/influxdata/influxdb-observability