2.3 KiB
2.3 KiB
Exec Input Plugin
The exec plugin can execute arbitrary commands which output JSON or InfluxDB line-protocol.
If using JSON, only numeric values are parsed and turned into floats. Booleans and strings will be ignored.
Configuration
# Read flattened metrics from one or more commands that output JSON to stdout
[[inputs.exec]]
# the command to run
command = "/usr/bin/mycollector --foo=bar"
# Data format to consume. This can be "json" or "influx" (line-protocol)
# NOTE json only reads numerical measurements, strings and booleans are ignored.
data_format = "json"
# measurement name suffix (for separating different commands)
name_suffix = "_mycollector"
Other options for modifying the measurement names are:
name_override = "measurement_name"
name_prefix = "prefix_"
Example 1
Let's say that we have the above configuration, and mycollector outputs the following JSON:
{
"a": 0.5,
"b": {
"c": 0.1,
"d": 5
}
}
The collected metrics will be stored as fields under the measurement "exec_mycollector":
exec_mycollector a=0.5,b_c=0.1,b_d=5 1452815002357578567
Example 2
Now let's say we have the following configuration:
[[inputs.exec]]
# the command to run
command = "/usr/bin/line_protocol_collector"
# Data format to consume. This can be "json" or "influx" (line-protocol)
# NOTE json only reads numerical measurements, strings and booleans are ignored.
data_format = "influx"
And line_protocol_collector outputs the following line protocol:
cpu,cpu=cpu0,host=foo,datacenter=us-east usage_idle=99,usage_busy=1
cpu,cpu=cpu1,host=foo,datacenter=us-east usage_idle=99,usage_busy=1
cpu,cpu=cpu2,host=foo,datacenter=us-east usage_idle=99,usage_busy=1
cpu,cpu=cpu3,host=foo,datacenter=us-east usage_idle=99,usage_busy=1
cpu,cpu=cpu4,host=foo,datacenter=us-east usage_idle=99,usage_busy=1
cpu,cpu=cpu5,host=foo,datacenter=us-east usage_idle=99,usage_busy=1
cpu,cpu=cpu6,host=foo,datacenter=us-east usage_idle=99,usage_busy=1
You will get data in InfluxDB exactly as it is defined above, tags are cpu=cpuN, host=foo, and datacenter=us-east with fields usage_idle and usage_busy. They will receive a timestamp at collection time.