Reuse transport on next interval in jolokia agent (#4137)

This commit is contained in:
Daniel Nelson 2018-05-11 17:48:27 -07:00 committed by GitHub
parent 5b599337a3
commit 5030373a4c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 8 deletions

View File

@ -23,6 +23,7 @@ type JolokiaAgent struct {
Metrics []MetricConfig `toml:"metric"` Metrics []MetricConfig `toml:"metric"`
gatherer *Gatherer gatherer *Gatherer
clients []*Client
} }
func (ja *JolokiaAgent) SampleConfig() string { func (ja *JolokiaAgent) SampleConfig() string {
@ -60,20 +61,27 @@ func (ja *JolokiaAgent) Gather(acc telegraf.Accumulator) error {
ja.gatherer = NewGatherer(ja.createMetrics()) 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 var wg sync.WaitGroup
for _, url := range ja.URLs { for _, client := range ja.clients {
client, err := ja.createClient(url)
if err != nil {
acc.AddError(fmt.Errorf("Unable to create client for %s: %v", url, err))
continue
}
wg.Add(1) wg.Add(1)
go func(client *Client) { go func(client *Client) {
defer wg.Done() defer wg.Done()
err = ja.gatherer.Gather(client, acc) err := ja.gatherer.Gather(client, acc)
if err != nil { if err != nil {
acc.AddError(fmt.Errorf("Unable to gather metrics for %s: %v", client.URL, err)) acc.AddError(fmt.Errorf("Unable to gather metrics for %s: %v", client.URL, err))
} }