2016-11-04 14:12:22 +00:00
|
|
|
# Telegraf Aggregator & Processor Plugins
|
|
|
|
|
|
|
|
As of release 1.1.0, Telegraf has the concept of Aggregator and Processor Plugins.
|
|
|
|
|
|
|
|
These plugins sit in-between Input & Output plugins, aggregating and processing
|
|
|
|
metrics as they pass through Telegraf:
|
|
|
|
|
|
|
|
```
|
|
|
|
┌───────────┐
|
|
|
|
│ │
|
|
|
|
│ CPU │───┐
|
|
|
|
│ │ │
|
|
|
|
└───────────┘ │
|
|
|
|
│
|
|
|
|
┌───────────┐ │ ┌───────────┐
|
|
|
|
│ │ │ │ │
|
|
|
|
│ Memory │───┤ ┌──▶│ InfluxDB │
|
|
|
|
│ │ │ │ │ │
|
|
|
|
└───────────┘ │ ┌─────────────┐ ┌─────────────┐ │ └───────────┘
|
|
|
|
│ │ │ │Aggregate │ │
|
|
|
|
┌───────────┐ │ │Process │ │ - mean │ │ ┌───────────┐
|
|
|
|
│ │ │ │ - transform │ │ - quantiles │ │ │ │
|
|
|
|
│ MySQL │───┼───▶│ - decorate │────▶│ - min/max │───┼──▶│ File │
|
|
|
|
│ │ │ │ - filter │ │ - count │ │ │ │
|
|
|
|
└───────────┘ │ │ │ │ │ │ └───────────┘
|
|
|
|
│ └─────────────┘ └─────────────┘ │
|
|
|
|
┌───────────┐ │ │ ┌───────────┐
|
|
|
|
│ │ │ │ │ │
|
|
|
|
│ SNMP │───┤ └──▶│ Kafka │
|
|
|
|
│ │ │ │ │
|
|
|
|
└───────────┘ │ └───────────┘
|
|
|
|
│
|
|
|
|
┌───────────┐ │
|
|
|
|
│ │ │
|
|
|
|
│ Docker │───┘
|
|
|
|
│ │
|
|
|
|
└───────────┘
|
|
|
|
```
|
|
|
|
|
|
|
|
Both Aggregators and Processors analyze metrics as they pass through Telegraf.
|
|
|
|
|
2017-10-30 23:32:39 +00:00
|
|
|
Use [measurement filtering](CONFIGURATION.md#measurement-filtering)
|
|
|
|
to control which metrics are passed through a processor or aggregator. If a
|
|
|
|
metric is filtered out the metric bypasses the plugin and is passed downstream
|
|
|
|
to the next plugin.
|
|
|
|
|
2016-11-04 14:12:22 +00:00
|
|
|
**Processor** plugins process metrics as they pass through and immediately emit
|
|
|
|
results based on the values they process. For example, this could be printing
|
|
|
|
all metrics or adding a tag to all metrics that pass through.
|
|
|
|
|
|
|
|
**Aggregator** plugins, on the other hand, are a bit more complicated. Aggregators
|
|
|
|
are typically for emitting new _aggregate_ metrics, such as a running mean,
|
|
|
|
minimum, maximum, quantiles, or standard deviation. For this reason, all _aggregator_
|
|
|
|
plugins are configured with a `period`. The `period` is the size of the window
|
|
|
|
of metrics that each _aggregate_ represents. In other words, the emitted
|
|
|
|
_aggregate_ metric will be the aggregated value of the past `period` seconds.
|
|
|
|
Since many users will only care about their aggregates and not every single metric
|
|
|
|
gathered, there is also a `drop_original` argument, which tells Telegraf to only
|
|
|
|
emit the aggregates and not the original metrics.
|
|
|
|
|
|
|
|
**NOTE** That since aggregators only aggregate metrics within their period, that
|
|
|
|
historical data is not supported. In other words, if your metric timestamp is more
|
|
|
|
than `now() - period` in the past, it will not be aggregated. If this is a feature
|
|
|
|
that you need, please comment on this [github issue](https://github.com/influxdata/telegraf/issues/1992)
|