Show platform not supported warning only on plugin creation (#6801)
This commit is contained in:
parent
25e1636775
commit
8831651799
|
@ -2,6 +2,8 @@ package ethtool
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net"
|
"net"
|
||||||
|
|
||||||
|
"github.com/influxdata/telegraf"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Command interface {
|
type Command interface {
|
||||||
|
@ -18,6 +20,8 @@ type Ethtool struct {
|
||||||
// This is the list of interface names to ignore
|
// This is the list of interface names to ignore
|
||||||
InterfaceExclude []string `toml:"interface_exclude"`
|
InterfaceExclude []string `toml:"interface_exclude"`
|
||||||
|
|
||||||
|
Log telegraf.Logger `toml:"-"`
|
||||||
|
|
||||||
// the ethtool command
|
// the ethtool command
|
||||||
command Command
|
command Command
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,19 +3,21 @@
|
||||||
package ethtool
|
package ethtool
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"log"
|
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/plugins/inputs"
|
"github.com/influxdata/telegraf/plugins/inputs"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (e *Ethtool) Init() error {
|
||||||
|
e.Log.Warn("Current platform is not supported")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (e *Ethtool) Gather(acc telegraf.Accumulator) error {
|
func (e *Ethtool) Gather(acc telegraf.Accumulator) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
inputs.Add(pluginName, func() telegraf.Input {
|
inputs.Add(pluginName, func() telegraf.Input {
|
||||||
log.Print("W! [inputs.ethtool] Current platform is not supported")
|
|
||||||
return &Ethtool{}
|
return &Ethtool{}
|
||||||
})
|
})
|
||||||
}
|
}
|
|
@ -1,20 +1,16 @@
|
||||||
// +build linux
|
|
||||||
|
|
||||||
package synproxy
|
package synproxy
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
|
||||||
"fmt"
|
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/plugins/inputs"
|
"github.com/influxdata/telegraf/plugins/inputs"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Synproxy struct {
|
type Synproxy struct {
|
||||||
|
Log telegraf.Logger `toml:"-"`
|
||||||
|
|
||||||
// Synproxy stats filename (proc filesystem)
|
// Synproxy stats filename (proc filesystem)
|
||||||
statFile string
|
statFile string
|
||||||
}
|
}
|
||||||
|
@ -27,83 +23,6 @@ func (k *Synproxy) SampleConfig() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (k *Synproxy) Gather(acc telegraf.Accumulator) error {
|
|
||||||
data, err := k.getSynproxyStat()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
acc.AddCounter("synproxy", data, map[string]string{})
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func inSlice(haystack []string, needle string) bool {
|
|
||||||
for _, val := range haystack {
|
|
||||||
if needle == val {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (k *Synproxy) getSynproxyStat() (map[string]interface{}, error) {
|
|
||||||
var hname []string
|
|
||||||
counters := []string{"entries", "syn_received", "cookie_invalid", "cookie_valid", "cookie_retrans", "conn_reopened"}
|
|
||||||
fields := make(map[string]interface{})
|
|
||||||
|
|
||||||
// Open synproxy file in proc filesystem
|
|
||||||
file, err := os.Open(k.statFile)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer file.Close()
|
|
||||||
|
|
||||||
// Initialise expected fields
|
|
||||||
for _, val := range counters {
|
|
||||||
fields[val] = uint32(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
scanner := bufio.NewScanner(file)
|
|
||||||
// Read header row
|
|
||||||
if scanner.Scan() {
|
|
||||||
line := scanner.Text()
|
|
||||||
// Parse fields separated by whitespace
|
|
||||||
dataFields := strings.Fields(line)
|
|
||||||
for _, val := range dataFields {
|
|
||||||
if !inSlice(counters, val) {
|
|
||||||
val = ""
|
|
||||||
}
|
|
||||||
hname = append(hname, val)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(hname) == 0 {
|
|
||||||
return nil, fmt.Errorf("invalid data")
|
|
||||||
}
|
|
||||||
// Read data rows
|
|
||||||
for scanner.Scan() {
|
|
||||||
line := scanner.Text()
|
|
||||||
// Parse fields separated by whitespace
|
|
||||||
dataFields := strings.Fields(line)
|
|
||||||
// If number of data fields do not match number of header fields
|
|
||||||
if len(dataFields) != len(hname) {
|
|
||||||
return nil, fmt.Errorf("invalid number of columns in data, expected %d found %d", len(hname),
|
|
||||||
len(dataFields))
|
|
||||||
}
|
|
||||||
for i, val := range dataFields {
|
|
||||||
// Convert from hexstring to int32
|
|
||||||
x, err := strconv.ParseUint(val, 16, 32)
|
|
||||||
// If field is not a valid hexstring
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("invalid value '%s' found", val)
|
|
||||||
}
|
|
||||||
if hname[i] != "" {
|
|
||||||
fields[hname[i]] = fields[hname[i]].(uint32) + uint32(x)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return fields, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func getHostProc() string {
|
func getHostProc() string {
|
||||||
procPath := "/proc"
|
procPath := "/proc"
|
||||||
if os.Getenv("HOST_PROC") != "" {
|
if os.Getenv("HOST_PROC") != "" {
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
// +build linux
|
||||||
|
|
||||||
|
package synproxy
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/influxdata/telegraf"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (k *Synproxy) Gather(acc telegraf.Accumulator) error {
|
||||||
|
data, err := k.getSynproxyStat()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
acc.AddCounter("synproxy", data, map[string]string{})
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func inSlice(haystack []string, needle string) bool {
|
||||||
|
for _, val := range haystack {
|
||||||
|
if needle == val {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (k *Synproxy) getSynproxyStat() (map[string]interface{}, error) {
|
||||||
|
var hname []string
|
||||||
|
counters := []string{"entries", "syn_received", "cookie_invalid", "cookie_valid", "cookie_retrans", "conn_reopened"}
|
||||||
|
fields := make(map[string]interface{})
|
||||||
|
|
||||||
|
// Open synproxy file in proc filesystem
|
||||||
|
file, err := os.Open(k.statFile)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
// Initialise expected fields
|
||||||
|
for _, val := range counters {
|
||||||
|
fields[val] = uint32(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(file)
|
||||||
|
// Read header row
|
||||||
|
if scanner.Scan() {
|
||||||
|
line := scanner.Text()
|
||||||
|
// Parse fields separated by whitespace
|
||||||
|
dataFields := strings.Fields(line)
|
||||||
|
for _, val := range dataFields {
|
||||||
|
if !inSlice(counters, val) {
|
||||||
|
val = ""
|
||||||
|
}
|
||||||
|
hname = append(hname, val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(hname) == 0 {
|
||||||
|
return nil, fmt.Errorf("invalid data")
|
||||||
|
}
|
||||||
|
// Read data rows
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := scanner.Text()
|
||||||
|
// Parse fields separated by whitespace
|
||||||
|
dataFields := strings.Fields(line)
|
||||||
|
// If number of data fields do not match number of header fields
|
||||||
|
if len(dataFields) != len(hname) {
|
||||||
|
return nil, fmt.Errorf("invalid number of columns in data, expected %d found %d", len(hname),
|
||||||
|
len(dataFields))
|
||||||
|
}
|
||||||
|
for i, val := range dataFields {
|
||||||
|
// Convert from hexstring to int32
|
||||||
|
x, err := strconv.ParseUint(val, 16, 32)
|
||||||
|
// If field is not a valid hexstring
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("invalid value '%s' found", val)
|
||||||
|
}
|
||||||
|
if hname[i] != "" {
|
||||||
|
fields[hname[i]] = fields[hname[i]].(uint32) + uint32(x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fields, nil
|
||||||
|
}
|
|
@ -3,29 +3,21 @@
|
||||||
package synproxy
|
package synproxy
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"log"
|
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/plugins/inputs"
|
"github.com/influxdata/telegraf/plugins/inputs"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Synproxy struct{}
|
func (k *Synproxy) Init() error {
|
||||||
|
k.Log.Warn("Current platform is not supported")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (k *Synproxy) Gather(acc telegraf.Accumulator) error {
|
func (k *Synproxy) Gather(acc telegraf.Accumulator) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (k *Synproxy) Description() string {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (k *Synproxy) SampleConfig() string {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
inputs.Add("synproxy", func() telegraf.Input {
|
inputs.Add("synproxy", func() telegraf.Input {
|
||||||
log.Print("W! [inputs.synproxy] Current platform is not supported")
|
|
||||||
return &Synproxy{}
|
return &Synproxy{}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,8 @@ import (
|
||||||
|
|
||||||
// Wireless is used to store configuration values.
|
// Wireless is used to store configuration values.
|
||||||
type Wireless struct {
|
type Wireless struct {
|
||||||
HostProc string `toml:"host_proc"`
|
HostProc string `toml:"host_proc"`
|
||||||
|
Log telegraf.Logger `toml:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var sampleConfig = `
|
var sampleConfig = `
|
||||||
|
|
|
@ -3,19 +3,21 @@
|
||||||
package wireless
|
package wireless
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"log"
|
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/plugins/inputs"
|
"github.com/influxdata/telegraf/plugins/inputs"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (w *Wireless) Init() error {
|
||||||
|
w.Log.Warn("Current platform is not supported")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (w *Wireless) Gather(acc telegraf.Accumulator) error {
|
func (w *Wireless) Gather(acc telegraf.Accumulator) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
inputs.Add("wireless", func() telegraf.Input {
|
inputs.Add("wireless", func() telegraf.Input {
|
||||||
log.Print("W! [inputs.wireless] Current platform is not supported")
|
|
||||||
return &Wireless{}
|
return &Wireless{}
|
||||||
})
|
})
|
||||||
}
|
}
|
Loading…
Reference in New Issue