2015-08-04 21:04:34 +00:00
# Telegraf - A native agent for InfluxDB [![Circle CI](https://circleci.com/gh/influxdb/telegraf.svg?style=svg)](https://circleci.com/gh/influxdb/telegraf)
2015-05-20 05:26:13 +00:00
2015-08-06 20:00:14 +00:00
Telegraf is an agent written in Go for collecting metrics from the system it's
2015-09-09 17:00:19 +00:00
running on, or from other services, and writing them into InfluxDB.
2015-06-19 16:34:27 +00:00
2015-08-06 20:00:14 +00:00
Design goals are to have a minimal memory footprint with a plugin system so
that developers in the community can easily add support for collecting metrics
2015-09-09 17:00:19 +00:00
from well known services (like Hadoop, Postgres, or Redis) and third party
2015-08-06 20:00:14 +00:00
APIs (like Mailchimp, AWS CloudWatch, or Google Analytics).
2015-06-19 16:34:27 +00:00
2015-08-06 20:00:14 +00:00
We'll eagerly accept pull requests for new plugins and will manage the set of
2015-09-09 17:00:19 +00:00
plugins that Telegraf supports. See the
[contributing guide ](CONTRIBUTING.md ) for instructions on
2015-08-06 20:00:14 +00:00
writing new plugins.
2015-06-19 16:34:27 +00:00
2015-09-09 17:00:19 +00:00
## Installation:
2015-05-20 05:26:13 +00:00
2015-09-09 17:00:19 +00:00
### Linux deb and rpm packages:
2015-08-20 21:18:45 +00:00
Latest:
2015-12-07 19:22:52 +00:00
* http://get.influxdb.org/telegraf/telegraf_0.2.4_amd64.deb
* http://get.influxdb.org/telegraf/telegraf-0.2.4-1.x86_64.rpm
2015-09-09 17:00:19 +00:00
##### Package instructions:
* Telegraf binary is installed in `/opt/telegraf/telegraf`
* Telegraf daemon configuration file is in `/etc/opt/telegraf/telegraf.conf`
* On sysv systems, the telegraf daemon can be controlled via
`service telegraf [action]`
* On systemd systems (such as Ubuntu 15+), the telegraf daemon can be
controlled via `systemctl [action] telegraf`
### Linux binaries:
Latest:
2015-12-07 19:22:52 +00:00
* http://get.influxdb.org/telegraf/telegraf_linux_amd64_0.2.4.tar.gz
* http://get.influxdb.org/telegraf/telegraf_linux_386_0.2.4.tar.gz
* http://get.influxdb.org/telegraf/telegraf_linux_arm_0.2.4.tar.gz
2015-09-04 20:12:50 +00:00
2015-09-09 17:00:19 +00:00
##### Binary instructions:
These are standalone binaries that can be unpacked and executed on any linux
system. They can be unpacked and renamed in a location such as
`/usr/local/bin` for convenience. A config file will need to be generated,
see "How to use it" below.
2015-06-19 16:34:27 +00:00
2015-06-20 01:53:35 +00:00
### OSX via Homebrew:
```
brew update
brew install telegraf
```
2015-12-20 06:47:15 +00:00
### Version 0.3.0 Beta
Version 0.3.0 will introduce many new breaking changes to Telegraf. For starters,
plugin measurements will be aggregated into fields. This means that there will no
longer be a `cpu_usage_idle` measurement, there will be a `cpu` measurement with
a `usage_idle` field.
There will also be config file changes, meaning that your 0.2.x Telegraf config
files will no longer work properly. It is recommended that you use the
`-sample-config` flag to generate a new config file to see what the changes are.
You can also read the
[0.3.0 configuration guide ](https://github.com/influxdb/telegraf/blob/0.3.0/CONFIGURATION.md )
to see some of the new features and options available.
You can read more about the justifications for the aggregated measurements
[here ](https://github.com/influxdb/telegraf/issues/152 ), and a more detailed
breakdown of the work [here ](https://github.com/influxdb/telegraf/pull/437 ).
Once we're closer to a full release, there will be a detailed blog post
explaining all the changes.
* http://get.influxdb.org/telegraf/telegraf_0.3.0-beta1_amd64.deb
* http://get.influxdb.org/telegraf/telegraf-0.3.0_beta1-1.x86_64.rpm
* http://get.influxdb.org/telegraf/telegraf_linux_amd64_0.3.0-beta1.tar.gz
* http://get.influxdb.org/telegraf/telegraf_linux_386_0.3.0-beta1.tar.gz
* http://get.influxdb.org/telegraf/telegraf_linux_arm_0.3.0-beta1.tar.gz
2015-08-18 16:16:59 +00:00
### From Source:
2015-12-08 23:18:23 +00:00
Telegraf manages dependencies via [gdm ](https://github.com/sparrc/gdm ),
which gets installed via the Makefile
2015-10-19 21:26:08 +00:00
if you don't have it already. You also must build with golang version 1.4+.
2015-08-26 00:16:01 +00:00
1. [Install Go ](https://golang.org/doc/install )
2. [Setup your GOPATH ](https://golang.org/doc/code.html#GOPATH )
2015-10-19 21:26:08 +00:00
3. Run `go get github.com/influxdb/telegraf`
4. Run `cd $GOPATH/src/github.com/influxdb/telegraf`
5. Run `make`
2015-08-18 16:16:59 +00:00
2015-06-20 01:53:35 +00:00
### How to use it:
2015-10-19 21:26:08 +00:00
* Run `telegraf -sample-config > telegraf.conf` to create an initial configuration.
* Or run `telegraf -sample-config -filter cpu:mem -outputfilter influxdb > telegraf.conf` .
2015-11-03 18:18:57 +00:00
to create a config file with only CPU and memory plugins defined, and InfluxDB
output defined.
2015-10-19 21:26:08 +00:00
* Edit the configuration to match your needs.
2015-11-03 18:18:57 +00:00
* Run `telegraf -config telegraf.conf -test` to output one full measurement
sample to STDOUT. NOTE: you may want to run as the telegraf user if you are using
the linux packages `sudo -u telegraf telegraf -config telegraf.conf -test`
2015-09-09 17:00:19 +00:00
* Run `telegraf -config telegraf.conf` to gather and send metrics to configured outputs.
2015-10-19 21:26:08 +00:00
* Run `telegraf -config telegraf.conf -filter system:swap` .
2015-09-22 01:38:57 +00:00
to run telegraf with only the system & swap plugins defined in the config.
2015-08-13 19:44:41 +00:00
2015-05-22 23:45:14 +00:00
## Telegraf Options
2015-05-20 05:26:13 +00:00
2015-08-06 20:00:14 +00:00
Telegraf has a few options you can configure under the `agent` section of the
2015-09-09 17:00:19 +00:00
config.
2015-05-20 05:26:13 +00:00
2015-08-06 20:00:14 +00:00
* **hostname**: The hostname is passed as a tag. By default this will be
2015-10-15 22:17:34 +00:00
the value returned by `hostname` on the machine running Telegraf.
2015-08-06 20:00:14 +00:00
You can override that value here.
2015-10-15 22:17:34 +00:00
* **interval**: How often to gather metrics. Uses a simple number +
unit parser, e.g. "10s" for 10 seconds or "5m" for 5 minutes.
2015-08-06 20:00:14 +00:00
* **debug**: Set to true to gather and send metrics to STDOUT as well as
InfluxDB.
2015-05-20 05:26:13 +00:00
## Plugin Options
2015-08-13 19:44:41 +00:00
There are 5 configuration options that are configurable per plugin:
2015-05-20 05:26:13 +00:00
2015-08-06 20:00:14 +00:00
* **pass**: An array of strings that is used to filter metrics generated by the
2015-12-07 22:37:05 +00:00
current plugin. Each string in the array is tested as a glob match against metric names
2015-08-06 20:00:14 +00:00
and if it matches, the metric is emitted.
2015-08-10 19:42:59 +00:00
* **drop**: The inverse of pass, if a metric name matches, it is not emitted.
2015-12-07 22:37:05 +00:00
* **tagpass**: tag names and arrays of strings that are used to filter metrics by the current plugin. Each string in the array is tested as a glob match against
2015-08-10 19:42:59 +00:00
the tag name, and if it matches the metric is emitted.
2015-12-07 22:37:05 +00:00
* **tagdrop**: The inverse of tagpass. If a tag matches, the metric is not emitted.
2015-08-10 19:42:59 +00:00
This is tested on metrics that have passed the tagpass test.
2015-08-06 20:00:14 +00:00
* **interval**: How often to gather this metric. Normal plugins use a single
global interval, but if one particular plugin should be run less or more often,
you can configure that here.
2015-06-19 16:38:31 +00:00
2015-08-10 20:08:21 +00:00
### Plugin Configuration Examples
2015-08-10 19:42:59 +00:00
2015-08-13 19:44:41 +00:00
This is a full working config that will output CPU data to an InfluxDB instance
2015-08-14 15:54:40 +00:00
at 192.168.59.103:8086, tagging measurements with dc="denver-1". It will output
2015-11-24 21:22:11 +00:00
measurements at a 10s interval and will collect per-cpu data, dropping any
measurements which begin with `cpu_time` .
2015-08-14 15:54:40 +00:00
2015-12-01 14:15:28 +00:00
```toml
2015-08-13 19:44:41 +00:00
[tags]
2015-11-24 21:22:11 +00:00
dc = "denver-1"
2015-08-10 20:08:21 +00:00
2015-08-13 19:44:41 +00:00
[agent]
2015-11-24 21:22:11 +00:00
interval = "10s"
2015-08-26 17:02:10 +00:00
# OUTPUTS
[outputs]
2015-11-16 17:43:03 +00:00
[[outputs.influxdb]]
2015-11-24 21:22:11 +00:00
url = "http://192.168.59.103:8086" # required.
database = "telegraf" # required.
precision = "s"
2015-08-10 20:08:21 +00:00
2015-08-13 19:44:41 +00:00
# PLUGINS
2015-11-24 21:22:11 +00:00
[plugins]
[[plugins.cpu]]
percpu = true
totalcpu = false
2015-12-07 22:37:05 +00:00
drop = ["cpu_time*"]
2015-08-10 20:08:21 +00:00
```
2015-08-10 19:42:59 +00:00
2015-12-07 22:37:05 +00:00
Below is how to configure `tagpass` and `tagdrop` parameters
2015-08-13 19:44:41 +00:00
2015-12-01 14:15:28 +00:00
```toml
2015-11-24 21:22:11 +00:00
[plugins]
[[plugins.cpu]]
percpu = true
totalcpu = false
drop = ["cpu_time"]
# Don't collect CPU data for cpu6 & cpu7
[plugins.cpu.tagdrop]
2015-08-26 17:02:10 +00:00
cpu = [ "cpu6", "cpu7" ]
2015-08-13 19:44:41 +00:00
2015-11-24 21:22:11 +00:00
[[plugins.disk]]
[plugins.disk.tagpass]
2015-08-26 17:02:10 +00:00
# tagpass conditions are OR, not AND.
# If the (filesystem is ext4 or xfs) OR (the path is /opt or /home)
# then the metric passes
fstype = [ "ext4", "xfs" ]
2015-12-07 22:37:05 +00:00
# Globs can also be used on the tag values
path = [ "/opt", "/home*" ]
2015-08-10 19:42:59 +00:00
```
2015-12-07 22:37:05 +00:00
Below is how to configure `pass` and `drop` parameters
2015-12-01 14:15:28 +00:00
```toml
# Drop all metrics for guest CPU usage
[[plugins.cpu]]
drop = [ "cpu_usage_guest" ]
# Only store inode related metrics for disks
[[plugins.disk]]
2015-12-07 22:37:05 +00:00
pass = [ "disk_inodes*" ]
2015-12-01 14:15:28 +00:00
```
2015-11-24 21:22:11 +00:00
Additional plugins (or outputs) of the same type can be specified,
2015-12-07 22:37:05 +00:00
just define more instances in the config file:
2015-11-24 21:22:11 +00:00
2015-12-01 14:15:28 +00:00
```toml
2015-11-24 21:22:11 +00:00
[[plugins.cpu]]
percpu = false
totalcpu = true
2015-12-07 22:37:05 +00:00
[[plugins.cpu]]
percpu = true
totalcpu = false
drop = ["cpu_time*"]
2015-11-24 21:22:11 +00:00
```
2015-08-13 19:44:41 +00:00
## Supported Plugins
2015-08-24 20:08:47 +00:00
**You can view usage instructions for each plugin by running**
2015-10-19 21:26:08 +00:00
`telegraf -usage <pluginname>` .
2015-08-24 20:08:47 +00:00
2015-10-19 21:26:08 +00:00
Telegraf currently has support for collecting metrics from:
2015-08-13 19:44:41 +00:00
2015-10-22 00:08:43 +00:00
* aerospike
2015-09-04 23:05:50 +00:00
* apache
2015-10-19 17:38:16 +00:00
* bcache
2015-08-20 20:40:23 +00:00
* disque
* elasticsearch
2015-08-24 20:08:47 +00:00
* exec (generic JSON-emitting executable plugin)
2015-08-20 20:40:23 +00:00
* haproxy
* httpjson (generic JSON-emitting http service plugin)
2015-12-18 23:21:39 +00:00
* influxdb
2015-11-03 21:00:23 +00:00
* jolokia (remote JMX with JSON over HTTP)
2015-08-20 20:40:23 +00:00
* leofs
* lustre2
2015-12-01 21:05:24 +00:00
* mailchimp
2015-08-20 20:40:23 +00:00
* memcached
* mongodb
* mysql
* nginx
2015-10-16 12:13:09 +00:00
* phpfpm
2015-09-04 23:05:50 +00:00
* ping
2015-08-20 20:40:23 +00:00
* postgresql
2015-10-07 18:31:49 +00:00
* procstat
2015-08-20 20:40:23 +00:00
* prometheus
2015-10-16 17:48:33 +00:00
* puppetagent
2015-08-20 20:40:23 +00:00
* rabbitmq
* redis
* rethinkdb
2015-11-12 16:25:42 +00:00
* twemproxy
2015-11-09 12:37:00 +00:00
* zfs
2015-10-14 23:53:47 +00:00
* zookeeper
2015-09-04 23:05:50 +00:00
* system
* cpu
* mem
* io
* net
2015-10-14 23:53:47 +00:00
* netstat
2015-09-04 23:05:50 +00:00
* disk
* swap
2015-08-13 19:44:41 +00:00
2015-10-16 22:13:32 +00:00
## Supported Service Plugins
2015-10-07 22:11:52 +00:00
2015-10-19 21:26:08 +00:00
Telegraf can collect metrics via the following services:
2015-10-07 22:11:52 +00:00
* statsd
2015-11-16 20:12:45 +00:00
* kafka_consumer
2015-10-07 22:11:52 +00:00
2015-08-13 19:44:41 +00:00
We'll be adding support for many more over the coming months. Read on if you
want to add support for another service or third-party API.
2015-08-28 16:18:46 +00:00
## Output options
2015-06-19 16:38:31 +00:00
2015-08-28 16:18:46 +00:00
Telegraf also supports specifying multiple output sinks to send data to,
configuring each output sink is different, but examples can be
2015-10-19 21:26:08 +00:00
found by running `telegraf -sample-config` .
2015-06-19 16:38:31 +00:00
2015-12-07 19:22:52 +00:00
Outputs also support the same configurable options as plugins
(pass, drop, tagpass, tagdrop), added in 0.2.4
2015-12-01 14:15:28 +00:00
```toml
[[outputs.influxdb]]
urls = [ "http://localhost:8086" ]
database = "telegraf"
precision = "s"
# Drop all measurements that start with "aerospike"
2015-12-07 22:37:05 +00:00
drop = ["aerospike*"]
2015-12-01 14:15:28 +00:00
[[outputs.influxdb]]
urls = [ "http://localhost:8086" ]
database = "telegraf-aerospike-data"
precision = "s"
# Only accept aerospike data:
2015-12-07 22:37:05 +00:00
pass = ["aerospike*"]
2015-12-01 14:15:28 +00:00
[[outputs.influxdb]]
urls = [ "http://localhost:8086" ]
database = "telegraf-cpu0-data"
precision = "s"
# Only store measurements where the tag "cpu" matches the value "cpu0"
[outputs.influxdb.tagpass]
cpu = ["cpu0"]
```
2015-08-28 16:18:46 +00:00
## Supported Outputs
2015-06-19 16:38:31 +00:00
2015-08-28 16:18:46 +00:00
* influxdb
2015-10-27 21:47:27 +00:00
* nsq
2015-08-28 16:18:46 +00:00
* kafka
* datadog
2015-09-10 18:42:53 +00:00
* opentsdb
2015-09-17 00:30:10 +00:00
* amqp (rabbitmq)
2015-10-07 18:31:49 +00:00
* mqtt
2015-10-26 18:31:21 +00:00
* librato
2015-10-28 22:19:13 +00:00
* prometheus
2015-11-06 09:27:17 +00:00
* amon
2015-10-22 21:50:19 +00:00
* riemann
2015-06-19 16:38:31 +00:00
2015-08-28 16:18:46 +00:00
## Contributing
2015-06-19 16:38:31 +00:00
2015-08-28 16:18:46 +00:00
Please see the
2015-09-09 17:00:19 +00:00
[contributing guide ](CONTRIBUTING.md )
2015-10-19 21:26:08 +00:00
for details on contributing a plugin or output to Telegraf.