2015-12-11 20:07:32 +00:00
|
|
|
|
# Telegraf Configuration
|
|
|
|
|
|
2016-01-07 22:21:10 +00:00
|
|
|
|
## Generating a Configuration File
|
2016-01-07 20:02:59 +00:00
|
|
|
|
|
2016-01-27 18:09:14 +00:00
|
|
|
|
A default Telegraf config file can be generated using the -sample-config flag:
|
|
|
|
|
`telegraf -sample-config > telegraf.conf`
|
2016-01-07 20:02:59 +00:00
|
|
|
|
|
2016-01-07 20:39:43 +00:00
|
|
|
|
To generate a file with specific inputs and outputs, you can use the
|
2016-01-27 18:09:14 +00:00
|
|
|
|
-input-filter and -output-filter flags:
|
2016-01-07 20:39:43 +00:00
|
|
|
|
`telegraf -sample-config -input-filter cpu:mem:net:swap -output-filter influxdb:kafka`
|
2016-01-07 20:02:59 +00:00
|
|
|
|
|
2016-04-01 19:53:34 +00:00
|
|
|
|
## Environment Variables
|
|
|
|
|
|
|
|
|
|
Environment variables can be used anywhere in the config file, simply prepend
|
|
|
|
|
them with $. For strings the variable must be within quotes (ie, "$STR_VAR"),
|
|
|
|
|
for numbers and booleans they should be plain (ie, $INT_VAR, $BOOL_VAR)
|
|
|
|
|
|
2016-02-08 22:56:43 +00:00
|
|
|
|
## `[global_tags]` Configuration
|
2016-01-27 18:09:14 +00:00
|
|
|
|
|
2016-02-08 22:56:43 +00:00
|
|
|
|
Global tags can be specific in the `[global_tags]` section of the config file in
|
2016-01-27 18:09:14 +00:00
|
|
|
|
key="value" format. All metrics being gathered on this host will be tagged
|
|
|
|
|
with the tags specified here.
|
|
|
|
|
|
|
|
|
|
## `[agent]` Configuration
|
2016-01-07 22:21:10 +00:00
|
|
|
|
|
|
|
|
|
Telegraf has a few options you can configure under the `agent` section of the
|
|
|
|
|
config.
|
|
|
|
|
|
2016-01-27 18:09:14 +00:00
|
|
|
|
* **interval**: Default data collection interval for all inputs
|
|
|
|
|
* **round_interval**: Rounds collection interval to 'interval'
|
|
|
|
|
ie, if interval="10s" then always collect on :00, :10, :20, etc.
|
|
|
|
|
* **metric_buffer_limit**: Telegraf will cache metric_buffer_limit metrics
|
|
|
|
|
for each output, and will flush this buffer on a successful write.
|
|
|
|
|
* **collection_jitter**: Collection jitter is used to jitter
|
|
|
|
|
the collection by a random amount.
|
|
|
|
|
Each plugin will sleep for a random time within jitter before collecting.
|
|
|
|
|
This can be used to avoid many plugins querying things like sysfs at the
|
|
|
|
|
same time, which can have a measurable effect on the system.
|
|
|
|
|
* **flush_interval**: Default data flushing interval for all outputs.
|
|
|
|
|
You should not set this below
|
|
|
|
|
interval. Maximum flush_interval will be flush_interval + flush_jitter
|
|
|
|
|
* **flush_jitter**: Jitter the flush interval by a random amount.
|
|
|
|
|
This is primarily to avoid
|
|
|
|
|
large write spikes for users running a large number of telegraf instances.
|
|
|
|
|
ie, a jitter of 5s and flush_interval 10s means flushes will happen every 10-15s.
|
|
|
|
|
* **debug**: Run telegraf in debug mode.
|
|
|
|
|
* **quiet**: Run telegraf in quiet mode.
|
|
|
|
|
* **hostname**: Override default hostname, if empty use os.Hostname().
|
|
|
|
|
|
|
|
|
|
## `[inputs.xxx]` Configuration
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
2016-01-08 19:49:50 +00:00
|
|
|
|
There are some configuration options that are configurable per input:
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
|
|
|
|
* **name_override**: Override the base name of the measurement.
|
2016-01-08 19:49:50 +00:00
|
|
|
|
(Default is the name of the input).
|
2015-12-11 20:07:32 +00:00
|
|
|
|
* **name_prefix**: Specifies a prefix to attach to the measurement name.
|
|
|
|
|
* **name_suffix**: Specifies a suffix to attach to the measurement name.
|
2016-01-08 19:49:50 +00:00
|
|
|
|
* **tags**: A map of tags to apply to a specific input's measurements.
|
2016-01-07 20:02:59 +00:00
|
|
|
|
* **interval**: How often to gather this metric. Normal plugins use a single
|
2016-01-08 19:49:50 +00:00
|
|
|
|
global interval, but if one particular input should be run less or more often,
|
2016-01-07 20:02:59 +00:00
|
|
|
|
you can configure that here.
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
2016-01-27 18:09:14 +00:00
|
|
|
|
#### Input Filters
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
2016-01-08 19:49:50 +00:00
|
|
|
|
There are also filters that can be configured per input:
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
2016-02-20 05:35:12 +00:00
|
|
|
|
* **namepass**: An array of strings that is used to filter metrics generated by the
|
|
|
|
|
current input. Each string in the array is tested as a glob match against
|
|
|
|
|
measurement names and if it matches, the field is emitted.
|
|
|
|
|
* **namedrop**: The inverse of pass, if a measurement name matches, it is not emitted.
|
|
|
|
|
* **fieldpass**: An array of strings that is used to filter metrics generated by the
|
2016-01-08 19:49:50 +00:00
|
|
|
|
current input. Each string in the array is tested as a glob match against field names
|
2015-12-11 20:07:32 +00:00
|
|
|
|
and if it matches, the field is emitted.
|
2016-02-20 05:35:12 +00:00
|
|
|
|
* **fielddrop**: The inverse of pass, if a field name matches, it is not emitted.
|
2015-12-11 20:07:32 +00:00
|
|
|
|
* **tagpass**: tag names and arrays of strings that are used to filter
|
2016-01-08 19:49:50 +00:00
|
|
|
|
measurements by the current input. Each string in the array is tested as a glob
|
2015-12-11 20:07:32 +00:00
|
|
|
|
match against the tag name, and if it matches the measurement is emitted.
|
2016-01-07 20:02:59 +00:00
|
|
|
|
* **tagdrop**: The inverse of tagpass. If a tag matches, the measurement is not
|
|
|
|
|
emitted. This is tested on measurements that have passed the tagpass test.
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
2016-01-27 18:09:14 +00:00
|
|
|
|
#### Input Configuration Examples
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
|
|
|
|
This is a full working config that will output CPU data to an InfluxDB instance
|
|
|
|
|
at 192.168.59.103:8086, tagging measurements with dc="denver-1". It will output
|
|
|
|
|
measurements at a 10s interval and will collect per-cpu data, dropping any
|
|
|
|
|
fields which begin with `time_`.
|
|
|
|
|
|
|
|
|
|
```toml
|
2016-02-08 22:56:43 +00:00
|
|
|
|
[global_tags]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
dc = "denver-1"
|
|
|
|
|
|
|
|
|
|
[agent]
|
|
|
|
|
interval = "10s"
|
|
|
|
|
|
|
|
|
|
# OUTPUTS
|
|
|
|
|
[[outputs.influxdb]]
|
|
|
|
|
url = "http://192.168.59.103:8086" # required.
|
|
|
|
|
database = "telegraf" # required.
|
|
|
|
|
precision = "s"
|
|
|
|
|
|
2016-01-07 22:21:10 +00:00
|
|
|
|
# INPUTS
|
2016-01-07 20:39:43 +00:00
|
|
|
|
[[inputs.cpu]]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
percpu = true
|
|
|
|
|
totalcpu = false
|
|
|
|
|
# filter all fields beginning with 'time_'
|
2016-03-09 14:46:37 +00:00
|
|
|
|
fielddrop = ["time_*"]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
```
|
|
|
|
|
|
2016-01-27 18:09:14 +00:00
|
|
|
|
#### Input Config: tagpass and tagdrop
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
|
|
|
|
```toml
|
2016-01-07 20:39:43 +00:00
|
|
|
|
[[inputs.cpu]]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
percpu = true
|
|
|
|
|
totalcpu = false
|
2016-03-09 14:46:37 +00:00
|
|
|
|
fielddrop = ["cpu_time"]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
# Don't collect CPU data for cpu6 & cpu7
|
2016-01-07 20:39:43 +00:00
|
|
|
|
[inputs.cpu.tagdrop]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
cpu = [ "cpu6", "cpu7" ]
|
|
|
|
|
|
2016-01-07 20:39:43 +00:00
|
|
|
|
[[inputs.disk]]
|
|
|
|
|
[inputs.disk.tagpass]
|
2015-12-11 20:07:32 +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" ]
|
|
|
|
|
# Globs can also be used on the tag values
|
|
|
|
|
path = [ "/opt", "/home*" ]
|
|
|
|
|
```
|
|
|
|
|
|
2016-02-20 05:35:12 +00:00
|
|
|
|
#### Input Config: fieldpass and fielddrop
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
|
|
|
|
```toml
|
|
|
|
|
# Drop all metrics for guest & steal CPU usage
|
2016-01-07 20:39:43 +00:00
|
|
|
|
[[inputs.cpu]]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
percpu = false
|
|
|
|
|
totalcpu = true
|
2016-02-20 05:35:12 +00:00
|
|
|
|
fielddrop = ["usage_guest", "usage_steal"]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
|
|
|
|
# Only store inode related metrics for disks
|
2016-01-07 20:39:43 +00:00
|
|
|
|
[[inputs.disk]]
|
2016-02-20 05:35:12 +00:00
|
|
|
|
fieldpass = ["inodes*"]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### Input Config: namepass and namedrop
|
|
|
|
|
|
|
|
|
|
```toml
|
|
|
|
|
# Drop all metrics about containers for kubelet
|
|
|
|
|
[[inputs.prometheus]]
|
|
|
|
|
urls = ["http://kube-node-1:4194/metrics"]
|
2016-03-28 19:36:44 +00:00
|
|
|
|
namedrop = ["container_*"]
|
2016-02-20 05:35:12 +00:00
|
|
|
|
|
|
|
|
|
# Only store rest client related metrics for kubelet
|
|
|
|
|
[[inputs.prometheus]]
|
|
|
|
|
urls = ["http://kube-node-1:4194/metrics"]
|
2016-03-28 19:36:44 +00:00
|
|
|
|
namepass = ["rest_client_*"]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
```
|
|
|
|
|
|
2016-01-27 18:09:14 +00:00
|
|
|
|
#### Input config: prefix, suffix, and override
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
|
|
|
|
This plugin will emit measurements with the name `cpu_total`
|
|
|
|
|
|
|
|
|
|
```toml
|
2016-01-07 20:39:43 +00:00
|
|
|
|
[[inputs.cpu]]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
name_suffix = "_total"
|
|
|
|
|
percpu = false
|
|
|
|
|
totalcpu = true
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
This will emit measurements with the name `foobar`
|
|
|
|
|
|
|
|
|
|
```toml
|
2016-01-07 20:39:43 +00:00
|
|
|
|
[[inputs.cpu]]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
name_override = "foobar"
|
|
|
|
|
percpu = false
|
|
|
|
|
totalcpu = true
|
|
|
|
|
```
|
|
|
|
|
|
2016-01-27 18:09:14 +00:00
|
|
|
|
#### Input config: tags
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
|
|
|
|
This plugin will emit measurements with two additional tags: `tag1=foo` and
|
|
|
|
|
`tag2=bar`
|
|
|
|
|
|
|
|
|
|
```toml
|
2016-01-07 20:39:43 +00:00
|
|
|
|
[[inputs.cpu]]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
percpu = false
|
|
|
|
|
totalcpu = true
|
2016-01-07 20:39:43 +00:00
|
|
|
|
[inputs.cpu.tags]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
tag1 = "foo"
|
|
|
|
|
tag2 = "bar"
|
|
|
|
|
```
|
|
|
|
|
|
2016-01-27 18:09:14 +00:00
|
|
|
|
#### Multiple inputs of the same type
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
2016-01-07 22:21:10 +00:00
|
|
|
|
Additional inputs (or outputs) of the same type can be specified,
|
|
|
|
|
just define more instances in the config file. It is highly recommended that
|
|
|
|
|
you utilize `name_override`, `name_prefix`, or `name_suffix` config options
|
|
|
|
|
to avoid measurement collisions:
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
|
|
|
|
```toml
|
2016-01-07 20:39:43 +00:00
|
|
|
|
[[inputs.cpu]]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
percpu = false
|
|
|
|
|
totalcpu = true
|
|
|
|
|
|
2016-01-07 20:39:43 +00:00
|
|
|
|
[[inputs.cpu]]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
percpu = true
|
|
|
|
|
totalcpu = false
|
2016-01-07 22:21:10 +00:00
|
|
|
|
name_override = "percpu_usage"
|
2016-03-09 14:46:37 +00:00
|
|
|
|
fielddrop = ["cpu_time*"]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
```
|
|
|
|
|
|
2016-01-27 18:09:14 +00:00
|
|
|
|
## `[outputs.xxx]` Configuration
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
|
|
|
|
Telegraf also supports specifying multiple output sinks to send data to,
|
|
|
|
|
configuring each output sink is different, but examples can be
|
|
|
|
|
found by running `telegraf -sample-config`.
|
|
|
|
|
|
2016-01-07 22:21:10 +00:00
|
|
|
|
Outputs also support the same configurable options as inputs
|
2016-02-22 20:35:06 +00:00
|
|
|
|
(namepass, namedrop, tagpass, tagdrop)
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
|
|
|
|
```toml
|
|
|
|
|
[[outputs.influxdb]]
|
|
|
|
|
urls = [ "http://localhost:8086" ]
|
|
|
|
|
database = "telegraf"
|
|
|
|
|
precision = "s"
|
|
|
|
|
# Drop all measurements that start with "aerospike"
|
2016-02-22 20:35:06 +00:00
|
|
|
|
namedrop = ["aerospike*"]
|
2015-12-11 20:07:32 +00:00
|
|
|
|
|
|
|
|
|
[[outputs.influxdb]]
|
|
|
|
|
urls = [ "http://localhost:8086" ]
|
|
|
|
|
database = "telegraf-aerospike-data"
|
|
|
|
|
precision = "s"
|
|
|
|
|
# Only accept aerospike data:
|
2016-02-22 20:35:06 +00:00
|
|
|
|
namepass = ["aerospike*"]
|
2015-12-11 20:07:32 +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"]
|
|
|
|
|
```
|
2016-02-05 06:03:05 +00:00
|
|
|
|
|
|
|
|
|
## Etcd Configuration
|
|
|
|
|
|
|
|
|
|
### Command line parameters
|
|
|
|
|
|
|
|
|
|
Telegraf option related to Etcd:
|
|
|
|
|
```
|
|
|
|
|
-etcd etcd urls where configuration is stored (comma separated)
|
|
|
|
|
-etcdfolder etcd folder where configuration is stored and read
|
|
|
|
|
-etcdwriteconfigdir store the following config dir to etcd
|
|
|
|
|
-etcdwriteconfig store the following config file to etcd
|
|
|
|
|
-etcderaseconfig erase all telegraf config in etcd
|
|
|
|
|
-etcdwritelabel store config file to etcd with this label
|
|
|
|
|
-etcdreadlabels read config from etcd using labels (comma-separated)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Features
|
|
|
|
|
|
|
|
|
|
* Main config file can be loaded in Etcd
|
|
|
|
|
* Each agent try automatically to find its own key in Etcd (/telegraf/hosts/HOSTNAME)
|
|
|
|
|
* Labels can be configured in config files, so labels could be from Etcd
|
|
|
|
|
* Etcd config watcher: that reload Telegraf when a change is detected in Etcd.
|
|
|
|
|
* You can write all configuration of ALL your Telegraf agent in a folder then send it to Etcd.
|
|
|
|
|
|
|
|
|
|
### Put simple configuration in Etcd
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Create main configuration file
|
|
|
|
|
|
|
|
|
|
Create a `myconf.conf` file, which will be stored in Etcd, with the following content:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
[tags]
|
|
|
|
|
dc = "us-east-1"
|
|
|
|
|
|
|
|
|
|
[agent]
|
|
|
|
|
interval = "10s"
|
|
|
|
|
round_interval = true
|
|
|
|
|
flush_interval = "10s"
|
|
|
|
|
flush_jitter = "0s"
|
|
|
|
|
debug = false
|
|
|
|
|
hostname = ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[[outputs.influxdb]]
|
|
|
|
|
urls = ["http://localhost:8086"]
|
|
|
|
|
database = "telegraf"
|
|
|
|
|
precision = "s"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[[inputs.cpu]]
|
|
|
|
|
percpu = true
|
|
|
|
|
totalcpu = true
|
|
|
|
|
drop = ["cpu_time*"]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### Send the configuration to Etcd
|
|
|
|
|
|
|
|
|
|
Send this file to Etcd using the label **mylabel**
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ telegraf -etcd http://127.0.0.1:2379 -etcdwritelabel mylabel -etcdwriteconfig myconf.conf
|
|
|
|
|
2016/03/08 19:50:27 Config written with key /telegraf/labels/mylabel
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
NOTE: By default, configuration is stored in the folder `/telegraf` in Etcd.
|
|
|
|
|
You can change it using `-etcdfolder` flag
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Check if your configuration in Etcd
|
|
|
|
|
|
|
|
|
|
You can check if data is really written in Etcd with
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ etcdctl get /telegraf/labels/mylabel
|
|
|
|
|
[tags]
|
|
|
|
|
dc = "us-east-1"
|
|
|
|
|
|
|
|
|
|
[agent]
|
|
|
|
|
interval = "10s"
|
|
|
|
|
round_interval = true
|
|
|
|
|
flush_interval = "10s"
|
|
|
|
|
flush_jitter = "0s"
|
|
|
|
|
debug = false
|
|
|
|
|
hostname = ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[[outputs.influxdb]]
|
|
|
|
|
urls = ["http://localhost:8086"]
|
|
|
|
|
database = "telegraf"
|
|
|
|
|
precision = "s"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[[inputs.cpu]]
|
|
|
|
|
percpu = true
|
|
|
|
|
totalcpu = true
|
|
|
|
|
drop = ["cpu_time*"]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
####
|
|
|
|
|
|
|
|
|
|
Now any telegraf agent can load this config use the label **mylabel**
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ telegraf -etcd http://127.0.0.1:2379 -etcdreadlabels mylabel
|
|
|
|
|
Config read with label mylabel
|
|
|
|
|
2016/03/08 19:54:52 WARNING: [etcd] 100: Key not found (/telegraf/main) [245]
|
|
|
|
|
2016/03/08 19:54:52 WARNING: [etcd] 100: Key not found (/telegraf/hosts) [245]
|
|
|
|
|
2016/03/08 19:54:52 Database creation failed: Get http://localhost:8086/query?db=&q=CREATE+DATABASE+IF+NOT+EXISTS+telegraf: dial tcp [::1]:8086: getsockopt: connection refused
|
|
|
|
|
2016/03/08 19:54:52 Starting Telegraf (version 0.10.4.1-49-g07a3a07)
|
|
|
|
|
2016/03/08 19:54:52 Loaded outputs: influxdb
|
|
|
|
|
2016/03/08 19:54:52 Loaded inputs: cpu
|
|
|
|
|
2016/03/08 19:54:52 Tags enabled: dc=us-east-1 host=hostname
|
|
|
|
|
2016/03/08 19:54:52 Agent Config: Interval:10s, Debug:false, Quiet:false, Hostname:"hostname", Flush Interval:10s
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
NOTE: By default, configuration is read in the folder `/telegraf` in Etcd.
|
|
|
|
|
You can change it using `-etcdfolder` flag
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Read configuration from Etcd
|
|
|
|
|
|
|
|
|
|
1. `/telegraf/main` key
|
|
|
|
|
2. `/telegraf/hosts/HOSTNAME` key
|
|
|
|
|
3. `/telegraf/labels/LABEL1` key
|
|
|
|
|
4. `/telegraf/labels/LABEL2` key
|
|
|
|
|
|
|
|
|
|
(First means less importance)
|
|
|
|
|
|
|
|
|
|
### Put configuration folder in Etcd
|
|
|
|
|
|
|
|
|
|
#### Create configuration folder structure
|
|
|
|
|
|
|
|
|
|
You can set your configuration in a folder like this:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
testdata/test1
|
|
|
|
|
├── hosts
|
|
|
|
|
│ ├── myserver1.conf
|
|
|
|
|
│ └── myserver2.conf
|
|
|
|
|
├── labels
|
|
|
|
|
│ ├── influx.conf
|
|
|
|
|
│ ├── network2.conf
|
|
|
|
|
│ └── network.conf
|
|
|
|
|
└── main.conf
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The following table how files and folder are stored in Etcd:
|
|
|
|
|
|
|
|
|
|
| Files | Etcd | Details
|
|
|
|
|
|-------------------------|---------------------|-----------------------------------------------------------------------|
|
|
|
|
|
| | `/telegraf ` | |
|
|
|
|
|
| `/main.conf` | `├── main ` | Equivalent to main config file load with `-config` option |
|
|
|
|
|
| | `├── hosts/ ` | |
|
|
|
|
|
| `/host/myserver1.conf` | `│ ├── myserver1` | Configuration specific for Telegraf agent with hostname **myserver1** |
|
|
|
|
|
| `/host/myserver2.conf` | `│ └── myserver2` | Configuration specific for Telegraf agent with hostname **myserver2** |
|
|
|
|
|
| | `└── labels/ ` | |
|
|
|
|
|
| `/labels/influx.conf` | ` ├── influx ` | Configuration loaded by hosts with etcd label **influx** |
|
|
|
|
|
| `/labels/network2.conf` | ` ├── network2 ` | Configuration loaded by hosts with etcd label **network2** |
|
|
|
|
|
| `/labels/network.conf` | ` └── network ` | Configuration loaded by hosts with etcd label **network** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(An example is available [here](../internal/etcd/testdata/test1))
|
|
|
|
|
|
|
|
|
|
#### Send configuration to Etcd
|
|
|
|
|
|
|
|
|
|
Then you can send your configuration folder to Etcd:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ telegraf -etcd http://127.0.0.1:2379 -etcdwriteconfigdir internal/etcd/testdata/test1/
|
|
|
|
|
2016/03/08 20:14:28 Config written with key /telegraf/hosts/myserver1
|
|
|
|
|
2016/03/08 20:14:28 Config written with key /telegraf/labels/influx
|
|
|
|
|
2016/03/08 20:14:28 Config written with key /telegraf/labels/network
|
|
|
|
|
2016/03/08 20:14:28 Config written with key /telegraf/labels/network2
|
|
|
|
|
2016/03/08 20:14:28 Config written with key /telegraf/main
|
|
|
|
|
```
|
|
|
|
|
#### Read configuration from Etcd
|
|
|
|
|
|
|
|
|
|
Then you can start all your telegraf agents like this
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ telegraf -etcd http://127.0.0.1:2379 -etcdreadlabels=influx,network
|
|
|
|
|
2016/03/08 20:17:25 Config read from etcd with labels influx,network
|
|
|
|
|
2016/03/08 20:17:25 Database creation failed: Get http://localhost:8086/query?db=&q=CREATE+DATABASE+IF+NOT+EXISTS+telegraf: dial tcp [::1]:8086: getsockopt: connection refused
|
|
|
|
|
2016/03/08 20:17:25 Starting Telegraf (version 0.10.4.1-49-g07a3a07)
|
|
|
|
|
2016/03/08 20:17:25 Loaded outputs: influxdb
|
|
|
|
|
2016/03/08 20:17:25 Loaded inputs: net
|
|
|
|
|
2016/03/08 20:17:25 Tags enabled: dc=us-east-1 host=myserver1
|
|
|
|
|
2016/03/08 20:17:25 Agent Config: Interval:2s, Debug:false, Quiet:false, Hostname:"myserver1", Flush Interval:10s
|
|
|
|
|
2016/03/08 20:17:26 Gathered metrics, (2s interval), from 1 inputs in 1.382394ms
|
|
|
|
|
```
|