From 5030373a4cdb54b47de1c3fa4bd34396fc6085da Mon Sep 17 00:00:00 2001 From: Daniel Nelson Date: Fri, 11 May 2018 17:48:27 -0700 Subject: [PATCH] Reuse transport on next interval in jolokia agent (#4137) --- plugins/inputs/jolokia2/jolokia_agent.go | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/plugins/inputs/jolokia2/jolokia_agent.go b/plugins/inputs/jolokia2/jolokia_agent.go index 30852d62d..fd2105d5f 100644 --- a/plugins/inputs/jolokia2/jolokia_agent.go +++ b/plugins/inputs/jolokia2/jolokia_agent.go @@ -23,6 +23,7 @@ type JolokiaAgent struct { Metrics []MetricConfig `toml:"metric"` gatherer *Gatherer + clients []*Client } func (ja *JolokiaAgent) SampleConfig() string { @@ -60,20 +61,27 @@ func (ja *JolokiaAgent) Gather(acc telegraf.Accumulator) error { ja.gatherer = NewGatherer(ja.createMetrics()) } + // Initialize clients once + if ja.clients == nil { + ja.clients = make([]*Client, 0, len(ja.URLs)) + for _, url := range ja.URLs { + client, err := ja.createClient(url) + if err != nil { + acc.AddError(fmt.Errorf("Unable to create client for %s: %v", url, err)) + continue + } + ja.clients = append(ja.clients, client) + } + } + var wg sync.WaitGroup - for _, url := range ja.URLs { - client, err := ja.createClient(url) - if err != nil { - acc.AddError(fmt.Errorf("Unable to create client for %s: %v", url, err)) - continue - } - + for _, client := range ja.clients { wg.Add(1) go func(client *Client) { defer wg.Done() - err = ja.gatherer.Gather(client, acc) + err := ja.gatherer.Gather(client, acc) if err != nil { acc.AddError(fmt.Errorf("Unable to gather metrics for %s: %v", client.URL, err)) }