Move to vendor
Signed-off-by: Olivier Gambier <olivier@docker.com>
This commit is contained in:
parent
c8d8e7e357
commit
77e69b9cf3
1268 changed files with 34 additions and 24 deletions
194
vendor/github.com/yvasiyarov/gorelic/http_metrics.go
generated
vendored
Normal file
194
vendor/github.com/yvasiyarov/gorelic/http_metrics.go
generated
vendored
Normal file
|
@ -0,0 +1,194 @@
|
|||
package gorelic
|
||||
|
||||
import (
|
||||
metrics "github.com/yvasiyarov/go-metrics"
|
||||
"github.com/yvasiyarov/newrelic_platform_go"
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
type tHTTPHandlerFunc func(http.ResponseWriter, *http.Request)
|
||||
type tHTTPHandler struct {
|
||||
originalHandler http.Handler
|
||||
originalHandlerFunc tHTTPHandlerFunc
|
||||
isFunc bool
|
||||
timer metrics.Timer
|
||||
}
|
||||
|
||||
var httpTimer metrics.Timer
|
||||
|
||||
func newHTTPHandlerFunc(h tHTTPHandlerFunc) *tHTTPHandler {
|
||||
return &tHTTPHandler{
|
||||
isFunc: true,
|
||||
originalHandlerFunc: h,
|
||||
}
|
||||
}
|
||||
func newHTTPHandler(h http.Handler) *tHTTPHandler {
|
||||
return &tHTTPHandler{
|
||||
isFunc: false,
|
||||
originalHandler: h,
|
||||
}
|
||||
}
|
||||
|
||||
func (handler *tHTTPHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
|
||||
startTime := time.Now()
|
||||
defer handler.timer.UpdateSince(startTime)
|
||||
|
||||
if handler.isFunc {
|
||||
handler.originalHandlerFunc(w, req)
|
||||
} else {
|
||||
handler.originalHandler.ServeHTTP(w, req)
|
||||
}
|
||||
}
|
||||
|
||||
type baseTimerMetrica struct {
|
||||
dataSource metrics.Timer
|
||||
name string
|
||||
units string
|
||||
}
|
||||
|
||||
func (metrica *baseTimerMetrica) GetName() string {
|
||||
return metrica.name
|
||||
}
|
||||
|
||||
func (metrica *baseTimerMetrica) GetUnits() string {
|
||||
return metrica.units
|
||||
}
|
||||
|
||||
type timerRate1Metrica struct {
|
||||
*baseTimerMetrica
|
||||
}
|
||||
|
||||
func (metrica *timerRate1Metrica) GetValue() (float64, error) {
|
||||
return metrica.dataSource.Rate1(), nil
|
||||
}
|
||||
|
||||
type timerRateMeanMetrica struct {
|
||||
*baseTimerMetrica
|
||||
}
|
||||
|
||||
func (metrica *timerRateMeanMetrica) GetValue() (float64, error) {
|
||||
return metrica.dataSource.RateMean(), nil
|
||||
}
|
||||
|
||||
type timerMeanMetrica struct {
|
||||
*baseTimerMetrica
|
||||
}
|
||||
|
||||
func (metrica *timerMeanMetrica) GetValue() (float64, error) {
|
||||
return metrica.dataSource.Mean() / float64(time.Millisecond), nil
|
||||
}
|
||||
|
||||
type timerMinMetrica struct {
|
||||
*baseTimerMetrica
|
||||
}
|
||||
|
||||
func (metrica *timerMinMetrica) GetValue() (float64, error) {
|
||||
return float64(metrica.dataSource.Min()) / float64(time.Millisecond), nil
|
||||
}
|
||||
|
||||
type timerMaxMetrica struct {
|
||||
*baseTimerMetrica
|
||||
}
|
||||
|
||||
func (metrica *timerMaxMetrica) GetValue() (float64, error) {
|
||||
return float64(metrica.dataSource.Max()) / float64(time.Millisecond), nil
|
||||
}
|
||||
|
||||
type timerPercentile75Metrica struct {
|
||||
*baseTimerMetrica
|
||||
}
|
||||
|
||||
func (metrica *timerPercentile75Metrica) GetValue() (float64, error) {
|
||||
return metrica.dataSource.Percentile(0.75) / float64(time.Millisecond), nil
|
||||
}
|
||||
|
||||
type timerPercentile90Metrica struct {
|
||||
*baseTimerMetrica
|
||||
}
|
||||
|
||||
func (metrica *timerPercentile90Metrica) GetValue() (float64, error) {
|
||||
return metrica.dataSource.Percentile(0.90) / float64(time.Millisecond), nil
|
||||
}
|
||||
|
||||
type timerPercentile95Metrica struct {
|
||||
*baseTimerMetrica
|
||||
}
|
||||
|
||||
func (metrica *timerPercentile95Metrica) GetValue() (float64, error) {
|
||||
return metrica.dataSource.Percentile(0.95) / float64(time.Millisecond), nil
|
||||
}
|
||||
|
||||
func addHTTPMericsToComponent(component newrelic_platform_go.IComponent, timer metrics.Timer) {
|
||||
rate1 := &timerRate1Metrica{
|
||||
baseTimerMetrica: &baseTimerMetrica{
|
||||
name: "http/throughput/1minute",
|
||||
units: "rps",
|
||||
dataSource: timer,
|
||||
},
|
||||
}
|
||||
component.AddMetrica(rate1)
|
||||
|
||||
rateMean := &timerRateMeanMetrica{
|
||||
baseTimerMetrica: &baseTimerMetrica{
|
||||
name: "http/throughput/rateMean",
|
||||
units: "rps",
|
||||
dataSource: timer,
|
||||
},
|
||||
}
|
||||
component.AddMetrica(rateMean)
|
||||
|
||||
responseTimeMean := &timerMeanMetrica{
|
||||
baseTimerMetrica: &baseTimerMetrica{
|
||||
name: "http/responseTime/mean",
|
||||
units: "ms",
|
||||
dataSource: timer,
|
||||
},
|
||||
}
|
||||
component.AddMetrica(responseTimeMean)
|
||||
|
||||
responseTimeMax := &timerMaxMetrica{
|
||||
baseTimerMetrica: &baseTimerMetrica{
|
||||
name: "http/responseTime/max",
|
||||
units: "ms",
|
||||
dataSource: timer,
|
||||
},
|
||||
}
|
||||
component.AddMetrica(responseTimeMax)
|
||||
|
||||
responseTimeMin := &timerMinMetrica{
|
||||
baseTimerMetrica: &baseTimerMetrica{
|
||||
name: "http/responseTime/min",
|
||||
units: "ms",
|
||||
dataSource: timer,
|
||||
},
|
||||
}
|
||||
component.AddMetrica(responseTimeMin)
|
||||
|
||||
responseTimePercentile75 := &timerPercentile75Metrica{
|
||||
baseTimerMetrica: &baseTimerMetrica{
|
||||
name: "http/responseTime/percentile75",
|
||||
units: "ms",
|
||||
dataSource: timer,
|
||||
},
|
||||
}
|
||||
component.AddMetrica(responseTimePercentile75)
|
||||
|
||||
responseTimePercentile90 := &timerPercentile90Metrica{
|
||||
baseTimerMetrica: &baseTimerMetrica{
|
||||
name: "http/responseTime/percentile90",
|
||||
units: "ms",
|
||||
dataSource: timer,
|
||||
},
|
||||
}
|
||||
component.AddMetrica(responseTimePercentile90)
|
||||
|
||||
responseTimePercentile95 := &timerPercentile95Metrica{
|
||||
baseTimerMetrica: &baseTimerMetrica{
|
||||
name: "http/responseTime/percentile95",
|
||||
units: "ms",
|
||||
dataSource: timer,
|
||||
},
|
||||
}
|
||||
component.AddMetrica(responseTimePercentile95)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue