mirror of
https://github.com/coredns/coredns.git
synced 2025-11-01 10:43:17 -04:00
Various trace improvements (#527)
This commit is contained in:
committed by
Miek Gieben
parent
bd033ef6c7
commit
5aa30308d9
@@ -2,8 +2,8 @@ package trace
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/miekg/coredns/core/dnsserver"
|
||||
"github.com/miekg/coredns/middleware"
|
||||
@@ -29,38 +29,65 @@ func setup(c *caddy.Controller) error {
|
||||
return t
|
||||
})
|
||||
|
||||
traceOnce.Do(func() {
|
||||
c.OnStartup(t.OnStartup)
|
||||
})
|
||||
c.OnStartup(t.OnStartup)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func traceParse(c *caddy.Controller) (*Trace, error) {
|
||||
var (
|
||||
tr = &Trace{Endpoint: defEP, EndpointType: defEpType}
|
||||
tr = &Trace{Endpoint: defEP, EndpointType: defEpType, every: 1, serviceName: defServiceName}
|
||||
err error
|
||||
)
|
||||
|
||||
cfg := dnsserver.GetConfig(c)
|
||||
tr.ServiceEndpoint = cfg.ListenHost + ":" + cfg.Port
|
||||
for c.Next() {
|
||||
if c.Val() == "trace" {
|
||||
var err error
|
||||
args := c.RemainingArgs()
|
||||
switch len(args) {
|
||||
case 0:
|
||||
tr.Endpoint, err = normalizeEndpoint(tr.EndpointType, defEP)
|
||||
case 1:
|
||||
tr.Endpoint, err = normalizeEndpoint(defEpType, args[0])
|
||||
case 2:
|
||||
tr.EndpointType = strings.ToLower(args[0])
|
||||
tr.Endpoint, err = normalizeEndpoint(tr.EndpointType, args[1])
|
||||
default:
|
||||
err = c.ArgErr()
|
||||
}
|
||||
if err != nil {
|
||||
return tr, err
|
||||
for c.Next() { // trace
|
||||
var err error
|
||||
args := c.RemainingArgs()
|
||||
switch len(args) {
|
||||
case 0:
|
||||
tr.Endpoint, err = normalizeEndpoint(tr.EndpointType, defEP)
|
||||
case 1:
|
||||
tr.Endpoint, err = normalizeEndpoint(defEpType, args[0])
|
||||
case 2:
|
||||
tr.EndpointType = strings.ToLower(args[0])
|
||||
tr.Endpoint, err = normalizeEndpoint(tr.EndpointType, args[1])
|
||||
default:
|
||||
err = c.ArgErr()
|
||||
}
|
||||
if err != nil {
|
||||
return tr, err
|
||||
}
|
||||
for c.NextBlock() {
|
||||
switch c.Val() {
|
||||
case "every":
|
||||
args := c.RemainingArgs()
|
||||
if len(args) != 1 {
|
||||
return nil, c.ArgErr()
|
||||
}
|
||||
tr.every, err = strconv.ParseUint(args[0], 10, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "service":
|
||||
args := c.RemainingArgs()
|
||||
if len(args) != 1 {
|
||||
return nil, c.ArgErr()
|
||||
}
|
||||
tr.serviceName = args[0]
|
||||
case "client_server":
|
||||
args := c.RemainingArgs()
|
||||
if len(args) > 1 {
|
||||
return nil, c.ArgErr()
|
||||
}
|
||||
tr.clientServer = true
|
||||
if len(args) == 1 {
|
||||
tr.clientServer, err = strconv.ParseBool(args[0])
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -79,9 +106,8 @@ func normalizeEndpoint(epType, ep string) (string, error) {
|
||||
}
|
||||
}
|
||||
|
||||
var traceOnce sync.Once
|
||||
|
||||
const (
|
||||
defEP = "localhost:9411"
|
||||
defEpType = "zipkin"
|
||||
defServiceName = "coredns"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user