Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime Martinez <jmartinez@gitlab.com>2020-06-04 04:56:03 +0300
committerJaime Martinez <jmartinez@gitlab.com>2020-06-04 04:56:03 +0300
commitc877296b468e4a828da27f4fd47c3e17eb7e2e1d (patch)
tree699bfd4507f8645b1f5b9a0dc2a717870a960c88
parent4eedf5c25e17698d03cd71960040f155f51672c9 (diff)
Add serving time metric for all files
-rw-r--r--app.go4
-rw-r--r--internal/serving/disk/reader.go6
-rw-r--r--internal/serving/disk/serving.go2
-rw-r--r--metrics/metrics.go6
4 files changed, 14 insertions, 4 deletions
diff --git a/app.go b/app.go
index 217f9db7..38744e93 100644
--- a/app.go
+++ b/app.go
@@ -7,6 +7,7 @@ import (
"net/http"
"os"
"sync"
+ "time"
ghandlers "github.com/gorilla/handlers"
"github.com/rs/cors"
@@ -257,6 +258,9 @@ func (a *theApp) accessControlMiddleware(handler http.Handler) http.Handler {
// return a 404 Not Found response
func (a *theApp) serveFileOrNotFoundHandler() http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ start := time.Now()
+ defer metrics.ServingTime.Set(time.Since(start).Seconds())
+
domain := request.GetDomain(r)
fileServed := domain.ServeFileHTTP(w, r)
diff --git a/internal/serving/disk/reader.go b/internal/serving/disk/reader.go
index 38d055cf..949dd4e0 100644
--- a/internal/serving/disk/reader.go
+++ b/internal/serving/disk/reader.go
@@ -17,7 +17,7 @@ import (
// Reader is a disk access driver
type Reader struct {
- fileSizeMetrics *prometheus.GaugeVec
+ fileSizeMetric *prometheus.GaugeVec
}
func (reader *Reader) tryFile(h serving.Handler) error {
@@ -144,7 +144,7 @@ func (reader *Reader) serveFile(w http.ResponseWriter, r *http.Request, origPath
return err
}
- reader.fileSizeMetrics.With(prometheus.Labels{"serving_type": "disk", "content_type": contentType}).Set(float64(fi.Size()))
+ reader.fileSizeMetric.With(prometheus.Labels{"serving_type": "disk", "content_type": contentType}).Set(float64(fi.Size()))
w.Header().Set("Content-Type", contentType)
http.ServeContent(w, r, origPath, fi.ModTime(), file)
@@ -172,7 +172,7 @@ func (reader *Reader) serveCustomFile(w http.ResponseWriter, r *http.Request, co
return err
}
- reader.fileSizeMetrics.With(prometheus.Labels{"serving_type": "disk", "content_type": contentType}).Set(float64(fi.Size()))
+ reader.fileSizeMetric.With(prometheus.Labels{"serving_type": "disk", "content_type": contentType}).Set(float64(fi.Size()))
w.Header().Set("Content-Type", contentType)
w.Header().Set("Content-Length", strconv.FormatInt(fi.Size(), 10))
diff --git a/internal/serving/disk/serving.go b/internal/serving/disk/serving.go
index 84945c8d..94a6d001 100644
--- a/internal/serving/disk/serving.go
+++ b/internal/serving/disk/serving.go
@@ -8,7 +8,7 @@ import (
var disk = &Disk{
reader: Reader{
- fileSizeMetrics: metrics.ServingFileSize,
+ fileSizeMetric: metrics.ServingFileSize,
},
}
diff --git a/metrics/metrics.go b/metrics/metrics.go
index 1950eb77..949ffa1e 100644
--- a/metrics/metrics.go
+++ b/metrics/metrics.go
@@ -82,6 +82,12 @@ var (
Name: "gitlab_pages_serving_file_size",
Help: "The size in bytes for each file that has been served",
}, []string{"serving_type", "content_type"})
+
+ // ServingTime metric for time taken to find a file serving it or not found.
+ ServingTime = prometheus.NewGauge(prometheus.GaugeOpts{
+ Name: "gitlab_pages_serving_time",
+ Help: "The time (in seconds) taken to serve a file",
+ })
)
// MustRegister collectors with the Prometheus client