Use metrics

This commit is contained in:
Daniel
2021-01-28 17:45:52 +01:00
parent ee9ee3dc68
commit c9b89ef2ea
13 changed files with 289 additions and 6 deletions

21
nameserver/metrics.go Normal file
View File

@@ -0,0 +1,21 @@
package nameserver
import (
"github.com/safing/portbase/api"
"github.com/safing/portbase/config"
"github.com/safing/portbase/metrics"
)
var requestsHistogram *metrics.Histogram
func registerMetrics() (err error) {
requestsHistogram, err = metrics.NewHistogram(
"nameserver/request/duration/seconds",
nil,
&metrics.Options{
Permission: api.PermitUser,
ExpertiseLevel: config.ExpertiseLevelExpert,
})
return err
}

View File

@@ -33,7 +33,12 @@ func init() {
}
func prep() error {
return registerConfig()
err := registerConfig()
if err != nil {
return err
}
return registerMetrics()
}
func start() error {

View File

@@ -5,6 +5,7 @@ import (
"errors"
"net"
"strings"
"time"
"github.com/safing/portbase/log"
"github.com/safing/portmaster/firewall"
@@ -27,6 +28,10 @@ func handleRequestAsWorker(w dns.ResponseWriter, query *dns.Msg) {
}
func handleRequest(ctx context.Context, w dns.ResponseWriter, request *dns.Msg) error { //nolint:gocognit // TODO
// Record metrics.
startTime := time.Now()
defer requestsHistogram.UpdateDuration(startTime)
// Only process first question, that's how everyone does it.
if len(request.Question) == 0 {
return errors.New("missing question")