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) {
|
||||
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))
|
||||
if !isNagios && runErr != nil {
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import (
|
|||
_ "github.com/influxdata/telegraf/plugins/parsers/json"
|
||||
_ "github.com/influxdata/telegraf/plugins/parsers/json_v2"
|
||||
_ "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/wavefront"
|
||||
_ "github.com/influxdata/telegraf/plugins/parsers/xpath"
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import (
|
|||
|
||||
"github.com/influxdata/telegraf"
|
||||
"github.com/influxdata/telegraf/metric"
|
||||
"github.com/influxdata/telegraf/plugins/parsers"
|
||||
)
|
||||
|
||||
// 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)
|
||||
}
|
||||
|
||||
type NagiosParser struct {
|
||||
MetricName string
|
||||
DefaultTags map[string]string
|
||||
Log telegraf.Logger `toml:"-"`
|
||||
type Parser struct {
|
||||
DefaultTags map[string]string `toml:"-"`
|
||||
Log telegraf.Logger `toml:"-"`
|
||||
|
||||
metricName string
|
||||
}
|
||||
|
||||
// Got from Alignak
|
||||
|
|
@ -98,16 +100,16 @@ var (
|
|||
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))
|
||||
return metrics[0], err
|
||||
}
|
||||
|
||||
func (p *NagiosParser) SetDefaultTags(tags map[string]string) {
|
||||
func (p *Parser) SetDefaultTags(tags map[string]string) {
|
||||
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()
|
||||
|
||||
s := bufio.NewScanner(bytes.NewReader(buf))
|
||||
|
|
@ -308,3 +310,19 @@ func parseThreshold(threshold string) (min float64, max float64, err error) {
|
|||
|
||||
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) {
|
||||
parser := NagiosParser{
|
||||
MetricName: "nagios_test",
|
||||
parser := Parser{
|
||||
metricName: "nagios_test",
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import (
|
|||
"github.com/influxdata/telegraf"
|
||||
"github.com/influxdata/telegraf/plugins/parsers/influx"
|
||||
"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/prometheusremotewrite"
|
||||
"github.com/influxdata/telegraf/plugins/parsers/temporary/json_v2"
|
||||
|
|
@ -203,8 +202,6 @@ func NewParser(config *Config) (Parser, error) {
|
|||
} else {
|
||||
parser, err = NewInfluxParser()
|
||||
}
|
||||
case "nagios":
|
||||
parser, err = NewNagiosParser()
|
||||
case "prometheus":
|
||||
parser, err = NewPrometheusParser(
|
||||
config.DefaultTags,
|
||||
|
|
@ -230,10 +227,6 @@ func NewParser(config *Config) (Parser, error) {
|
|||
return parser, err
|
||||
}
|
||||
|
||||
func NewNagiosParser() (Parser, error) {
|
||||
return &nagios.NagiosParser{}, nil
|
||||
}
|
||||
|
||||
func NewInfluxParser() (Parser, error) {
|
||||
handler := influx.NewMetricHandler()
|
||||
return influx.NewParser(handler), nil
|
||||
|
|
|
|||
Loading…
Reference in New Issue