From 79235cb224483f2ff98660f0aee4b2b1f551d3d6 Mon Sep 17 00:00:00 2001 From: papapiya <402561078@qq.com> Date: Fri, 22 Jul 2022 17:23:41 +0800 Subject: [PATCH] fix(inputs.snmp_trap): nil map panic when use snmp_trap with netsnmp translator (#11534) --- plugins/inputs/snmp_trap/netsnmp.go | 4 +++- plugins/inputs/snmp_trap/snmp_trap.go | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/inputs/snmp_trap/netsnmp.go b/plugins/inputs/snmp_trap/netsnmp.go index 25a5ba3e0..ce06987e4 100644 --- a/plugins/inputs/snmp_trap/netsnmp.go +++ b/plugins/inputs/snmp_trap/netsnmp.go @@ -82,8 +82,10 @@ func (s *netsnmpTranslator) snmptranslate(oid string) (e snmp.MibEntry, err erro return e, nil } -func newNetsnmpTranslator() *netsnmpTranslator { +func newNetsnmpTranslator(timeout config.Duration) *netsnmpTranslator { return &netsnmpTranslator{ execCmd: realExecCmd, + cache: make(map[string]snmp.MibEntry), + Timeout: timeout, } } diff --git a/plugins/inputs/snmp_trap/snmp_trap.go b/plugins/inputs/snmp_trap/snmp_trap.go index 05cc7b319..e7b9d413f 100644 --- a/plugins/inputs/snmp_trap/snmp_trap.go +++ b/plugins/inputs/snmp_trap/snmp_trap.go @@ -17,6 +17,8 @@ import ( "github.com/influxdata/telegraf/plugins/inputs" ) +var defaultTimeout = config.Duration(time.Second * 5) + // DO NOT REMOVE THE NEXT TWO LINES! This is required to embed the sampleConfig data. //go:embed sample.conf var sampleConfig string @@ -68,6 +70,7 @@ func init() { return &SnmpTrap{ timeFunc: time.Now, ServiceAddress: "udp://:162", + Timeout: defaultTimeout, Path: []string{"/usr/share/snmp/mibs"}, Version: "2c", } @@ -87,7 +90,7 @@ func (s *SnmpTrap) Init() error { return err } case "netsnmp": - s.translator = newNetsnmpTranslator() + s.translator = newNetsnmpTranslator(s.Timeout) default: return fmt.Errorf("invalid translator value") }