chore(processors.regex): Inform and warn user on operation modus (#14084)
This commit is contained in:
parent
7adcc701f9
commit
efe7112ef9
|
|
@ -9,7 +9,46 @@ import (
|
|||
"github.com/influxdata/telegraf/filter"
|
||||
)
|
||||
|
||||
func (c *converter) setup(ct converterType) error {
|
||||
type converterType int
|
||||
|
||||
const (
|
||||
convertTags = iota
|
||||
convertFields
|
||||
convertTagRename
|
||||
convertFieldRename
|
||||
convertMetricRename
|
||||
)
|
||||
|
||||
func (ct converterType) String() string {
|
||||
switch ct {
|
||||
case convertTags:
|
||||
return "tags"
|
||||
case convertFields:
|
||||
return "fields"
|
||||
case convertTagRename:
|
||||
return "tag_rename"
|
||||
case convertFieldRename:
|
||||
return "field_rename"
|
||||
case convertMetricRename:
|
||||
return "metric_rename"
|
||||
}
|
||||
return fmt.Sprintf("unknown %d", int(ct))
|
||||
}
|
||||
|
||||
type converter struct {
|
||||
Key string `toml:"key"`
|
||||
Pattern string `toml:"pattern"`
|
||||
Replacement string `toml:"replacement"`
|
||||
ResultKey string `toml:"result_key"`
|
||||
Append bool `toml:"append"`
|
||||
|
||||
filter filter.Filter
|
||||
re *regexp.Regexp
|
||||
groups []string
|
||||
apply func(m telegraf.Metric)
|
||||
}
|
||||
|
||||
func (c *converter) setup(ct converterType, log telegraf.Logger) error {
|
||||
// Compile the pattern
|
||||
re, err := regexp.Compile(c.Pattern)
|
||||
if err != nil {
|
||||
|
|
@ -39,8 +78,15 @@ func (c *converter) setup(ct converterType) error {
|
|||
}
|
||||
}
|
||||
if allNamed {
|
||||
log.Infof("%s: Using named-group mode...", ct)
|
||||
c.groups = groups[1:]
|
||||
} else {
|
||||
msg := "Neither 'result_key' nor 'replacement' given with unnamed or mixed groups;"
|
||||
msg += " using explicit, empty replacement!"
|
||||
log.Warnf("%s: %s", ct, msg)
|
||||
}
|
||||
} else {
|
||||
log.Infof("%s: Using explicit mode...", ct)
|
||||
}
|
||||
case convertTagRename, convertFieldRename:
|
||||
switch c.ResultKey {
|
||||
|
|
|
|||
|
|
@ -4,26 +4,14 @@ package regex
|
|||
import (
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"regexp"
|
||||
|
||||
"github.com/influxdata/telegraf"
|
||||
"github.com/influxdata/telegraf/filter"
|
||||
"github.com/influxdata/telegraf/plugins/processors"
|
||||
)
|
||||
|
||||
//go:embed sample.conf
|
||||
var sampleConfig string
|
||||
|
||||
type converterType int
|
||||
|
||||
const (
|
||||
convertTags = iota
|
||||
convertFields
|
||||
convertTagRename
|
||||
convertFieldRename
|
||||
convertMetricRename
|
||||
)
|
||||
|
||||
type Regex struct {
|
||||
Tags []converter `toml:"tags"`
|
||||
Fields []converter `toml:"fields"`
|
||||
|
|
@ -33,19 +21,6 @@ type Regex struct {
|
|||
Log telegraf.Logger `toml:"-"`
|
||||
}
|
||||
|
||||
type converter struct {
|
||||
Key string `toml:"key"`
|
||||
Pattern string `toml:"pattern"`
|
||||
Replacement string `toml:"replacement"`
|
||||
ResultKey string `toml:"result_key"`
|
||||
Append bool `toml:"append"`
|
||||
|
||||
filter filter.Filter
|
||||
re *regexp.Regexp
|
||||
groups []string
|
||||
apply func(m telegraf.Metric)
|
||||
}
|
||||
|
||||
func (*Regex) SampleConfig() string {
|
||||
return sampleConfig
|
||||
}
|
||||
|
|
@ -53,12 +28,12 @@ func (*Regex) SampleConfig() string {
|
|||
func (r *Regex) Init() error {
|
||||
// Compile the regular expressions
|
||||
for i := range r.Tags {
|
||||
if err := r.Tags[i].setup(convertTags); err != nil {
|
||||
if err := r.Tags[i].setup(convertTags, r.Log); err != nil {
|
||||
return fmt.Errorf("'tags' %w", err)
|
||||
}
|
||||
}
|
||||
for i := range r.Fields {
|
||||
if err := r.Fields[i].setup(convertFields); err != nil {
|
||||
if err := r.Fields[i].setup(convertFields, r.Log); err != nil {
|
||||
return fmt.Errorf("'fields' %w", err)
|
||||
}
|
||||
}
|
||||
|
|
@ -67,7 +42,7 @@ func (r *Regex) Init() error {
|
|||
if c.Key != "" {
|
||||
r.Log.Info("'tag_rename' section contains a key which is ignored during processing")
|
||||
}
|
||||
if err := r.TagRename[i].setup(convertTagRename); err != nil {
|
||||
if err := r.TagRename[i].setup(convertTagRename, r.Log); err != nil {
|
||||
return fmt.Errorf("'tag_rename' %w", err)
|
||||
}
|
||||
}
|
||||
|
|
@ -77,7 +52,7 @@ func (r *Regex) Init() error {
|
|||
r.Log.Info("'field_rename' section contains a key which is ignored during processing")
|
||||
}
|
||||
|
||||
if err := r.FieldRename[i].setup(convertFieldRename); err != nil {
|
||||
if err := r.FieldRename[i].setup(convertFieldRename, r.Log); err != nil {
|
||||
return fmt.Errorf("'field_rename' %w", err)
|
||||
}
|
||||
}
|
||||
|
|
@ -91,7 +66,7 @@ func (r *Regex) Init() error {
|
|||
r.Log.Info("'metric_rename' section contains a 'result_key' ignored during processing as metrics will ALWAYS the name")
|
||||
}
|
||||
|
||||
if err := r.MetricRename[i].setup(convertMetricRename); err != nil {
|
||||
if err := r.MetricRename[i].setup(convertMetricRename, r.Log); err != nil {
|
||||
return fmt.Errorf("'metric_rename' %w", err)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue