summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorkali kaneko (leap communications) <kali@leap.se>2020-01-31 14:53:29 -0600
committerkali kaneko (leap communications) <kali@leap.se>2020-02-11 17:39:04 +0100
commitecaa22111ee8e34111080139e1e8a92b90e30158 (patch)
tree65f34061265cb346e5380416ba806b92a010fe13 /pkg
parent6da07c8be89be0d40e8bdae9d773bfb5d2d33ad9 (diff)
[feat] add prometheus instrumentation
Diffstat (limited to 'pkg')
-rw-r--r--pkg/metrics/metrics.go23
-rw-r--r--pkg/web/certs.go3
-rw-r--r--pkg/web/middleware.go4
3 files changed, 30 insertions, 0 deletions
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)
}