Skip to content

Commit 3ddc3c6

Browse files
authored
fix: eliminate MIB dependency for ifname processor (#10214)
1 parent 2d420fb commit 3ddc3c6

2 files changed

Lines changed: 16 additions & 14 deletions

File tree

plugins/processors/ifname/ifname.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package ifname
22

33
import (
4+
"errors"
45
"fmt"
56
"strconv"
67
"sync"
@@ -192,13 +193,14 @@ func (d *IfName) invalidate(agent string) {
192193

193194
func (d *IfName) Start(acc telegraf.Accumulator) error {
194195
var err error
195-
d.ifTable, err = d.makeTable("IF-MIB::ifDescr")
196+
197+
d.ifTable, err = d.makeTable("1.3.6.1.2.1.2.2.1.2")
196198
if err != nil {
197-
return fmt.Errorf("looking up ifDescr in local MIB: %w", err)
199+
return fmt.Errorf("preparing ifTable: %v", err)
198200
}
199-
d.ifXTable, err = d.makeTable("IF-MIB::ifName")
201+
d.ifXTable, err = d.makeTable("1.3.6.1.2.1.31.1.1.1.1")
200202
if err != nil {
201-
return fmt.Errorf("looking up ifName in local MIB: %w", err)
203+
return fmt.Errorf("preparing ifXTable: %v", err)
202204
}
203205

204206
fn := func(m telegraf.Metric) []telegraf.Metric {
@@ -307,11 +309,11 @@ func (d *IfName) getMapRemoteNoMock(agent string) (nameMap, error) {
307309
//try ifXtable and ifName first. if that fails, fall back to
308310
//ifTable and ifDescr
309311
var m nameMap
310-
if m, err = buildMap(gs, d.ifXTable, "ifName"); err == nil {
312+
if m, err = buildMap(gs, d.ifXTable); err == nil {
311313
return m, nil
312314
}
313315

314-
if m, err = buildMap(gs, d.ifTable, "ifDescr"); err == nil {
316+
if m, err = buildMap(gs, d.ifTable); err == nil {
315317
return m, nil
316318
}
317319

@@ -338,13 +340,13 @@ func init() {
338340
})
339341
}
340342

341-
func makeTableNoMock(fieldName string) (*si.Table, error) {
343+
func makeTableNoMock(oid string) (*si.Table, error) {
342344
var err error
343345
tab := si.Table{
344346
Name: "ifTable",
345347
IndexAsTag: true,
346348
Fields: []si.Field{
347-
{Oid: fieldName},
349+
{Oid: oid, Name: "ifName"},
348350
},
349351
}
350352

@@ -357,7 +359,7 @@ func makeTableNoMock(fieldName string) (*si.Table, error) {
357359
return &tab, nil
358360
}
359361

360-
func buildMap(gs snmp.GosnmpWrapper, tab *si.Table, column string) (nameMap, error) {
362+
func buildMap(gs snmp.GosnmpWrapper, tab *si.Table) (nameMap, error) {
361363
var err error
362364

363365
rtab, err := tab.Build(gs, true)
@@ -382,13 +384,13 @@ func buildMap(gs snmp.GosnmpWrapper, tab *si.Table, column string) (nameMap, err
382384
if err != nil {
383385
return nil, fmt.Errorf("index tag isn't a uint")
384386
}
385-
nameIf, ok := v.Fields[column]
387+
nameIf, ok := v.Fields["ifName"]
386388
if !ok {
387-
return nil, fmt.Errorf("field %s is missing", column)
389+
return nil, errors.New("ifName field is missing")
388390
}
389391
name, ok := nameIf.(string)
390392
if !ok {
391-
return nil, fmt.Errorf("field %s isn't a string", column)
393+
return nil, errors.New("ifName field isn't a string")
392394
}
393395

394396
t[i] = name

plugins/processors/ifname/ifname_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func TestTable(t *testing.T) {
2020
d := IfName{}
2121
err := d.Init()
2222
require.NoError(t, err)
23-
tab, err := d.makeTable("IF-MIB::ifTable")
23+
tab, err := d.makeTable("1.3.6.1.2.1.2.2.1.2")
2424
require.NoError(t, err)
2525

2626
clientConfig := snmp.ClientConfig{
@@ -36,7 +36,7 @@ func TestTable(t *testing.T) {
3636
require.NoError(t, err)
3737

3838
// Could use ifIndex but oid index is always the same
39-
m, err := buildMap(gs, tab, "ifDescr")
39+
m, err := buildMap(gs, tab)
4040
require.NoError(t, err)
4141
require.NotEmpty(t, m)
4242
}

0 commit comments

Comments
 (0)