From 44e6d1a313c4fc7565c85381572a8d4b58354cb2 Mon Sep 17 00:00:00 2001 From: Devin Carr Date: Thu, 30 May 2024 14:23:10 -0700 Subject: [PATCH] TUN-8441: Correct UDP total sessions metric to a counter and add new ICMP metrics cloudflared_udp_total_sessions was incorrectly a gauge when it represents the total since the cloudflared process started and will only ever increase. Additionally adds new ICMP metrics for requests and replies. --- datagramsession/metrics.go | 2 +- ingress/icmp_metrics.go | 39 ++++++++++++++++++++++++++++++++++++ ingress/origin_icmp_proxy.go | 2 ++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 ingress/icmp_metrics.go diff --git a/datagramsession/metrics.go b/datagramsession/metrics.go index 12844e7a..a0245752 100644 --- a/datagramsession/metrics.go +++ b/datagramsession/metrics.go @@ -15,7 +15,7 @@ var ( Name: "active_sessions", Help: "Concurrent count of UDP sessions that are being proxied to any origin", }) - totalUDPSessions = prometheus.NewGauge(prometheus.GaugeOpts{ + totalUDPSessions = prometheus.NewCounter(prometheus.CounterOpts{ Namespace: namespace, Subsystem: "udp", Name: "total_sessions", diff --git a/ingress/icmp_metrics.go b/ingress/icmp_metrics.go new file mode 100644 index 00000000..a39cf79f --- /dev/null +++ b/ingress/icmp_metrics.go @@ -0,0 +1,39 @@ +package ingress + +import ( + "github.com/prometheus/client_golang/prometheus" +) + +const ( + namespace = "cloudflared" +) + +var ( + icmpRequests = prometheus.NewCounter(prometheus.CounterOpts{ + Namespace: namespace, + Subsystem: "icmp", + Name: "total_requests", + Help: "Total count of ICMP requests that have been proxied to any origin", + }) + icmpReplies = prometheus.NewCounter(prometheus.CounterOpts{ + Namespace: namespace, + Subsystem: "icmp", + Name: "total_replies", + Help: "Total count of ICMP replies that have been proxied from any origin", + }) +) + +func init() { + prometheus.MustRegister( + icmpRequests, + icmpReplies, + ) +} + +func incrementICMPRequest() { + icmpRequests.Inc() +} + +func incrementICMPReply() { + icmpReplies.Inc() +} diff --git a/ingress/origin_icmp_proxy.go b/ingress/origin_icmp_proxy.go index 49c25dff..3eb0a6b3 100644 --- a/ingress/origin_icmp_proxy.go +++ b/ingress/origin_icmp_proxy.go @@ -105,6 +105,7 @@ func isEchoReply(msg *icmp.Message) bool { } func observeICMPRequest(logger *zerolog.Logger, span trace.Span, src string, dst string, echoID int, seq int) { + incrementICMPRequest() logger.Debug(). Str("src", src). Str("dst", dst). @@ -118,6 +119,7 @@ func observeICMPRequest(logger *zerolog.Logger, span trace.Span, src string, dst } func observeICMPReply(logger *zerolog.Logger, span trace.Span, dst string, echoID int, seq int) { + incrementICMPReply() logger.Debug().Str("dst", dst).Int("echoID", echoID).Int("seq", seq).Msg("Sent ICMP reply to edge") span.SetAttributes( attribute.String("dst", dst),