fix: parallelism fix for ifname processor (#10007)
This commit is contained in:
parent
1143a50da3
commit
cc397279f5
|
|
@ -99,18 +99,13 @@ type IfName struct {
|
||||||
ifTable *si.Table
|
ifTable *si.Table
|
||||||
ifXTable *si.Table
|
ifXTable *si.Table
|
||||||
|
|
||||||
lock sync.Mutex
|
cache *TTLCache
|
||||||
cache *TTLCache
|
lock sync.Mutex
|
||||||
|
|
||||||
parallel parallel.Parallel
|
parallel parallel.Parallel
|
||||||
acc telegraf.Accumulator
|
sigs sigMap
|
||||||
|
|
||||||
getMapRemote mapFunc
|
getMapRemote mapFunc
|
||||||
makeTable makeTableFunc
|
makeTable makeTableFunc
|
||||||
|
|
||||||
gsBase snmp.GosnmpWrapper
|
|
||||||
|
|
||||||
sigs sigMap
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const minRetry = 5 * time.Minute
|
const minRetry = 5 * time.Minute
|
||||||
|
|
@ -132,6 +127,10 @@ func (d *IfName) Init() error {
|
||||||
|
|
||||||
d.sigs = make(sigMap)
|
d.sigs = make(sigMap)
|
||||||
|
|
||||||
|
if _, err := snmp.NewWrapper(d.ClientConfig); err != nil {
|
||||||
|
return fmt.Errorf("parsing SNMP client config: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -192,14 +191,7 @@ func (d *IfName) invalidate(agent string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *IfName) Start(acc telegraf.Accumulator) error {
|
func (d *IfName) Start(acc telegraf.Accumulator) error {
|
||||||
d.acc = acc
|
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
d.gsBase, err = snmp.NewWrapper(d.ClientConfig)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("parsing SNMP client config: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
d.ifTable, err = d.makeTable("IF-MIB::ifDescr")
|
d.ifTable, err = d.makeTable("IF-MIB::ifDescr")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("looking up ifDescr in local MIB: %w", err)
|
return fmt.Errorf("looking up ifDescr in local MIB: %w", err)
|
||||||
|
|
@ -299,27 +291,27 @@ func (d *IfName) getMap(agent string) (entry nameMap, age time.Duration, err err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *IfName) getMapRemoteNoMock(agent string) (nameMap, error) {
|
func (d *IfName) getMapRemoteNoMock(agent string) (nameMap, error) {
|
||||||
gs := d.gsBase
|
gs, err := snmp.NewWrapper(d.ClientConfig)
|
||||||
err := gs.SetAgent(agent)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("parsing SNMP client config: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = gs.SetAgent(agent); err != nil {
|
||||||
return nil, fmt.Errorf("parsing agent tag: %w", err)
|
return nil, fmt.Errorf("parsing agent tag: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = gs.Connect()
|
if err = gs.Connect(); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("connecting when fetching interface names: %w", err)
|
return nil, fmt.Errorf("connecting when fetching interface names: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
//try ifXtable and ifName first. if that fails, fall back to
|
//try ifXtable and ifName first. if that fails, fall back to
|
||||||
//ifTable and ifDescr
|
//ifTable and ifDescr
|
||||||
var m nameMap
|
var m nameMap
|
||||||
m, err = buildMap(gs, d.ifXTable, "ifName")
|
if m, err = buildMap(gs, d.ifXTable, "ifName"); err == nil {
|
||||||
if err == nil {
|
|
||||||
return m, nil
|
return m, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
m, err = buildMap(gs, d.ifTable, "ifDescr")
|
if m, err = buildMap(gs, d.ifTable, "ifDescr"); err == nil {
|
||||||
if err == nil {
|
|
||||||
return m, nil
|
return m, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue