From ba50ece7319f16e626a6a14a426320da1d6577e0 Mon Sep 17 00:00:00 2001 From: papapiya <402561078@qq.com> Date: Thu, 21 Jul 2022 16:38:10 +0800 Subject: [PATCH] fix: nil map panic when use snmp_trap with netsnmp translator --- 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 25a5ba3e0a3c3..ce06987e404b6 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 05cc7b319e9bb..e7b9d413fac2b 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") }