mirror of
https://github.com/slackhq/nebula.git
synced 2025-11-23 00:44:25 +01:00
don't register metrics in loops
This commit is contained in:
@@ -3,7 +3,6 @@ package nebula
|
|||||||
import (
|
import (
|
||||||
"net/netip"
|
"net/netip"
|
||||||
|
|
||||||
"github.com/rcrowley/go-metrics"
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/slackhq/nebula/firewall"
|
"github.com/slackhq/nebula/firewall"
|
||||||
"github.com/slackhq/nebula/header"
|
"github.com/slackhq/nebula/header"
|
||||||
@@ -146,7 +145,7 @@ func (f *Interface) consumeInsidePackets(packets [][]byte, sizes []int, count in
|
|||||||
// Send all accumulated packets in one batch
|
// Send all accumulated packets in one batch
|
||||||
if len(*batchPackets) > 0 {
|
if len(*batchPackets) > 0 {
|
||||||
batchSize := len(*batchPackets)
|
batchSize := len(*batchPackets)
|
||||||
metrics.GetOrRegisterHistogram("batch.udp_write_size", nil, metrics.NewUniformSample(1024)).Update(int64(batchSize))
|
f.batchMetrics.udpWriteSize.Update(int64(batchSize))
|
||||||
|
|
||||||
n, err := f.writers[q].WriteMulti(*batchPackets, *batchAddrs)
|
n, err := f.writers[q].WriteMulti(*batchPackets, *batchAddrs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
16
interface.go
16
interface.go
@@ -51,6 +51,12 @@ type InterfaceConfig struct {
|
|||||||
l *logrus.Logger
|
l *logrus.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type batchMetrics struct {
|
||||||
|
udpReadSize metrics.Histogram
|
||||||
|
tunReadSize metrics.Histogram
|
||||||
|
udpWriteSize metrics.Histogram
|
||||||
|
}
|
||||||
|
|
||||||
type Interface struct {
|
type Interface struct {
|
||||||
hostMap *HostMap
|
hostMap *HostMap
|
||||||
outside udp.Conn
|
outside udp.Conn
|
||||||
@@ -92,6 +98,7 @@ type Interface struct {
|
|||||||
metricHandshakes metrics.Histogram
|
metricHandshakes metrics.Histogram
|
||||||
messageMetrics *MessageMetrics
|
messageMetrics *MessageMetrics
|
||||||
cachedPacketMetrics *cachedPacketMetrics
|
cachedPacketMetrics *cachedPacketMetrics
|
||||||
|
batchMetrics *batchMetrics
|
||||||
|
|
||||||
l *logrus.Logger
|
l *logrus.Logger
|
||||||
}
|
}
|
||||||
@@ -194,6 +201,11 @@ func NewInterface(ctx context.Context, c *InterfaceConfig) (*Interface, error) {
|
|||||||
sent: metrics.GetOrRegisterCounter("hostinfo.cached_packets.sent", nil),
|
sent: metrics.GetOrRegisterCounter("hostinfo.cached_packets.sent", nil),
|
||||||
dropped: metrics.GetOrRegisterCounter("hostinfo.cached_packets.dropped", nil),
|
dropped: metrics.GetOrRegisterCounter("hostinfo.cached_packets.dropped", nil),
|
||||||
},
|
},
|
||||||
|
batchMetrics: &batchMetrics{
|
||||||
|
udpReadSize: metrics.GetOrRegisterHistogram("batch.udp_read_size", nil, metrics.NewUniformSample(1024)),
|
||||||
|
tunReadSize: metrics.GetOrRegisterHistogram("batch.tun_read_size", nil, metrics.NewUniformSample(1024)),
|
||||||
|
udpWriteSize: metrics.GetOrRegisterHistogram("batch.udp_write_size", nil, metrics.NewUniformSample(1024)),
|
||||||
|
},
|
||||||
|
|
||||||
l: c.l,
|
l: c.l,
|
||||||
}
|
}
|
||||||
@@ -352,8 +364,6 @@ func (f *Interface) listenInBatch(reader io.ReadWriteCloser, batchReader BatchRe
|
|||||||
|
|
||||||
conntrackCache := firewall.NewConntrackCacheTicker(f.conntrackCacheTimeout)
|
conntrackCache := firewall.NewConntrackCacheTicker(f.conntrackCacheTimeout)
|
||||||
|
|
||||||
tunBatchHist := metrics.GetOrRegisterHistogram("batch.tun_read_size", nil, metrics.NewUniformSample(1024))
|
|
||||||
|
|
||||||
for {
|
for {
|
||||||
n, err := batchReader.BatchRead(bufs, sizes)
|
n, err := batchReader.BatchRead(bufs, sizes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -366,7 +376,7 @@ func (f *Interface) listenInBatch(reader io.ReadWriteCloser, batchReader BatchRe
|
|||||||
os.Exit(2)
|
os.Exit(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
tunBatchHist.Update(int64(n))
|
f.batchMetrics.tunReadSize.Update(int64(n))
|
||||||
|
|
||||||
// Process all packets in the batch at once
|
// Process all packets in the batch at once
|
||||||
f.consumeInsidePackets(bufs, sizes, n, outs, nb, i, conntrackCache.Get(f.l), &batchPackets, &batchAddrs)
|
f.consumeInsidePackets(bufs, sizes, n, outs, nb, i, conntrackCache.Get(f.l), &batchPackets, &batchAddrs)
|
||||||
|
|||||||
Reference in New Issue
Block a user