Commit 72bd3f60 authored by Janos Guljas's avatar Janos Guljas

add metrics.PrometheusCollectorsFromFields

parent b8f4faa2
...@@ -2,9 +2,9 @@ package api ...@@ -2,9 +2,9 @@ package api
import ( import (
"net/http" "net/http"
"reflect"
"time" "time"
m "github.com/janos/bee/pkg/metrics"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
) )
...@@ -35,17 +35,8 @@ func newMetrics() (m metrics) { ...@@ -35,17 +35,8 @@ func newMetrics() (m metrics) {
} }
} }
func (s *server) Metrics() (cs []prometheus.Collector) { func (s *server) Metrics() []prometheus.Collector {
v := reflect.Indirect(reflect.ValueOf(s.metrics)) return m.PrometheusCollectorsFromFields(s.metrics)
for i := 0; i < v.NumField(); i++ {
if !v.Field(i).CanInterface() {
continue
}
if u, ok := v.Field(i).Interface().(prometheus.Collector); ok {
cs = append(cs, u)
}
}
return cs
} }
func (s *server) pageviewMetricsHandler(h http.Handler) http.Handler { func (s *server) pageviewMetricsHandler(h http.Handler) http.Handler {
......
package metrics
import (
"reflect"
"github.com/prometheus/client_golang/prometheus"
)
func PrometheusCollectorsFromFields(i interface{}) (cs []prometheus.Collector) {
v := reflect.Indirect(reflect.ValueOf(i))
for i := 0; i < v.NumField(); i++ {
if !v.Field(i).CanInterface() {
continue
}
if u, ok := v.Field(i).Interface().(prometheus.Collector); ok {
cs = append(cs, u)
}
}
return cs
}
package pingpong package pingpong
import ( import (
"reflect" m "github.com/janos/bee/pkg/metrics"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
) )
...@@ -37,15 +36,6 @@ func newMetrics() (m metrics) { ...@@ -37,15 +36,6 @@ func newMetrics() (m metrics) {
} }
} }
func (s *Service) Metrics() (cs []prometheus.Collector) { func (s *Service) Metrics() []prometheus.Collector {
v := reflect.Indirect(reflect.ValueOf(s.metrics)) return m.PrometheusCollectorsFromFields(s.metrics)
for i := 0; i < v.NumField(); i++ {
if !v.Field(i).CanInterface() {
continue
}
if u, ok := v.Field(i).Interface().(prometheus.Collector); ok {
cs = append(cs, u)
}
}
return cs
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment