From ecaa22111ee8e34111080139e1e8a92b90e30158 Mon Sep 17 00:00:00 2001 From: "kali kaneko (leap communications)" Date: Fri, 31 Jan 2020 14:53:29 -0600 Subject: [feat] add prometheus instrumentation --- pkg/metrics/metrics.go | 23 +++++++++++++++++++++++ pkg/web/certs.go | 3 +++ pkg/web/middleware.go | 4 ++++ 3 files changed, 30 insertions(+) create mode 100644 pkg/metrics/metrics.go (limited to 'pkg') diff --git a/pkg/metrics/metrics.go b/pkg/metrics/metrics.go new file mode 100644 index 0000000..8b4bdbb --- /dev/null +++ b/pkg/metrics/metrics.go @@ -0,0 +1,23 @@ +package metrics + +import ( + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promauto" +) + +var ( + FailedLogins = promauto.NewCounter(prometheus.CounterOpts{ + Name: "vpnweb_failed_logins_total", + Help: "The total number of failed logins", + }) + + SuccessfulLogins = promauto.NewCounter(prometheus.CounterOpts{ + Name: "vpnweb_successful_logins_total", + Help: "The total number of processed events", + }) + + DownloadedCerts = promauto.NewCounter(prometheus.CounterOpts{ + Name: "vpnweb_downloaded_certs_total", + Help: "The total number of downloaded certs", + }) +) diff --git a/pkg/web/certs.go b/pkg/web/certs.go index 779bf72..203c9d9 100644 --- a/pkg/web/certs.go +++ b/pkg/web/certs.go @@ -16,6 +16,7 @@ package web import ( + "0xacab.org/leap/vpnweb/pkg/metrics" "crypto/rand" "crypto/rsa" "crypto/tls" @@ -96,4 +97,6 @@ func (ci *caInfo) CertWriter(out io.Writer) { // Write the public key pem.Encode(out, &pem.Block{Type: "CERTIFICATE", Bytes: certB}) + + metrics.DownloadedCerts.Inc() } diff --git a/pkg/web/middleware.go b/pkg/web/middleware.go index 3a74477..fbbdbaf 100644 --- a/pkg/web/middleware.go +++ b/pkg/web/middleware.go @@ -18,6 +18,7 @@ package web import ( "0xacab.org/leap/vpnweb/pkg/auth/creds" "0xacab.org/leap/vpnweb/pkg/config" + "0xacab.org/leap/vpnweb/pkg/metrics" "encoding/json" "github.com/auth0/go-jwt-middleware" "github.com/dgrijalva/jwt-go" @@ -53,11 +54,14 @@ func AuthMiddleware(authenticationFunc func(*creds.Credentials) bool, opts *conf valid := authenticationFunc(&c) if !valid { + metrics.FailedLogins.Inc() log.Println("Wrong auth for user", c.User) http.Error(w, "Wrong user and/or password", http.StatusUnauthorized) return } + metrics.SuccessfulLogins.Inc() + if strings.ToLower(debugAuth) == "yes" { log.Println("Valid auth for user", c.User) } -- cgit v1.2.3