Applying PR feedback:
- Rebased onto master - Updated README/CHANGELOG - Limited lines to 80 chars - Improved plugin docs and README - added a dummy notlinux build file
This commit is contained in:
parent
b6873e3191
commit
2b5b61194f
|
@ -51,6 +51,7 @@ to "stdout".
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
- [#1173](https://github.com/influxdata/telegraf/pull/1173): varnish input plugin. Thanks @sfox-xmatters!
|
- [#1173](https://github.com/influxdata/telegraf/pull/1173): varnish input plugin. Thanks @sfox-xmatters!
|
||||||
|
- [#1164](https://github.com/influxdata/telegraf/pull/1164): conntrack input plugin. Thanks @robinpercy!
|
||||||
- [#1138](https://github.com/influxdata/telegraf/pull/1138): nstat input plugin. Thanks @Maksadbek!
|
- [#1138](https://github.com/influxdata/telegraf/pull/1138): nstat input plugin. Thanks @Maksadbek!
|
||||||
- [#1139](https://github.com/influxdata/telegraf/pull/1139): instrumental output plugin. Thanks @jasonroelofs!
|
- [#1139](https://github.com/influxdata/telegraf/pull/1139): instrumental output plugin. Thanks @jasonroelofs!
|
||||||
- [#1172](https://github.com/influxdata/telegraf/pull/1172): Ceph storage stats. Thanks @robinpercy!
|
- [#1172](https://github.com/influxdata/telegraf/pull/1172): Ceph storage stats. Thanks @robinpercy!
|
||||||
|
|
|
@ -1,19 +1,40 @@
|
||||||
# Conntrack Plugin
|
# Conntrack Plugin
|
||||||
|
|
||||||
Collects conntrack stats from the configured directories and files.
|
Collects stats from Netfilter's conntrack-tools.
|
||||||
|
|
||||||
|
The conntrack-tools provide a mechanism for tracking various aspects of
|
||||||
|
network connections as they are processed by netfilter. At runtime,
|
||||||
|
conntrack exposes many of those connection statistics within /proc/sys/net.
|
||||||
|
Depending on your kernel version, these files can be found in either
|
||||||
|
/proc/sys/net/ipv4/netfilter or /proc/sys/net/netfilter and will be
|
||||||
|
prefixed with either ip_ or nf_. This plugin reads the files specified
|
||||||
|
in its configuration and publishes each one as a field, with the prefix
|
||||||
|
normalized to ip_.
|
||||||
|
|
||||||
|
In order to simplify configuration in a heterogeneous environment, a superset
|
||||||
|
of directory and filenames can be specified. Any locations that don't exist
|
||||||
|
will be ignored.
|
||||||
|
|
||||||
|
For more information on conntrack-tools, see the
|
||||||
|
[Netfilter Documentation](http://conntrack-tools.netfilter.org/).
|
||||||
|
|
||||||
|
|
||||||
### Configuration:
|
### Configuration:
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
# Collects conntrack stats from the configured directories and files.
|
# Collects conntrack stats from the configured directories and files.
|
||||||
[[inputs.conntrack]]
|
[[inputs.conntrack]]
|
||||||
## The following defaults would work with multiple versions of contrack. Note the nf_ and ip_
|
## The following defaults would work with multiple versions of conntrack.
|
||||||
## filename prefixes are mutually exclusive across conntrack versions, as are the directory locations.
|
## Note the nf_ and ip_ filename prefixes are mutually exclusive across
|
||||||
|
## kernel versions, as are the directory locations.
|
||||||
|
|
||||||
## Superset of filenames to look for within the conntrack dirs. Missing files will be ignored.
|
## Superset of filenames to look for within the conntrack dirs.
|
||||||
files = ["ip_conntrack_count","ip_conntrack_max","nf_conntrack_count","nf_conntrack_max"]
|
## Missing files will be ignored.
|
||||||
|
files = ["ip_conntrack_count","ip_conntrack_max",
|
||||||
|
"nf_conntrack_count","nf_conntrack_max"]
|
||||||
|
|
||||||
## Directories to search within for the conntrack files above. Missing directrories will be ignored.
|
## Directories to search within for the conntrack files above.
|
||||||
|
## Missing directrories will be ignored.
|
||||||
dirs = ["/proc/sys/net/ipv4/netfilter","/proc/sys/net/netfilter"]
|
dirs = ["/proc/sys/net/ipv4/netfilter","/proc/sys/net/netfilter"]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
// +build linux
|
||||||
|
|
||||||
package conntrack
|
package conntrack
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -50,15 +52,17 @@ func (c *Conntrack) Description() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var sampleConfig = `
|
var sampleConfig = `
|
||||||
# Collects conntrack stats from the configured directories and files.
|
## The following defaults would work with multiple versions of conntrack.
|
||||||
[[inputs.conntrack]]
|
## Note the nf_ and ip_ filename prefixes are mutually exclusive across
|
||||||
## The following defaults would work with multiple versions of contrack. Note the nf_ and ip_
|
## kernel versions, as are the directory locations.
|
||||||
## filename prefixes are mutually exclusive across conntrack versions, as are the directory locations.
|
|
||||||
|
|
||||||
## Superset of filenames to look for within the conntrack dirs. Missing files will be ignored.
|
## Superset of filenames to look for within the conntrack dirs.
|
||||||
files = ["ip_conntrack_count","ip_conntrack_max","nf_conntrack_count","nf_conntrack_max"]
|
## Missing files will be ignored.
|
||||||
|
files = ["ip_conntrack_count","ip_conntrack_max",
|
||||||
|
"nf_conntrack_count","nf_conntrack_max"]
|
||||||
|
|
||||||
## Directories to search within for the conntrack files above. Missing directrories will be ignored.
|
## Directories to search within for the conntrack files above.
|
||||||
|
## Missing directrories will be ignored.
|
||||||
dirs = ["/proc/sys/net/ipv4/netfilter","/proc/sys/net/netfilter"]
|
dirs = ["/proc/sys/net/ipv4/netfilter","/proc/sys/net/netfilter"]
|
||||||
`
|
`
|
||||||
|
|
||||||
|
@ -74,7 +78,8 @@ func (c *Conntrack) Gather(acc telegraf.Accumulator) error {
|
||||||
|
|
||||||
for _, dir := range c.Dirs {
|
for _, dir := range c.Dirs {
|
||||||
for _, file := range c.Files {
|
for _, file := range c.Files {
|
||||||
// NOTE: no system will have both nf_ and ip_ prefixes, so we're safe to branch on suffix only.
|
// NOTE: no system will have both nf_ and ip_ prefixes,
|
||||||
|
// so we're safe to branch on suffix only.
|
||||||
parts := strings.SplitN(file, "_", 2)
|
parts := strings.SplitN(file, "_", 2)
|
||||||
if len(parts) < 2 {
|
if len(parts) < 2 {
|
||||||
continue
|
continue
|
||||||
|
@ -94,13 +99,15 @@ func (c *Conntrack) Gather(acc telegraf.Accumulator) error {
|
||||||
v := strings.TrimSpace(string(contents))
|
v := strings.TrimSpace(string(contents))
|
||||||
fields[metricKey], err = strconv.ParseFloat(v, 64)
|
fields[metricKey], err = strconv.ParseFloat(v, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("failed to parse metric, expected number but found '%s': %v", v, err)
|
log.Printf("failed to parse metric, expected number but "+
|
||||||
|
" found '%s': %v", v, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(fields) == 0 {
|
if len(fields) == 0 {
|
||||||
return fmt.Errorf("Conntrack input failed to collect metrics. Is the conntrack kernel module loaded?")
|
return fmt.Errorf("Conntrack input failed to collect metrics. " +
|
||||||
|
"Is the conntrack kernel module loaded?")
|
||||||
}
|
}
|
||||||
|
|
||||||
acc.AddFields(inputName, fields, nil)
|
acc.AddFields(inputName, fields, nil)
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
// +build !linux
|
||||||
|
|
||||||
|
package conntrack
|
|
@ -1,3 +1,5 @@
|
||||||
|
// +build linux
|
||||||
|
|
||||||
package conntrack
|
package conntrack
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -25,7 +27,8 @@ func TestNoFilesFound(t *testing.T) {
|
||||||
acc := &testutil.Accumulator{}
|
acc := &testutil.Accumulator{}
|
||||||
err := c.Gather(acc)
|
err := c.Gather(acc)
|
||||||
|
|
||||||
assert.EqualError(t, err, "Conntrack input failed to collect metrics. Is the conntrack kernel module loaded?")
|
assert.EqualError(t, err, "Conntrack input failed to collect metrics. "+
|
||||||
|
"Is the conntrack kernel module loaded?")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDefaultsUsed(t *testing.T) {
|
func TestDefaultsUsed(t *testing.T) {
|
||||||
|
@ -47,7 +50,8 @@ func TestDefaultsUsed(t *testing.T) {
|
||||||
acc := &testutil.Accumulator{}
|
acc := &testutil.Accumulator{}
|
||||||
|
|
||||||
c.Gather(acc)
|
c.Gather(acc)
|
||||||
acc.AssertContainsFields(t, inputName, map[string]interface{}{fname: float64(count)})
|
acc.AssertContainsFields(t, inputName, map[string]interface{}{
|
||||||
|
fname: float64(count)})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestConfigsUsed(t *testing.T) {
|
func TestConfigsUsed(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue