Explorar o código

feat(metrics): measure proxy requests

bergquist %!s(int64=9) %!d(string=hai) anos
pai
achega
6c5860d3e8
Modificáronse 2 ficheiros con 60 adicións e 24 borrados
  1. 17 4
      pkg/metrics/metrics.go
  2. 43 20
      pkg/middleware/request_metrics.go

+ 17 - 4
pkg/metrics/metrics.go

@@ -13,9 +13,15 @@ var (
 	M_Page_Status_200                      Counter
 	M_Page_Status_500                      Counter
 	M_Page_Status_404                      Counter
-	M_Api_Status_500                       Counter
-	M_Api_Status_404                       Counter
+	M_Page_Status_Unknown                  Counter
 	M_Api_Status_200                       Counter
+	M_Api_Status_404                       Counter
+	M_Api_Status_500                       Counter
+	M_Api_Status_Unknown                   Counter
+	M_Proxy_Status_200                     Counter
+	M_Proxy_Status_404                     Counter
+	M_Proxy_Status_500                     Counter
+	M_Proxy_Status_Unknown                 Counter
 	M_Api_User_SignUpStarted               Counter
 	M_Api_User_SignUpCompleted             Counter
 	M_Api_User_SignUpInvite                Counter
@@ -55,10 +61,17 @@ func initMetricVars(settings *MetricSettings) {
 	M_Page_Status_200 = RegCounter("page.resp_status", "code", "200")
 	M_Page_Status_500 = RegCounter("page.resp_status", "code", "500")
 	M_Page_Status_404 = RegCounter("page.resp_status", "code", "404")
+	M_Page_Status_Unknown = RegCounter("page.resp_status", "code", "unknown")
 
-	M_Api_Status_500 = RegCounter("api.resp_status", "code", "500")
-	M_Api_Status_404 = RegCounter("api.resp_status", "code", "404")
 	M_Api_Status_200 = RegCounter("api.resp_status", "code", "200")
+	M_Api_Status_404 = RegCounter("api.resp_status", "code", "404")
+	M_Api_Status_500 = RegCounter("api.resp_status", "code", "500")
+	M_Api_Status_Unknown = RegCounter("api.resp_status", "code", "unknown")
+
+	M_Proxy_Status_200 = RegCounter("proxy.resp_status", "code", "200")
+	M_Proxy_Status_404 = RegCounter("proxy.resp_status", "code", "404")
+	M_Proxy_Status_500 = RegCounter("proxy.resp_status", "code", "500")
+	M_Proxy_Status_Unknown = RegCounter("proxy.resp_status", "code", "unknown")
 
 	M_Api_User_SignUpStarted = RegCounter("api.user.signup_started")
 	M_Api_User_SignUpCompleted = RegCounter("api.user.signup_completed")

+ 43 - 20
pkg/middleware/request_metrics.go

@@ -16,27 +16,50 @@ func RequestMetrics() macaron.Handler {
 		status := rw.Status()
 
 		if strings.HasPrefix(req.RequestURI, "/api/datasources/proxy") {
-			return
-		}
-
-		if strings.HasPrefix(req.RequestURI, "/api/") {
-			switch status {
-			case 200:
-				metrics.M_Api_Status_200.Inc(1)
-			case 404:
-				metrics.M_Api_Status_404.Inc(1)
-			case 500:
-				metrics.M_Api_Status_500.Inc(1)
-			}
+			countProxyRequests(status)
+		} else if strings.HasPrefix(req.RequestURI, "/api/") {
+			countApiRequests(status)
 		} else {
-			switch status {
-			case 200:
-				metrics.M_Page_Status_200.Inc(1)
-			case 404:
-				metrics.M_Page_Status_404.Inc(1)
-			case 500:
-				metrics.M_Page_Status_500.Inc(1)
-			}
+			countPageRequests(status)
 		}
 	}
 }
+
+func countApiRequests(status int) {
+	switch status {
+	case 200:
+		metrics.M_Api_Status_200.Inc(1)
+	case 404:
+		metrics.M_Api_Status_404.Inc(1)
+	case 500:
+		metrics.M_Api_Status_500.Inc(1)
+	default:
+		metrics.M_Api_Status_Unknown.Inc(1)
+	}
+}
+
+func countPageRequests(status int) {
+	switch status {
+	case 200:
+		metrics.M_Page_Status_200.Inc(1)
+	case 404:
+		metrics.M_Page_Status_404.Inc(1)
+	case 500:
+		metrics.M_Page_Status_500.Inc(1)
+	default:
+		metrics.M_Page_Status_Unknown.Inc(1)
+	}
+}
+
+func countProxyRequests(status int) {
+	switch status {
+	case 200:
+		metrics.M_Proxy_Status_200.Inc(1)
+	case 404:
+		metrics.M_Proxy_Status_404.Inc(1)
+	case 500:
+		metrics.M_Proxy_Status_500.Inc(1)
+	default:
+		metrics.M_Proxy_Status_Unknown.Inc(1)
+	}
+}