From f0780ad9cc2d4990a21520fd852d517c596a2b95 Mon Sep 17 00:00:00 2001 From: Jimmy Zelinskie Date: Thu, 14 Jun 2018 18:57:23 -0400 Subject: [PATCH] frontend: isolate prometheus logic to one file --- frontend/http/frontend.go | 40 ------------------------------- frontend/http/prometheus.go | 48 +++++++++++++++++++++++++++++++++++++ frontend/udp/frontend.go | 41 ------------------------------- frontend/udp/prometheus.go | 48 +++++++++++++++++++++++++++++++++++++ 4 files changed, 96 insertions(+), 81 deletions(-) create mode 100644 frontend/http/prometheus.go create mode 100644 frontend/udp/prometheus.go diff --git a/frontend/http/frontend.go b/frontend/http/frontend.go index fc4957e..3cf553f 100644 --- a/frontend/http/frontend.go +++ b/frontend/http/frontend.go @@ -10,52 +10,12 @@ import ( "time" "github.com/julienschmidt/httprouter" - "github.com/prometheus/client_golang/prometheus" "github.com/chihaya/chihaya/bittorrent" "github.com/chihaya/chihaya/frontend" "github.com/chihaya/chihaya/pkg/log" ) -func init() { - prometheus.MustRegister(promResponseDurationMilliseconds) -} - -var promResponseDurationMilliseconds = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Name: "chihaya_http_response_duration_milliseconds", - Help: "The duration of time it takes to receive and write a response to an API request", - Buckets: prometheus.ExponentialBuckets(9.375, 2, 10), - }, - []string{"action", "address_family", "error"}, -) - -// recordResponseDuration records the duration of time to respond to a Request -// in milliseconds . -func recordResponseDuration(action string, af *bittorrent.AddressFamily, err error, duration time.Duration) { - var errString string - if err != nil { - if _, ok := err.(bittorrent.ClientError); ok { - errString = err.Error() - } else { - errString = "internal error" - } - } - - var afString string - if af == nil { - afString = "Unknown" - } else if *af == bittorrent.IPv4 { - afString = "IPv4" - } else if *af == bittorrent.IPv6 { - afString = "IPv6" - } - - promResponseDurationMilliseconds. - WithLabelValues(action, afString, errString). - Observe(float64(duration.Nanoseconds()) / float64(time.Millisecond)) -} - // Config represents all of the configurable options for an HTTP BitTorrent // Frontend. type Config struct { diff --git a/frontend/http/prometheus.go b/frontend/http/prometheus.go new file mode 100644 index 0000000..e82b1e1 --- /dev/null +++ b/frontend/http/prometheus.go @@ -0,0 +1,48 @@ +package http + +import ( + "time" + + "github.com/prometheus/client_golang/prometheus" + + "github.com/chihaya/chihaya/bittorrent" +) + +func init() { + prometheus.MustRegister(promResponseDurationMilliseconds) +} + +var promResponseDurationMilliseconds = prometheus.NewHistogramVec( + prometheus.HistogramOpts{ + Name: "chihaya_http_response_duration_milliseconds", + Help: "The duration of time it takes to receive and write a response to an API request", + Buckets: prometheus.ExponentialBuckets(9.375, 2, 10), + }, + []string{"action", "address_family", "error"}, +) + +// recordResponseDuration records the duration of time to respond to a Request +// in milliseconds. +func recordResponseDuration(action string, af *bittorrent.AddressFamily, err error, duration time.Duration) { + var errString string + if err != nil { + if _, ok := err.(bittorrent.ClientError); ok { + errString = err.Error() + } else { + errString = "internal error" + } + } + + var afString string + if af == nil { + afString = "Unknown" + } else if *af == bittorrent.IPv4 { + afString = "IPv4" + } else if *af == bittorrent.IPv6 { + afString = "IPv6" + } + + promResponseDurationMilliseconds. + WithLabelValues(action, afString, errString). + Observe(float64(duration.Nanoseconds()) / float64(time.Millisecond)) +} diff --git a/frontend/udp/frontend.go b/frontend/udp/frontend.go index 929e2ae..8dea946 100644 --- a/frontend/udp/frontend.go +++ b/frontend/udp/frontend.go @@ -12,8 +12,6 @@ import ( "sync" "time" - "github.com/prometheus/client_golang/prometheus" - "github.com/chihaya/chihaya/bittorrent" "github.com/chihaya/chihaya/frontend" "github.com/chihaya/chihaya/frontend/udp/bytepool" @@ -24,45 +22,6 @@ import ( var allowedGeneratedPrivateKeyRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890") -func init() { - prometheus.MustRegister(promResponseDurationMilliseconds) -} - -var promResponseDurationMilliseconds = prometheus.NewHistogramVec( - prometheus.HistogramOpts{ - Name: "chihaya_udp_response_duration_milliseconds", - Help: "The duration of time it takes to receive and write a response to an API request", - Buckets: prometheus.ExponentialBuckets(9.375, 2, 10), - }, - []string{"action", "address_family", "error"}, -) - -// recordResponseDuration records the duration of time to respond to a UDP -// Request in milliseconds . -func recordResponseDuration(action string, af *bittorrent.AddressFamily, err error, duration time.Duration) { - var errString string - if err != nil { - if _, ok := err.(bittorrent.ClientError); ok { - errString = err.Error() - } else { - errString = "internal error" - } - } - - var afString string - if af == nil { - afString = "Unknown" - } else if *af == bittorrent.IPv4 { - afString = "IPv4" - } else if *af == bittorrent.IPv6 { - afString = "IPv6" - } - - promResponseDurationMilliseconds. - WithLabelValues(action, afString, errString). - Observe(float64(duration.Nanoseconds()) / float64(time.Millisecond)) -} - // Config represents all of the configurable options for a UDP BitTorrent // Tracker. type Config struct { diff --git a/frontend/udp/prometheus.go b/frontend/udp/prometheus.go new file mode 100644 index 0000000..4b1f5ba --- /dev/null +++ b/frontend/udp/prometheus.go @@ -0,0 +1,48 @@ +package udp + +import ( + "time" + + "github.com/prometheus/client_golang/prometheus" + + "github.com/chihaya/chihaya/bittorrent" +) + +func init() { + prometheus.MustRegister(promResponseDurationMilliseconds) +} + +var promResponseDurationMilliseconds = prometheus.NewHistogramVec( + prometheus.HistogramOpts{ + Name: "chihaya_udp_response_duration_milliseconds", + Help: "The duration of time it takes to receive and write a response to an API request", + Buckets: prometheus.ExponentialBuckets(9.375, 2, 10), + }, + []string{"action", "address_family", "error"}, +) + +// recordResponseDuration records the duration of time to respond to a UDP +// Request in milliseconds. +func recordResponseDuration(action string, af *bittorrent.AddressFamily, err error, duration time.Duration) { + var errString string + if err != nil { + if _, ok := err.(bittorrent.ClientError); ok { + errString = err.Error() + } else { + errString = "internal error" + } + } + + var afString string + if af == nil { + afString = "Unknown" + } else if *af == bittorrent.IPv4 { + afString = "IPv4" + } else if *af == bittorrent.IPv6 { + afString = "IPv6" + } + + promResponseDurationMilliseconds. + WithLabelValues(action, afString, errString). + Observe(float64(duration.Nanoseconds()) / float64(time.Millisecond)) +}