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

View File

@@ -50,7 +50,12 @@ func init() {
network.SetDefaultFirewallHandler(defaultHandler)
}
func interceptionPrep() (err error) {
func interceptionPrep() error {
err := registerMetrics()
if err != nil {
return err
}
return prepAPIAuth()
}
@@ -81,6 +86,10 @@ func SetNameserverIPMatcher(fn func(ip net.IP) bool) error {
}
func handlePacket(ctx context.Context, pkt packet.Packet) {
// Record metrics.
startTime := time.Now()
defer packetHandlingHistogram.UpdateDuration(startTime)
if fastTrackedPermit(pkt) {
return
}

21
firewall/metrics.go Normal file
View File

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