request_metrics.go 811 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package middleware
  2. import (
  3. "net/http"
  4. "strings"
  5. "github.com/grafana/grafana/pkg/metrics"
  6. "gopkg.in/macaron.v1"
  7. )
  8. func RequestMetrics() macaron.Handler {
  9. return func(res http.ResponseWriter, req *http.Request, c *macaron.Context) {
  10. rw := res.(macaron.ResponseWriter)
  11. c.Next()
  12. status := rw.Status()
  13. if strings.HasPrefix(req.RequestURI, "/api/datasources/proxy") {
  14. return
  15. }
  16. if strings.HasPrefix(req.RequestURI, "/api/") {
  17. switch status {
  18. case 200:
  19. metrics.M_Api_Status_200.Inc(1)
  20. case 404:
  21. metrics.M_Api_Status_404.Inc(1)
  22. case 500:
  23. metrics.M_Api_Status_500.Inc(1)
  24. }
  25. } else {
  26. switch status {
  27. case 200:
  28. metrics.M_Page_Status_200.Inc(1)
  29. case 404:
  30. metrics.M_Page_Status_404.Inc(1)
  31. case 500:
  32. metrics.M_Page_Status_500.Inc(1)
  33. }
  34. }
  35. }
  36. }