diff options
author | 2022-02-17 14:37:40 +0100 | |
---|---|---|
committer | 2022-02-17 08:37:40 -0500 | |
commit | c121aaab344545487420cfb8192841eb13f096d7 (patch) | |
tree | c3aa415ff9088bbd69f1c6b4a883e381f676c31d /core | |
parent | e5626a77bbda8fa4c7526753fe9ab78dc21e3220 (diff) | |
download | coredns-c121aaab344545487420cfb8192841eb13f096d7.tar.gz coredns-c121aaab344545487420cfb8192841eb13f096d7.tar.zst coredns-c121aaab344545487420cfb8192841eb13f096d7.zip |
Add metric counting DNS-over-HTTPS responses (#5130)
Signed-off-by: Rudolf Schonecker <rudolf.schonecker@jamf.com>
Diffstat (limited to 'core')
-rw-r--r-- | core/dnsserver/server_https.go | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/core/dnsserver/server_https.go b/core/dnsserver/server_https.go index b8bdbc66d..ba6097215 100644 --- a/core/dnsserver/server_https.go +++ b/core/dnsserver/server_https.go @@ -10,6 +10,7 @@ import ( "time" "github.com/coredns/caddy" + "github.com/coredns/coredns/plugin/metrics/vars" "github.com/coredns/coredns/plugin/pkg/dnsutil" "github.com/coredns/coredns/plugin/pkg/doh" "github.com/coredns/coredns/plugin/pkg/response" @@ -128,12 +129,14 @@ func (s *ServerHTTPS) ServeHTTP(w http.ResponseWriter, r *http.Request) { if !s.validRequest(r) { http.Error(w, "", http.StatusNotFound) + s.countResponse(http.StatusNotFound) return } msg, err := doh.RequestToMsg(r) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) + s.countResponse(http.StatusBadRequest) return } @@ -157,6 +160,7 @@ func (s *ServerHTTPS) ServeHTTP(w http.ResponseWriter, r *http.Request) { // handler has not provided any response message. if dw.Msg == nil { http.Error(w, "No response", http.StatusInternalServerError) + s.countResponse(http.StatusInternalServerError) return } @@ -169,10 +173,15 @@ func (s *ServerHTTPS) ServeHTTP(w http.ResponseWriter, r *http.Request) { w.Header().Set("Cache-Control", fmt.Sprintf("max-age=%f", age.Seconds())) w.Header().Set("Content-Length", strconv.Itoa(len(buf))) w.WriteHeader(http.StatusOK) + s.countResponse(http.StatusOK) w.Write(buf) } +func (s *ServerHTTPS) countResponse(status int) { + vars.HTTPSResponsesCount.WithLabelValues(s.Addr, strconv.Itoa(status)).Inc() +} + // Shutdown stops the server (non gracefully). func (s *ServerHTTPS) Shutdown() error { if s.httpsServer != nil { |