Query servers in parallel in dns_query input (#4754)

This commit is contained in:
Lee Jaeyong 2018-09-28 09:26:36 +09:00 committed by Daniel Nelson
parent af0ef55c02
commit 7d97ae6421
1 changed files with 23 additions and 17 deletions

View File

@ -5,6 +5,7 @@ import (
"fmt"
"net"
"strconv"
"sync"
"time"
"github.com/miekg/dns"
@ -70,10 +71,13 @@ func (d *DnsQuery) Description() string {
return "Query given DNS server and gives statistics"
}
func (d *DnsQuery) Gather(acc telegraf.Accumulator) error {
var wg sync.WaitGroup
d.setDefaultValues()
for _, domain := range d.Domains {
for _, server := range d.Servers {
wg.Add(1)
go func(domain, server string) {
fields := make(map[string]interface{}, 2)
tags := map[string]string{
"server": server,
@ -93,9 +97,11 @@ func (d *DnsQuery) Gather(acc telegraf.Accumulator) error {
}
acc.AddFields("dns_query", fields, tags)
}(domain, server)
}
}
wg.Wait()
return nil
}