Allow regexp processor to mix different tags (#5863)
This commit is contained in:
parent
0ff9c8ef88
commit
d3af8fd873
|
@ -2,6 +2,8 @@
|
|||
|
||||
The `regex` plugin transforms tag and field values with regex pattern. If `result_key` parameter is present, it can produce new tags and fields from existing ones.
|
||||
|
||||
For tags transforms, if `append` is set to `true`, it will append the transformation to the existing tag value, instead of overwriting it.
|
||||
|
||||
### Configuration:
|
||||
|
||||
```toml
|
||||
|
|
|
@ -18,6 +18,7 @@ type converter struct {
|
|||
Pattern string
|
||||
Replacement string
|
||||
ResultKey string
|
||||
Append bool
|
||||
}
|
||||
|
||||
const sampleConfig = `
|
||||
|
@ -70,6 +71,11 @@ func (r *Regex) Apply(in ...telegraf.Metric) []telegraf.Metric {
|
|||
for _, converter := range r.Tags {
|
||||
if value, ok := metric.GetTag(converter.Key); ok {
|
||||
if key, newValue := r.convert(converter, value); newValue != "" {
|
||||
if converter.Append {
|
||||
if v, ok := metric.GetTag(key); ok {
|
||||
newValue = v + newValue
|
||||
}
|
||||
}
|
||||
metric.AddTag(key, newValue)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -108,6 +108,20 @@ func TestTagConversions(t *testing.T) {
|
|||
"resp_code": "2xx",
|
||||
},
|
||||
},
|
||||
{
|
||||
message: "Should append to existing tag",
|
||||
converter: converter{
|
||||
Key: "verb",
|
||||
Pattern: "^(.*)$",
|
||||
Replacement: " (${1})",
|
||||
ResultKey: "resp_code",
|
||||
Append: true,
|
||||
},
|
||||
expectedTags: map[string]string{
|
||||
"verb": "GET",
|
||||
"resp_code": "200 (GET)",
|
||||
},
|
||||
},
|
||||
{
|
||||
message: "Should add new tag",
|
||||
converter: converter{
|
||||
|
|
Loading…
Reference in New Issue