diff options
author | 2016-04-28 10:26:58 +0100 | |
---|---|---|
committer | 2016-04-28 10:26:58 +0100 | |
commit | 2700eece2ee1e7031f935be71e3bb1c8fd4cf05b (patch) | |
tree | 58b5e85d2474f743179c54d64388c77fafdf56d7 /middleware/pprof/pprof.go | |
parent | 7a8d943bccc7ec0d21e13374c836cf9197996e10 (diff) | |
download | coredns-2700eece2ee1e7031f935be71e3bb1c8fd4cf05b.tar.gz coredns-2700eece2ee1e7031f935be71e3bb1c8fd4cf05b.tar.zst coredns-2700eece2ee1e7031f935be71e3bb1c8fd4cf05b.zip |
pprof middleware (#138)
Add pprof middleware, enabled by pprof directive.
Diffstat (limited to 'middleware/pprof/pprof.go')
-rw-r--r-- | middleware/pprof/pprof.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/middleware/pprof/pprof.go b/middleware/pprof/pprof.go new file mode 100644 index 000000000..677690ff8 --- /dev/null +++ b/middleware/pprof/pprof.go @@ -0,0 +1,32 @@ +package pprof + +import ( + "log" + "net/http" + _ "net/http/pprof" + + "github.com/miekg/coredns/middleware" + + "github.com/miekg/dns" + "golang.org/x/net/context" +) + +const addr = "localhost:8053" + +type Handler struct { + Next middleware.Handler +} + +// ServeDNS passes all other requests up the chain. +func (h *Handler) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { + return h.Next.ServeDNS(ctx, w, r) +} + +func (h *Handler) Start() error { + go func() { + if err := http.ListenAndServe(addr, nil); err != nil { + log.Printf("[ERROR] Failed to start pprof handler: %s", err) + } + }() + return nil +} |