Allow using name_* modificators for output plugins (#7174)
This commit is contained in:
@@ -27,6 +27,10 @@ type OutputConfig struct {
|
||||
FlushJitter *time.Duration
|
||||
MetricBufferLimit int
|
||||
MetricBatchSize int
|
||||
|
||||
NameOverride string
|
||||
NamePrefix string
|
||||
NameSuffix string
|
||||
}
|
||||
|
||||
// RunningOutput contains the output configuration
|
||||
@@ -148,6 +152,18 @@ func (ro *RunningOutput) AddMetric(metric telegraf.Metric) {
|
||||
return
|
||||
}
|
||||
|
||||
if len(ro.Config.NameOverride) > 0 {
|
||||
metric.SetName(ro.Config.NameOverride)
|
||||
}
|
||||
|
||||
if len(ro.Config.NamePrefix) > 0 {
|
||||
metric.AddPrefix(ro.Config.NamePrefix)
|
||||
}
|
||||
|
||||
if len(ro.Config.NameSuffix) > 0 {
|
||||
metric.AddSuffix(ro.Config.NameSuffix)
|
||||
}
|
||||
|
||||
dropped := ro.buffer.Add(metric)
|
||||
atomic.AddInt64(&ro.droppedMetrics, int64(dropped))
|
||||
|
||||
|
||||
@@ -218,6 +218,60 @@ func TestRunningOutput_TagIncludeMatch(t *testing.T) {
|
||||
assert.Len(t, m.Metrics()[0].Tags(), 1)
|
||||
}
|
||||
|
||||
// Test that measurement name overriding correctly
|
||||
func TestRunningOutput_NameOverride(t *testing.T) {
|
||||
conf := &OutputConfig{
|
||||
NameOverride: "new_metric_name",
|
||||
}
|
||||
|
||||
m := &mockOutput{}
|
||||
ro := NewRunningOutput("test", m, conf, 1000, 10000)
|
||||
|
||||
ro.AddMetric(testutil.TestMetric(101, "metric1"))
|
||||
assert.Len(t, m.Metrics(), 0)
|
||||
|
||||
err := ro.Write()
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, m.Metrics(), 1)
|
||||
assert.Equal(t, "new_metric_name", m.Metrics()[0].Name())
|
||||
}
|
||||
|
||||
// Test that measurement name prefix is added correctly
|
||||
func TestRunningOutput_NamePrefix(t *testing.T) {
|
||||
conf := &OutputConfig{
|
||||
NamePrefix: "prefix_",
|
||||
}
|
||||
|
||||
m := &mockOutput{}
|
||||
ro := NewRunningOutput("test", m, conf, 1000, 10000)
|
||||
|
||||
ro.AddMetric(testutil.TestMetric(101, "metric1"))
|
||||
assert.Len(t, m.Metrics(), 0)
|
||||
|
||||
err := ro.Write()
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, m.Metrics(), 1)
|
||||
assert.Equal(t, "prefix_metric1", m.Metrics()[0].Name())
|
||||
}
|
||||
|
||||
// Test that measurement name suffix is added correctly
|
||||
func TestRunningOutput_NameSuffix(t *testing.T) {
|
||||
conf := &OutputConfig{
|
||||
NameSuffix: "_suffix",
|
||||
}
|
||||
|
||||
m := &mockOutput{}
|
||||
ro := NewRunningOutput("test", m, conf, 1000, 10000)
|
||||
|
||||
ro.AddMetric(testutil.TestMetric(101, "metric1"))
|
||||
assert.Len(t, m.Metrics(), 0)
|
||||
|
||||
err := ro.Write()
|
||||
assert.NoError(t, err)
|
||||
assert.Len(t, m.Metrics(), 1)
|
||||
assert.Equal(t, "metric1_suffix", m.Metrics()[0].Name())
|
||||
}
|
||||
|
||||
// Test that we can write metrics with simple default setup.
|
||||
func TestRunningOutputDefault(t *testing.T) {
|
||||
conf := &OutputConfig{
|
||||
|
||||
Reference in New Issue
Block a user