mirror of
https://github.com/yusing/godoxy.git
synced 2025-06-09 04:52:35 +02:00
changed req time elapsed to count on status code sent
This commit is contained in:
parent
6712e9b109
commit
6be3aef367
1 changed files with 19 additions and 9 deletions
|
@ -98,15 +98,18 @@ type ReverseProxy struct {
|
|||
|
||||
type httpMetricLogger struct {
|
||||
http.ResponseWriter
|
||||
labels metrics.HTTPRouteMetricLabels
|
||||
timestamp time.Time
|
||||
labels *metrics.HTTPRouteMetricLabels
|
||||
}
|
||||
|
||||
// WriteHeader implements http.ResponseWriter.
|
||||
func (l *httpMetricLogger) WriteHeader(status int) {
|
||||
l.ResponseWriter.WriteHeader(status)
|
||||
duration := time.Since(l.timestamp)
|
||||
go func() {
|
||||
m := metrics.GetRouteMetrics()
|
||||
m.HTTPReqTotal.Inc()
|
||||
m.HTTPReqElapsed.With(l.labels).Set(float64(duration.Milliseconds()))
|
||||
|
||||
// ignore 1xx
|
||||
switch {
|
||||
|
@ -276,11 +279,21 @@ func (p *ReverseProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
|||
func (p *ReverseProxy) handler(rw http.ResponseWriter, req *http.Request) {
|
||||
if common.PrometheusEnabled {
|
||||
t := time.Now()
|
||||
visitor, _, err := net.SplitHostPort(req.RemoteAddr)
|
||||
var visitor string
|
||||
if realIP := req.Header.Get("X-Real-IP"); realIP != "" {
|
||||
visitor = realIP
|
||||
}
|
||||
if fwdIP := req.Header.Get("X-Forwarded-For"); visitor == "" && fwdIP != "" {
|
||||
visitor = fwdIP
|
||||
}
|
||||
if visitor == "" {
|
||||
var err error
|
||||
visitor, _, err = net.SplitHostPort(req.RemoteAddr)
|
||||
if err != nil {
|
||||
visitor = req.RemoteAddr
|
||||
}
|
||||
lbls := metrics.HTTPRouteMetricLabels{
|
||||
}
|
||||
lbls := &metrics.HTTPRouteMetricLabels{
|
||||
Service: p.TargetName,
|
||||
Method: req.Method,
|
||||
Host: req.Host,
|
||||
|
@ -289,12 +302,9 @@ func (p *ReverseProxy) handler(rw http.ResponseWriter, req *http.Request) {
|
|||
}
|
||||
rw = &httpMetricLogger{
|
||||
ResponseWriter: rw,
|
||||
timestamp: t,
|
||||
labels: lbls,
|
||||
}
|
||||
defer func() {
|
||||
duration := time.Since(t)
|
||||
metrics.GetRouteMetrics().HTTPReqElapsed.With(lbls).Set(float64(duration.Milliseconds()))
|
||||
}()
|
||||
}
|
||||
|
||||
transport := p.Transport
|
||||
|
|
Loading…
Add table
Reference in a new issue