Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e393c3af3f
commit
4978089aab
4963 changed files with 677545 additions and 0 deletions
154
plugins/parsers/openmetrics/README.md
Normal file
154
plugins/parsers/openmetrics/README.md
Normal file
|
@ -0,0 +1,154 @@
|
|||
# OpenMetrics Format Parser Plugin
|
||||
|
||||
This plugin allows to parse the [OpenMetrics Text Format][] into Telegraf
|
||||
metrics. It is used internally in [prometheus input](/plugins/inputs/prometheus)
|
||||
but can also be used by e.g.
|
||||
[http_listener_v2](/plugins/inputs/http_listener_v2) to simulate a Pushgateway.
|
||||
|
||||
The plugin allows to output different metric formats as described in the
|
||||
[Metric Formats section](#metric-formats).
|
||||
|
||||
[OpenMetrics Text Format]: https://github.com/prometheus/OpenMetrics/blob/v1.0.0/specification/OpenMetrics.md
|
||||
|
||||
## Configuration
|
||||
|
||||
```toml
|
||||
[[inputs.file]]
|
||||
files = ["example"]
|
||||
|
||||
## Data format to consume.
|
||||
## Each data format has its own unique set of configuration options, read
|
||||
## more about them here:
|
||||
## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
|
||||
data_format = "openmetrics"
|
||||
|
||||
```
|
||||
|
||||
## Metric Formats
|
||||
|
||||
The metric_version setting controls how telegraf translates OpenMetrics'
|
||||
metrics to Telegraf metrics. There are two options.
|
||||
|
||||
### `v1` format
|
||||
|
||||
In this version, the OpenMetrics metric-family name becomes the Telegraf metric
|
||||
name, labels become tags and values become fields. The fields are named based
|
||||
on the type of the OpenMetric metric. This option produces metrics that are
|
||||
dense (contrary to the sparse metrics of`v2`).
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
# TYPE acme_http_router_request_seconds summary
|
||||
# UNIT acme_http_router_request_seconds seconds
|
||||
# HELP acme_http_router_request_seconds Latency though all of ACME's HTTP request router.
|
||||
acme_http_router_request_seconds_sum{path="/api/v1",method="GET"} 9036.32
|
||||
acme_http_router_request_seconds_count{path="/api/v1",method="GET"} 807283.0
|
||||
acme_http_router_request_seconds{path="/api/v1",method="GET",quantile="0.5"} 1.29854
|
||||
acme_http_router_request_seconds{path="/api/v1",method="GET",quantile="0.9"} 54.85479
|
||||
acme_http_router_request_seconds{path="/api/v1",method="GET",quantile="0.99"} 6884.32324
|
||||
acme_http_router_request_seconds_created{path="/api/v1",method="GET"} 1605281325.0
|
||||
acme_http_router_request_seconds_sum{path="/api/v2",method="POST"} 479.3
|
||||
acme_http_router_request_seconds_count{path="/api/v2",method="POST"} 34.0
|
||||
acme_http_router_request_seconds_created{path="/api/v2",method="POST"} 1605281325.0
|
||||
acme_http_router_request_seconds{path="/api/v2",method="POST",quantile="0.5"} 0.85412
|
||||
acme_http_router_request_seconds{path="/api/v2",method="POST",quantile="0.9"} 1.15429
|
||||
acme_http_router_request_seconds{path="/api/v2",method="POST",quantile="0.99"} 3698.48132
|
||||
# TYPE go_goroutines gauge
|
||||
# HELP go_goroutines Number of goroutines that currently exist.
|
||||
go_goroutines 69
|
||||
# TYPE process_cpu_seconds counter
|
||||
# UNIT process_cpu_seconds seconds
|
||||
# HELP process_cpu_seconds Total user and system CPU time spent in seconds.
|
||||
process_cpu_seconds_total 4.20072246e+06
|
||||
# EOF```
|
||||
|
||||
becomes
|
||||
|
||||
```text
|
||||
acme_http_router_request_seconds,unit=seconds,path=/api/v1,method=GET sum=9036.32,count=807283.0,created=1605281325.0,0.5=1.29854,0.9=54.85479,0.99=6884.32324
|
||||
acme_http_router_request_seconds,unit=seconds,path=/api/v2,method=POST sum=479.3,count=34.0,created=1605281325.0,0.5=0.85412,0.9=1.15429,0.99=3698.48132
|
||||
go_goroutines gauge=69
|
||||
process_cpu_seconds,unit=seconds counter=4200722.46
|
||||
```
|
||||
|
||||
This is especially useful and efficient for outputs with row-oriented data
|
||||
models.
|
||||
|
||||
### `v2` format
|
||||
|
||||
In this version, each OpenMetrics MetricPoint becomes a Telegraf metric with
|
||||
a few exceptions for complex types like histograms. All Telegraf metrics are
|
||||
named `prometheus` with OpenMetrics' labels become tags and the field-name is
|
||||
based on the OpenMetrics metric-name.
|
||||
|
||||
Example:
|
||||
|
||||
Example:
|
||||
|
||||
```text
|
||||
# TYPE acme_http_router_request_seconds summary
|
||||
# UNIT acme_http_router_request_seconds seconds
|
||||
# HELP acme_http_router_request_seconds Latency though all of ACME's HTTP request router.
|
||||
acme_http_router_request_seconds_sum{path="/api/v1",method="GET"} 9036.32
|
||||
acme_http_router_request_seconds_count{path="/api/v1",method="GET"} 807283.0
|
||||
acme_http_router_request_seconds{path="/api/v1",method="GET",quantile="0.5"} 1.29854
|
||||
acme_http_router_request_seconds{path="/api/v1",method="GET",quantile="0.9"} 54.85479
|
||||
acme_http_router_request_seconds{path="/api/v1",method="GET",quantile="0.99"} 6884.32324
|
||||
acme_http_router_request_seconds_created{path="/api/v1",method="GET"} 1605281325.0
|
||||
acme_http_router_request_seconds_sum{path="/api/v2",method="POST"} 479.3
|
||||
acme_http_router_request_seconds_count{path="/api/v2",method="POST"} 34.0
|
||||
acme_http_router_request_seconds_created{path="/api/v2",method="POST"} 1605281325.0
|
||||
acme_http_router_request_seconds{path="/api/v2",method="POST",quantile="0.5"} 0.85412
|
||||
acme_http_router_request_seconds{path="/api/v2",method="POST",quantile="0.9"} 1.15429
|
||||
acme_http_router_request_seconds{path="/api/v2",method="POST",quantile="0.99"} 3698.48132
|
||||
# TYPE go_goroutines gauge
|
||||
# HELP go_goroutines Number of goroutines that currently exist.
|
||||
go_goroutines 69
|
||||
# TYPE process_cpu_seconds counter
|
||||
# UNIT process_cpu_seconds seconds
|
||||
# HELP process_cpu_seconds Total user and system CPU time spent in seconds.
|
||||
process_cpu_seconds_total 4.20072246e+06
|
||||
# EOF```
|
||||
|
||||
becomes
|
||||
|
||||
```text
|
||||
prometheus,method=GET,path=/api/v1,unit=seconds acme_http_router_request_seconds_count=807283,acme_http_router_request_seconds_created=1605281325,acme_http_router_request_seconds_sum=9036.32
|
||||
prometheus,method=GET,path=/api/v1,quantile=0.5,unit=seconds acme_http_router_request_seconds=1.29854
|
||||
prometheus,method=GET,path=/api/v1,quantile=0.9,unit=seconds acme_http_router_request_seconds=54.85479
|
||||
prometheus,method=GET,path=/api/v1,quantile=0.99,unit=seconds acme_http_router_request_seconds=6884.32324
|
||||
prometheus,method=POST,path=/api/v2,unit=seconds acme_http_router_request_seconds_count=34,acme_http_router_request_seconds_created=1605281325,acme_http_router_request_seconds_sum=479.3
|
||||
prometheus,method=POST,path=/api/v2,quantile=0.5,unit=seconds acme_http_router_request_seconds=0.85412
|
||||
prometheus,method=POST,path=/api/v2,quantile=0.9,unit=seconds acme_http_router_request_seconds=1.15429
|
||||
prometheus,method=POST,path=/api/v2,quantile=0.99,unit=seconds acme_http_router_request_seconds=3698.48132
|
||||
prometheus go_goroutines=69
|
||||
prometheus,unit=seconds process_cpu_seconds=4200722.46
|
||||
```
|
||||
|
||||
The resulting metrics are sparse, but for some outputs they may be easier to
|
||||
process or query, including those that are more efficient with column-oriented
|
||||
data. The telegraf metric name is the same for all metrics in the input
|
||||
instance. It can be set with the `name_override` setting and defaults to
|
||||
"prometheus". To have multiple metric names, you can use multiple instances of
|
||||
the plugin, each with its own `name_override`.
|
||||
|
||||
`metric_version = 2` uses the same histogram format as the histogram aggregator
|
||||
|
||||
## Regenerating OpenMetrics code
|
||||
|
||||
Download the latest version of the protocol-buffer definition
|
||||
|
||||
```text
|
||||
wget https://raw.githubusercontent.com/OpenObservability/OpenMetrics/main/proto/openmetrics_data_model.proto
|
||||
```
|
||||
|
||||
and generate the go-code for the definition using
|
||||
|
||||
```text
|
||||
protoc --proto_path=. \
|
||||
--go_out=. \
|
||||
--go_opt=paths=source_relative \
|
||||
--go_opt=Mopenmetrics_data_model.proto=github.com/influxdata/telegraf/plugins/parsers/openmetrics \
|
||||
openmetrics_data_model.proto
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue