Add agent host tag configuration option (#8082)
This commit is contained in:
parent
c8e69aca3c
commit
01eaa202d9
|
|
@ -35,6 +35,9 @@ information.
|
||||||
## SNMP community string.
|
## SNMP community string.
|
||||||
# community = "public"
|
# community = "public"
|
||||||
|
|
||||||
|
## Agent host tag
|
||||||
|
# agent_host_tag = "agent_host"
|
||||||
|
|
||||||
## Number of retries to attempt.
|
## Number of retries to attempt.
|
||||||
# retries = 3
|
# retries = 3
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,9 @@ const sampleConfig = `
|
||||||
## SNMP version; can be 1, 2, or 3.
|
## SNMP version; can be 1, 2, or 3.
|
||||||
# version = 2
|
# version = 2
|
||||||
|
|
||||||
|
## Agent host tag; the tag used to reference the source host
|
||||||
|
# agent_host_tag = "agent_host"
|
||||||
|
|
||||||
## SNMP community string.
|
## SNMP community string.
|
||||||
# community = "public"
|
# community = "public"
|
||||||
|
|
||||||
|
|
@ -95,6 +98,9 @@ type Snmp struct {
|
||||||
// udp://1.2.3.4:161). If the scheme is not specified then "udp" is used.
|
// udp://1.2.3.4:161). If the scheme is not specified then "udp" is used.
|
||||||
Agents []string `toml:"agents"`
|
Agents []string `toml:"agents"`
|
||||||
|
|
||||||
|
// The tag used to name the agent host
|
||||||
|
AgentHostTag string `toml:"agent_host_tag"`
|
||||||
|
|
||||||
snmp.ClientConfig
|
snmp.ClientConfig
|
||||||
|
|
||||||
Tables []Table `toml:"table"`
|
Tables []Table `toml:"table"`
|
||||||
|
|
@ -128,6 +134,10 @@ func (s *Snmp) init() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(s.AgentHostTag) == 0 {
|
||||||
|
s.AgentHostTag = "agent_host"
|
||||||
|
}
|
||||||
|
|
||||||
s.initialized = true
|
s.initialized = true
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
@ -374,8 +384,8 @@ func (s *Snmp) gatherTable(acc telegraf.Accumulator, gs snmpConnection, t Table,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if _, ok := tr.Tags["agent_host"]; !ok {
|
if _, ok := tr.Tags[s.AgentHostTag]; !ok {
|
||||||
tr.Tags["agent_host"] = gs.Host()
|
tr.Tags[s.AgentHostTag] = gs.Host()
|
||||||
}
|
}
|
||||||
acc.AddFields(rt.Name, tr.Fields, tr.Tags, rt.Time)
|
acc.AddFields(rt.Name, tr.Fields, tr.Tags, rt.Time)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,8 @@ func TestSampleConfig(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
expected := &Snmp{
|
expected := &Snmp{
|
||||||
Agents: []string{"udp://127.0.0.1:161"},
|
Agents: []string{"udp://127.0.0.1:161"},
|
||||||
|
AgentHostTag: "",
|
||||||
ClientConfig: config.ClientConfig{
|
ClientConfig: config.ClientConfig{
|
||||||
Timeout: internal.Duration{Duration: 5 * time.Second},
|
Timeout: internal.Duration{Duration: 5 * time.Second},
|
||||||
Version: 2,
|
Version: 2,
|
||||||
|
|
@ -634,7 +635,7 @@ func TestGather(t *testing.T) {
|
||||||
|
|
||||||
m := acc.Metrics[0]
|
m := acc.Metrics[0]
|
||||||
assert.Equal(t, "mytable", m.Measurement)
|
assert.Equal(t, "mytable", m.Measurement)
|
||||||
assert.Equal(t, "tsc", m.Tags["agent_host"])
|
assert.Equal(t, "tsc", m.Tags[s.AgentHostTag])
|
||||||
assert.Equal(t, "baz", m.Tags["myfield1"])
|
assert.Equal(t, "baz", m.Tags["myfield1"])
|
||||||
assert.Len(t, m.Fields, 2)
|
assert.Len(t, m.Fields, 2)
|
||||||
assert.Equal(t, 234, m.Fields["myfield2"])
|
assert.Equal(t, 234, m.Fields["myfield2"])
|
||||||
|
|
@ -644,7 +645,7 @@ func TestGather(t *testing.T) {
|
||||||
|
|
||||||
m2 := acc.Metrics[1]
|
m2 := acc.Metrics[1]
|
||||||
assert.Equal(t, "myOtherTable", m2.Measurement)
|
assert.Equal(t, "myOtherTable", m2.Measurement)
|
||||||
assert.Equal(t, "tsc", m2.Tags["agent_host"])
|
assert.Equal(t, "tsc", m2.Tags[s.AgentHostTag])
|
||||||
assert.Equal(t, "baz", m2.Tags["myfield1"])
|
assert.Equal(t, "baz", m2.Tags["myfield1"])
|
||||||
assert.Len(t, m2.Fields, 1)
|
assert.Len(t, m2.Fields, 1)
|
||||||
assert.Equal(t, 123456, m2.Fields["myOtherField"])
|
assert.Equal(t, 123456, m2.Fields["myOtherField"])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue