Don't walk the entire interface table to just retrieve one field (#9043)

This commit is contained in:
Thomas Casteleyn 2021-03-30 01:05:19 +02:00 committed by GitHub
parent 871447b22c
commit ffe92a7658
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 6 deletions

View File

@ -201,13 +201,13 @@ func (d *IfName) Start(acc telegraf.Accumulator) error {
return fmt.Errorf("parsing SNMP client config: %w", err)
}
d.ifTable, err = d.makeTable("IF-MIB::ifTable")
d.ifTable, err = d.makeTable("IF-MIB::ifDescr")
if err != nil {
return fmt.Errorf("looking up ifTable in local MIB: %w", err)
return fmt.Errorf("looking up ifDescr in local MIB: %w", err)
}
d.ifXTable, err = d.makeTable("IF-MIB::ifXTable")
d.ifXTable, err = d.makeTable("IF-MIB::ifName")
if err != nil {
return fmt.Errorf("looking up ifXTable in local MIB: %w", err)
return fmt.Errorf("looking up ifName in local MIB: %w", err)
}
fn := func(m telegraf.Metric) []telegraf.Metric {
@ -347,11 +347,13 @@ func init() {
})
}
func makeTableNoMock(tableName string) (*si.Table, error) {
func makeTableNoMock(fieldName string) (*si.Table, error) {
var err error
tab := si.Table{
Oid: tableName,
IndexAsTag: true,
Fields: []si.Field{
{Oid: fieldName},
},
}
err = tab.Init()