From 05f6b79e293a9b73b7f459a34849150bf22374b7 Mon Sep 17 00:00:00 2001 From: Nathan Osman Date: Fri, 21 Oct 2016 01:36:07 -0700 Subject: [PATCH] Add optional statistics to API and web UI. A new option (--web.statistics) enables the collection of some basic information about requests and responses. This currently consists of the most recent 10 requests that resulted in HTTP 4xx or 5xx errors. --- configuration.go | 3 + docs/img/traefik-health.png | Bin 52051 -> 53776 bytes docs/toml.md | 25 +++++- server.go | 6 ++ stats.go | 85 ++++++++++++++++++ traefik.sample.toml | 4 + types/types.go | 5 ++ web.go | 33 +++++-- .../app/sections/health/health.controller.js | 19 +++- webui/src/app/sections/health/health.html | 30 +++++++ 10 files changed, 199 insertions(+), 11 deletions(-) create mode 100644 stats.go diff --git a/configuration.go b/configuration.go index 20546e8b3..a0e1fab2a 100644 --- a/configuration.go +++ b/configuration.go @@ -315,6 +315,9 @@ func NewTraefikDefaultPointersConfiguration() *TraefikConfiguration { // default Web var defaultWeb WebProvider defaultWeb.Address = ":8080" + defaultWeb.Statistics = &types.Statistics{ + RecentErrors: 10, + } // default Marathon var defaultMarathon provider.Marathon diff --git a/docs/img/traefik-health.png b/docs/img/traefik-health.png index 543bac9b4b533112ae954dd5f452c871713eeb50..608174ac713302eb6afbaa5cbb7f9a82993a9aee 100644 GIT binary patch literal 53776 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 E09o}Rp8x;= literal 52051 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 400 { + s.mutex.Lock() + defer s.mutex.Unlock() + s.recentErrors = append([]*statsError{ + { + StatusCode: recorder.statusCode, + Status: http.StatusText(recorder.statusCode), + Method: r.Method, + Host: r.Host, + Path: r.URL.Path, + Time: time.Now(), + }, + }, s.recentErrors...) + // Limit the size of the list to numRecentErrors + if len(s.recentErrors) > s.numRecentErrors { + s.recentErrors = s.recentErrors[:s.numRecentErrors] + } + } +} + +// Data returns a copy of the statistics that have been gathered. +func (s *StatsRecorder) Data() *Stats { + s.mutex.RLock() + defer s.mutex.RUnlock() + + // We can't return the slice directly or a race condition might develop + recentErrors := make([]*statsError, len(s.recentErrors)) + copy(recentErrors, s.recentErrors) + + return &Stats{ + RecentErrors: recentErrors, + } +} diff --git a/traefik.sample.toml b/traefik.sample.toml index 754e6cc80..5942a8b0b 100644 --- a/traefik.sample.toml +++ b/traefik.sample.toml @@ -271,6 +271,10 @@ # # Optional # ReadOnly = false +# +# Enable more detailed statistics +# [web.statistics] +# RecentErrors = 10 # To enable basic auth on the webui # with 2 user/pass: test:test and test2:test2 diff --git a/types/types.go b/types/types.go index 76fa96bd4..ac29a2e6f 100644 --- a/types/types.go +++ b/types/types.go @@ -228,3 +228,8 @@ type Digest struct { func CanonicalDomain(domain string) string { return strings.ToLower(strings.TrimSpace(domain)) } + +// Statistics provides options for monitoring request and response stats +type Statistics struct { + RecentErrors int `description:"Number of recent errors logged"` +} diff --git a/web.go b/web.go index 65a10f392..037e06f27 100644 --- a/web.go +++ b/web.go @@ -17,21 +17,25 @@ import ( "github.com/containous/traefik/types" "github.com/containous/traefik/version" "github.com/elazarl/go-bindata-assetfs" - "github.com/thoas/stats" + thoas_stats "github.com/thoas/stats" "github.com/unrolled/render" ) -var metrics = stats.New() +var ( + metrics = thoas_stats.New() + statsRecorder *StatsRecorder +) // WebProvider is a provider.Provider implementation that provides the UI. // FIXME to be handled another way. type WebProvider struct { - Address string `description:"Web administration port"` - CertFile string `description:"SSL certificate"` - KeyFile string `description:"SSL certificate"` - ReadOnly bool `description:"Enable read only API"` - server *Server - Auth *types.Auth + Address string `description:"Web administration port"` + CertFile string `description:"SSL certificate"` + KeyFile string `description:"SSL certificate"` + ReadOnly bool `description:"Enable read only API"` + Statistics *types.Statistics `description:"Enable more detailed statistics"` + server *Server + Auth *types.Auth } var ( @@ -133,8 +137,19 @@ func (provider *WebProvider) Provide(configurationChan chan<- types.ConfigMessag return nil } +// healthResponse combines data returned by thoas/stats with statistics (if +// they are enabled). +type healthResponse struct { + *thoas_stats.Data + *Stats +} + func (provider *WebProvider) getHealthHandler(response http.ResponseWriter, request *http.Request) { - templatesRenderer.JSON(response, http.StatusOK, metrics.Data()) + health := &healthResponse{Data: metrics.Data()} + if statsRecorder != nil { + health.Stats = statsRecorder.Data() + } + templatesRenderer.JSON(response, http.StatusOK, health) } func (provider *WebProvider) getPingHandler(response http.ResponseWriter, request *http.Request) { diff --git a/webui/src/app/sections/health/health.controller.js b/webui/src/app/sections/health/health.controller.js index ded809b16..faaf411f2 100644 --- a/webui/src/app/sections/health/health.controller.js +++ b/webui/src/app/sections/health/health.controller.js @@ -1,5 +1,6 @@ 'use strict'; -var d3 = require('d3'); +var d3 = require('d3'), + moment = require('moment'); /** @ngInject */ function HealthController($scope, $interval, $log, Health) { @@ -160,6 +161,15 @@ function HealthController($scope, $interval, $log, Health) { } } + /** + * Format the timestamp as "x seconds ago", etc. + * + * @param {String} t Timestamp returned from the API + */ + function formatTimestamp(t) { + return moment(t, "YYYY-MM-DDTHH:mm:ssZ").fromNow(); + } + /** * Load all graph's datas * @@ -172,6 +182,13 @@ function HealthController($scope, $interval, $log, Health) { // Load datas and update Total Status Code Count graph render updateTotalStatusCodeCount(health.total_status_code_count); + // Format the timestamps + if (health.recent_errors) { + angular.forEach(health.recent_errors, function(i) { + i.time_formatted = formatTimestamp(i.time); + }); + } + // set data's view vm.health = health; } diff --git a/webui/src/app/sections/health/health.html b/webui/src/app/sections/health/health.html index b4cc0b71a..9d4f5107c 100644 --- a/webui/src/app/sections/health/health.html +++ b/webui/src/app/sections/health/health.html @@ -40,4 +40,34 @@ +

+

Recent HTTP Errors

+ + + + + + + + + + + + + + +
StatusRequestTime
{{ entry.status_code }} — {{ entry.status }} + {{ entry.method }} +   + {{ entry.host }}{{ entry.path }} + + + {{ entry.time_formatted }} + +
+

No entries

+
+
+