Commit e67df738 authored by Janoš Guljaš's avatar Janoš Guljaš Committed by GitHub

add metrics namespace (#43)

parent 78e67587
...@@ -21,20 +21,28 @@ type metrics struct { ...@@ -21,20 +21,28 @@ type metrics struct {
PingRequestCount prometheus.Counter PingRequestCount prometheus.Counter
} }
func newMetrics() (m metrics) { func newMetrics() metrics {
subsystem := "api"
return metrics{ return metrics{
RequestCount: prometheus.NewCounter(prometheus.CounterOpts{ RequestCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "api_request_count", Namespace: m.Namespace,
Help: "Number of API requests.", Subsystem: subsystem,
Name: "request_count",
Help: "Number of API requests.",
}), }),
ResponseDuration: prometheus.NewHistogram(prometheus.HistogramOpts{ ResponseDuration: prometheus.NewHistogram(prometheus.HistogramOpts{
Name: "api_response_duration_seconds", Namespace: m.Namespace,
Help: "Histogram of API response durations.", Subsystem: subsystem,
Buckets: []float64{0.01, 0.1, 0.25, 0.5, 1, 2.5, 5, 10}, Name: "response_duration_seconds",
Help: "Histogram of API response durations.",
Buckets: []float64{0.01, 0.1, 0.25, 0.5, 1, 2.5, 5, 10},
}), }),
PingRequestCount: prometheus.NewCounter(prometheus.CounterOpts{ PingRequestCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "api_ping_request_count", Namespace: m.Namespace,
Help: "Number HTTP API ping requests.", Subsystem: subsystem,
Name: "ping_request_count",
Help: "Number HTTP API ping requests.",
}), }),
} }
} }
......
...@@ -6,6 +6,7 @@ package debugapi ...@@ -6,6 +6,7 @@ package debugapi
import ( import (
"github.com/ethersphere/bee" "github.com/ethersphere/bee"
"github.com/ethersphere/bee/pkg/metrics"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
) )
...@@ -14,11 +15,14 @@ func newMetricsRegistry() (r *prometheus.Registry) { ...@@ -14,11 +15,14 @@ func newMetricsRegistry() (r *prometheus.Registry) {
// register standard metrics // register standard metrics
r.MustRegister( r.MustRegister(
prometheus.NewProcessCollector(prometheus.ProcessCollectorOpts{}), prometheus.NewProcessCollector(prometheus.ProcessCollectorOpts{
Namespace: metrics.Namespace,
}),
prometheus.NewGoCollector(), prometheus.NewGoCollector(),
prometheus.NewGauge(prometheus.GaugeOpts{ prometheus.NewGauge(prometheus.GaugeOpts{
Name: "bee_info", Namespace: metrics.Namespace,
Help: "Bee information.", Name: "info",
Help: "Bee information.",
ConstLabels: prometheus.Labels{ ConstLabels: prometheus.Labels{
"version": bee.Version, "version": bee.Version,
}, },
......
...@@ -21,27 +21,39 @@ type metrics struct { ...@@ -21,27 +21,39 @@ type metrics struct {
TraceCount prometheus.Counter TraceCount prometheus.Counter
} }
func newMetrics() (m metrics) { func newMetrics() metrics {
subsystem := "log"
return metrics{ return metrics{
ErrorCount: prometheus.NewCounter(prometheus.CounterOpts{ ErrorCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "log_error_count", Namespace: m.Namespace,
Help: "Number ERROR log messages.", Subsystem: subsystem,
Name: "error_count",
Help: "Number ERROR log messages.",
}), }),
WarnCount: prometheus.NewCounter(prometheus.CounterOpts{ WarnCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "log_warn_count", Namespace: m.Namespace,
Help: "Number WARN log messages.", Subsystem: subsystem,
Name: "warn_count",
Help: "Number WARN log messages.",
}), }),
InfoCount: prometheus.NewCounter(prometheus.CounterOpts{ InfoCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "log_info_count", Namespace: m.Namespace,
Help: "Number INFO log messages.", Subsystem: subsystem,
Name: "info_count",
Help: "Number INFO log messages.",
}), }),
DebugCount: prometheus.NewCounter(prometheus.CounterOpts{ DebugCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "log_debug_count", Namespace: m.Namespace,
Help: "Number DEBUG log messages.", Subsystem: subsystem,
Name: "debug_count",
Help: "Number DEBUG log messages.",
}), }),
TraceCount: prometheus.NewCounter(prometheus.CounterOpts{ TraceCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "log_trace_count", Namespace: m.Namespace,
Help: "Number TRACE log messages.", Subsystem: subsystem,
Name: "log_trace_count",
Help: "Number TRACE log messages.",
}), }),
} }
} }
......
...@@ -10,6 +10,10 @@ import ( ...@@ -10,6 +10,10 @@ import (
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
) )
// Namespace is prefixed before every metric. If it is changed, it must be done
// before any metrics collector is registered.
var Namespace = "bee"
type Collector interface { type Collector interface {
Metrics() []prometheus.Collector Metrics() []prometheus.Collector
} }
......
...@@ -41,19 +41,26 @@ type service struct { ...@@ -41,19 +41,26 @@ type service struct {
} }
func newService() *service { func newService() *service {
subsystem := "api"
return &service{ return &service{
RequestCount: prometheus.NewCounter(prometheus.CounterOpts{ RequestCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "api_request_count", Namespace: metrics.Namespace,
Help: "Number of API requests.", Subsystem: subsystem,
Name: "request_count",
Help: "Number of API requests.",
}), }),
ResponseDuration: prometheus.NewHistogram(prometheus.HistogramOpts{ ResponseDuration: prometheus.NewHistogram(prometheus.HistogramOpts{
Name: "api_response_duration_seconds", Namespace: metrics.Namespace,
Help: "Histogram of API response durations.", Subsystem: subsystem,
Buckets: []float64{0.01, 0.1, 0.25, 0.5, 1, 2.5, 5, 10}, Name: "response_duration_seconds",
Help: "Histogram of API response durations.",
Buckets: []float64{0.01, 0.1, 0.25, 0.5, 1, 2.5, 5, 10},
}), }),
unexportedCount: prometheus.NewCounter(prometheus.CounterOpts{ unexportedCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "api_unexported_count", Namespace: metrics.Namespace,
Help: "This metrics should not be discoverable by metrics.PrometheusCollectorsFromFields.", Subsystem: subsystem,
Name: "unexported_count",
Help: "This metrics should not be discoverable by metrics.PrometheusCollectorsFromFields.",
}), }),
} }
} }
...@@ -19,23 +19,33 @@ type metrics struct { ...@@ -19,23 +19,33 @@ type metrics struct {
HandledStreamCount prometheus.Counter HandledStreamCount prometheus.Counter
} }
func newMetrics() (m metrics) { func newMetrics() metrics {
subsystem := "libp2p"
return metrics{ return metrics{
CreatedConnectionCount: prometheus.NewCounter(prometheus.CounterOpts{ CreatedConnectionCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "libp2p_created_connection_count", Namespace: m.Namespace,
Help: "Number of initiated outgoing libp2p connections.", Subsystem: subsystem,
Name: "created_connection_count",
Help: "Number of initiated outgoing libp2p connections.",
}), }),
HandledConnectionCount: prometheus.NewCounter(prometheus.CounterOpts{ HandledConnectionCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "libp2p_handled_connection_count", Namespace: m.Namespace,
Help: "Number of handled incoming libp2p connections.", Subsystem: subsystem,
Name: "handled_connection_count",
Help: "Number of handled incoming libp2p connections.",
}), }),
CreatedStreamCount: prometheus.NewCounter(prometheus.CounterOpts{ CreatedStreamCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "libp2p_created_stream_count", Namespace: m.Namespace,
Help: "Number of initiated outgoing libp2p streams.", Subsystem: subsystem,
Name: "created_stream_count",
Help: "Number of initiated outgoing libp2p streams.",
}), }),
HandledStreamCount: prometheus.NewCounter(prometheus.CounterOpts{ HandledStreamCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "libp2p_handled_stream_count", Namespace: m.Namespace,
Help: "Number of handled incoming libp2p streams.", Subsystem: subsystem,
Name: "handled_stream_count",
Help: "Number of handled incoming libp2p streams.",
}), }),
} }
} }
......
...@@ -19,23 +19,32 @@ type metrics struct { ...@@ -19,23 +19,32 @@ type metrics struct {
PongReceivedCount prometheus.Counter PongReceivedCount prometheus.Counter
} }
func newMetrics() (m metrics) { func newMetrics() metrics {
subsystem := "pingpong"
return metrics{ return metrics{
PingSentCount: prometheus.NewCounter(prometheus.CounterOpts{ PingSentCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "pingpong_ping_sent_count", Namespace: m.Namespace,
Help: "Number ping requests sent.", Subsystem: subsystem,
Name: "ping_sent_count",
Help: "Number ping requests sent.",
}), }),
PongSentCount: prometheus.NewCounter(prometheus.CounterOpts{ PongSentCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "pingpong_pong_sent_count", Namespace: m.Namespace,
Help: "Number of pong responses sent.", Name: "pong_sent_count",
Help: "Number of pong responses sent.",
}), }),
PingReceivedCount: prometheus.NewCounter(prometheus.CounterOpts{ PingReceivedCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "pingpong_ping_received_count", Namespace: m.Namespace,
Help: "Number ping requests received.", Subsystem: subsystem,
Name: "ping_received_count",
Help: "Number ping requests received.",
}), }),
PongReceivedCount: prometheus.NewCounter(prometheus.CounterOpts{ PongReceivedCount: prometheus.NewCounter(prometheus.CounterOpts{
Name: "pingpong_pong_received_count", Namespace: m.Namespace,
Help: "Number of pong responses received.", Subsystem: subsystem,
Name: "pong_received_count",
Help: "Number of pong responses received.",
}), }),
} }
} }
......
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