From e489c96eb9287d1d52bf259b66b3232dbd31cdd5 Mon Sep 17 00:00:00 2001 From: Greg Bray Date: Wed, 7 Sep 2016 15:24:19 -0600 Subject: [PATCH] cmd/scollector: Update SNMP timeout from 5s to 30s and allow override --- cmd/scollector/conf/conf.go | 3 +++ cmd/scollector/main.go | 4 ++++ snmp/snmp.go | 5 ++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/cmd/scollector/conf/conf.go b/cmd/scollector/conf/conf.go index fbf102b427..d764e4bae7 100644 --- a/cmd/scollector/conf/conf.go +++ b/cmd/scollector/conf/conf.go @@ -52,6 +52,9 @@ type Conf struct { // UserAgentMessage is an optional message that is appended to the User Agent UserAgentMessage string + // SNMPTimeout is the number of seconds to wait for SNMP responses (default 30) + SNMPTimeout int + HAProxy []HAProxy SNMP []SNMP MIBS map[string]MIB diff --git a/cmd/scollector/main.go b/cmd/scollector/main.go index 7893ab6d22..ccb74c0ace 100644 --- a/cmd/scollector/main.go +++ b/cmd/scollector/main.go @@ -25,6 +25,7 @@ import ( "bosun.org/metadata" "bosun.org/opentsdb" "bosun.org/slog" + "bosun.org/snmp" "bosun.org/util" "github.com/BurntSushi/toml" "github.com/facebookgo/httpcontrol" @@ -123,6 +124,9 @@ func main() { if conf.ColDir != "" { collectors.InitPrograms(conf.ColDir) } + if conf.SNMPTimeout > 0 { + snmp.Timeout = conf.SNMPTimeout + } var err error check := func(e error) { if e != nil { diff --git a/snmp/snmp.go b/snmp/snmp.go index d7f8492afd..38b1612b38 100644 --- a/snmp/snmp.go +++ b/snmp/snmp.go @@ -10,6 +10,9 @@ import ( "bosun.org/snmp/asn1" ) +//Timeout is the number of seconds to use for conn.SetReadDeadline +var Timeout = 30 + // reserved binding values. var ( null = asn1.RawValue{Class: 0, Tag: 5} @@ -236,7 +239,7 @@ func (s *SNMP) do(req *request) (*response, error) { return nil, err } buf = make([]byte, 10000, 10000) - if err := conn.SetReadDeadline(time.Now().Add(5 * time.Second)); err != nil { + if err := conn.SetReadDeadline(time.Now().Add(time.Duration(Timeout) * time.Second)); err != nil { return nil, err } n, err := conn.Read(buf)