From c246633aec59cd2dadd8253e6e50f5b8ea9dd168 Mon Sep 17 00:00:00 2001 From: kullanici0606 Date: Mon, 23 Oct 2023 10:00:25 +0300 Subject: [PATCH] add counter for dropped UDP packets. Remove unnecessary and misleading comment Signed-off-by: kullanici0606 --- bridge_test.go | 1 + main.go | 7 +++++++ pkg/exporter/exporter_test.go | 7 +++++++ pkg/listener/listener.go | 10 ++++++++-- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/bridge_test.go b/bridge_test.go index c986c48..bc92e48 100644 --- a/bridge_test.go +++ b/bridge_test.go @@ -543,6 +543,7 @@ func TestHandlePacket(t *testing.T) { Logger: log.NewNopLogger(), LineParser: parser, UDPPackets: udpPackets, + UDPPacketDrops: udpPacketDrops, LinesReceived: linesReceived, EventsFlushed: eventsFlushed, SampleErrors: *sampleErrors, diff --git a/main.go b/main.go index 1fc5762..5d115da 100644 --- a/main.go +++ b/main.go @@ -71,6 +71,12 @@ var ( Help: "The total number of StatsD packets received over UDP.", }, ) + udpPacketDrops = promauto.NewCounter( + prometheus.CounterOpts{ + Name: "statsd_exporter_udp_packet_drops_total", + Help: "The total number of dropped StatsD packets which received over UDP.", + }, + ) tcpConnections = promauto.NewCounter( prometheus.CounterOpts{ Name: "statsd_exporter_tcp_connections_total", @@ -377,6 +383,7 @@ func main() { Logger: logger, LineParser: parser, UDPPackets: udpPackets, + UDPPacketDrops: udpPacketDrops, LinesReceived: linesReceived, EventsFlushed: eventsFlushed, Relay: relayTarget, diff --git a/pkg/exporter/exporter_test.go b/pkg/exporter/exporter_test.go index a0bdce4..a2bb948 100644 --- a/pkg/exporter/exporter_test.go +++ b/pkg/exporter/exporter_test.go @@ -56,6 +56,12 @@ var ( Help: "The total number of StatsD packets received over UDP.", }, ) + udpPacketDrops = prometheus.NewCounter( + prometheus.CounterOpts{ + Name: "statsd_exporter_udp_packet_drops_total", + Help: "The total number of dropped StatsD packets which received over UDP.", + }, + ) tcpConnections = prometheus.NewCounter( prometheus.CounterOpts{ Name: "statsd_exporter_tcp_connections_total", @@ -683,6 +689,7 @@ func TestInvalidUtf8InDatadogTagValue(t *testing.T) { Logger: log.NewNopLogger(), LineParser: parser, UDPPackets: udpPackets, + UDPPacketDrops: udpPacketDrops, LinesReceived: linesReceived, EventsFlushed: eventsFlushed, SampleErrors: *sampleErrors, diff --git a/pkg/listener/listener.go b/pkg/listener/listener.go index c3f1520..99e5792 100644 --- a/pkg/listener/listener.go +++ b/pkg/listener/listener.go @@ -38,6 +38,7 @@ type StatsDUDPListener struct { Logger log.Logger LineParser Parser UDPPackets prometheus.Counter + UDPPacketDrops prometheus.Counter LinesReceived prometheus.Counter EventsFlushed prometheus.Counter Relay *relay.Relay @@ -66,7 +67,7 @@ func (l *StatsDUDPListener) Listen() { level.Error(l.Logger).Log("error", err) return } - // avoid making copies of slices since we need to minimize the time spent here in order not to drop packets + l.EnqueueUdpPacket(buf, n) } } @@ -75,7 +76,12 @@ func (l *StatsDUDPListener) EnqueueUdpPacket(packet []byte, n int) { l.UDPPackets.Inc() packetCopy := make([]byte, n) copy(packetCopy, packet) - l.UdpPacketQueue <- packetCopy + select { + case l.UdpPacketQueue <- packetCopy: + // do nothing + default: + l.UDPPacketDrops.Inc() + } } func (l *StatsDUDPListener) ProcessUdpPacketQueue() {