diff options
Diffstat (limited to 'middleware')
-rw-r--r-- | middleware/health/README.md | 4 | ||||
-rw-r--r-- | middleware/metrics/handler.go | 4 | ||||
-rw-r--r-- | middleware/pprof/README.md | 25 | ||||
-rw-r--r-- | middleware/pprof/pprof.go | 32 |
4 files changed, 63 insertions, 2 deletions
diff --git a/middleware/health/README.md b/middleware/health/README.md index af3b2ddd4..efab90a4a 100644 --- a/middleware/health/README.md +++ b/middleware/health/README.md @@ -19,3 +19,7 @@ will just return "OK", when CoreDNS is healthy. This middleware only needs to be enabled once. ## Examples + +~~~ +health localhost:8091 +~~~ diff --git a/middleware/metrics/handler.go b/middleware/metrics/handler.go index eeba5acb2..1a61f3e11 100644 --- a/middleware/metrics/handler.go +++ b/middleware/metrics/handler.go @@ -3,10 +3,10 @@ package metrics import ( "time" - "golang.org/x/net/context" - "github.com/miekg/coredns/middleware" + "github.com/miekg/dns" + "golang.org/x/net/context" ) func (m Metrics) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { diff --git a/middleware/pprof/README.md b/middleware/pprof/README.md new file mode 100644 index 000000000..7798f5a63 --- /dev/null +++ b/middleware/pprof/README.md @@ -0,0 +1,25 @@ +# pprof + +pprof publishes runtime profiling data at endpoints under /debug/pprof. You can visit /debug/pprof +on your site for an index of the available endpoints. By default it will listen on localhost:8053. + +> This is a debugging tool. Certain requests (such as collecting execution traces) can be slow. If +> you use pprof on a live site, consider restricting access or enabling it only temporarily. + +For more information, please see [Go's pprof +documentation](https://golang.org/pkg/net/http/pprof/s://golang.org/pkg/net/http/pprof/) and read +[Profiling Go Programs](https://blog.golang.org/profiling-go-programs). + +## Syntax + +~~~ +pprof +~~~ + +## Examples + +Enable pprof endpoints: + +~~~ +pprof +~~~ 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 +} |