feat: Migrate nagios parser to new style (#11402)
This commit is contained in:
parent
7d83b076c2
commit
9e50853ab8
|
|
@ -135,7 +135,7 @@ func (*Exec) SampleConfig() string {
|
||||||
|
|
||||||
func (e *Exec) ProcessCommand(command string, acc telegraf.Accumulator, wg *sync.WaitGroup) {
|
func (e *Exec) ProcessCommand(command string, acc telegraf.Accumulator, wg *sync.WaitGroup) {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
_, isNagios := e.parser.(*nagios.NagiosParser)
|
_, isNagios := e.parser.(*nagios.Parser)
|
||||||
|
|
||||||
out, errBuf, runErr := e.runner.Run(command, e.Environment, time.Duration(e.Timeout))
|
out, errBuf, runErr := e.runner.Run(command, e.Environment, time.Duration(e.Timeout))
|
||||||
if !isNagios && runErr != nil {
|
if !isNagios && runErr != nil {
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import (
|
||||||
_ "github.com/influxdata/telegraf/plugins/parsers/json"
|
_ "github.com/influxdata/telegraf/plugins/parsers/json"
|
||||||
_ "github.com/influxdata/telegraf/plugins/parsers/json_v2"
|
_ "github.com/influxdata/telegraf/plugins/parsers/json_v2"
|
||||||
_ "github.com/influxdata/telegraf/plugins/parsers/logfmt"
|
_ "github.com/influxdata/telegraf/plugins/parsers/logfmt"
|
||||||
|
_ "github.com/influxdata/telegraf/plugins/parsers/nagios"
|
||||||
_ "github.com/influxdata/telegraf/plugins/parsers/value"
|
_ "github.com/influxdata/telegraf/plugins/parsers/value"
|
||||||
_ "github.com/influxdata/telegraf/plugins/parsers/wavefront"
|
_ "github.com/influxdata/telegraf/plugins/parsers/wavefront"
|
||||||
_ "github.com/influxdata/telegraf/plugins/parsers/xpath"
|
_ "github.com/influxdata/telegraf/plugins/parsers/xpath"
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import (
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/metric"
|
"github.com/influxdata/telegraf/metric"
|
||||||
|
"github.com/influxdata/telegraf/plugins/parsers"
|
||||||
)
|
)
|
||||||
|
|
||||||
// unknownExitCode is the nagios unknown status code
|
// unknownExitCode is the nagios unknown status code
|
||||||
|
|
@ -85,10 +86,11 @@ func AddState(runErr error, errMessage []byte, metrics []telegraf.Metric) []tele
|
||||||
return append(metrics, m)
|
return append(metrics, m)
|
||||||
}
|
}
|
||||||
|
|
||||||
type NagiosParser struct {
|
type Parser struct {
|
||||||
MetricName string
|
DefaultTags map[string]string `toml:"-"`
|
||||||
DefaultTags map[string]string
|
Log telegraf.Logger `toml:"-"`
|
||||||
Log telegraf.Logger `toml:"-"`
|
|
||||||
|
metricName string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Got from Alignak
|
// Got from Alignak
|
||||||
|
|
@ -98,16 +100,16 @@ var (
|
||||||
nagiosRegExp = regexp.MustCompile(`^([^=]+)=([\d\.\-\+eE]+)([\w\/%]*);?([\d\.\-\+eE:~@]+)?;?([\d\.\-\+eE:~@]+)?;?([\d\.\-\+eE]+)?;?([\d\.\-\+eE]+)?;?\s*`)
|
nagiosRegExp = regexp.MustCompile(`^([^=]+)=([\d\.\-\+eE]+)([\w\/%]*);?([\d\.\-\+eE:~@]+)?;?([\d\.\-\+eE:~@]+)?;?([\d\.\-\+eE]+)?;?([\d\.\-\+eE]+)?;?\s*`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func (p *NagiosParser) ParseLine(line string) (telegraf.Metric, error) {
|
func (p *Parser) ParseLine(line string) (telegraf.Metric, error) {
|
||||||
metrics, err := p.Parse([]byte(line))
|
metrics, err := p.Parse([]byte(line))
|
||||||
return metrics[0], err
|
return metrics[0], err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *NagiosParser) SetDefaultTags(tags map[string]string) {
|
func (p *Parser) SetDefaultTags(tags map[string]string) {
|
||||||
p.DefaultTags = tags
|
p.DefaultTags = tags
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *NagiosParser) Parse(buf []byte) ([]telegraf.Metric, error) {
|
func (p *Parser) Parse(buf []byte) ([]telegraf.Metric, error) {
|
||||||
ts := time.Now().UTC()
|
ts := time.Now().UTC()
|
||||||
|
|
||||||
s := bufio.NewScanner(bytes.NewReader(buf))
|
s := bufio.NewScanner(bytes.NewReader(buf))
|
||||||
|
|
@ -308,3 +310,19 @@ func parseThreshold(threshold string) (min float64, max float64, err error) {
|
||||||
|
|
||||||
return min, max, err
|
return min, max, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
// Register parser
|
||||||
|
parsers.Add("nagios",
|
||||||
|
func(defaultMetricName string) telegraf.Parser {
|
||||||
|
return &Parser{metricName: defaultMetricName}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// InitFromConfig is a compatibility function to construct the parser the old way
|
||||||
|
func (p *Parser) InitFromConfig(config *parsers.Config) error {
|
||||||
|
p.metricName = config.MetricName
|
||||||
|
p.DefaultTags = config.DefaultTags
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -215,8 +215,8 @@ func assertNagiosState(t *testing.T, m telegraf.Metric, f map[string]interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestParse(t *testing.T) {
|
func TestParse(t *testing.T) {
|
||||||
parser := NagiosParser{
|
parser := Parser{
|
||||||
MetricName: "nagios_test",
|
metricName: "nagios_test",
|
||||||
}
|
}
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import (
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/influx"
|
"github.com/influxdata/telegraf/plugins/parsers/influx"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/influx/influx_upstream"
|
"github.com/influxdata/telegraf/plugins/parsers/influx/influx_upstream"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/nagios"
|
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/prometheus"
|
"github.com/influxdata/telegraf/plugins/parsers/prometheus"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/prometheusremotewrite"
|
"github.com/influxdata/telegraf/plugins/parsers/prometheusremotewrite"
|
||||||
"github.com/influxdata/telegraf/plugins/parsers/temporary/json_v2"
|
"github.com/influxdata/telegraf/plugins/parsers/temporary/json_v2"
|
||||||
|
|
@ -203,8 +202,6 @@ func NewParser(config *Config) (Parser, error) {
|
||||||
} else {
|
} else {
|
||||||
parser, err = NewInfluxParser()
|
parser, err = NewInfluxParser()
|
||||||
}
|
}
|
||||||
case "nagios":
|
|
||||||
parser, err = NewNagiosParser()
|
|
||||||
case "prometheus":
|
case "prometheus":
|
||||||
parser, err = NewPrometheusParser(
|
parser, err = NewPrometheusParser(
|
||||||
config.DefaultTags,
|
config.DefaultTags,
|
||||||
|
|
@ -230,10 +227,6 @@ func NewParser(config *Config) (Parser, error) {
|
||||||
return parser, err
|
return parser, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewNagiosParser() (Parser, error) {
|
|
||||||
return &nagios.NagiosParser{}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewInfluxParser() (Parser, error) {
|
func NewInfluxParser() (Parser, error) {
|
||||||
handler := influx.NewMetricHandler()
|
handler := influx.NewMetricHandler()
|
||||||
return influx.NewParser(handler), nil
|
return influx.NewParser(handler), nil
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue