Skip to content

Commit

Permalink
Fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
anjmao committed Dec 3, 2024
1 parent 16e3658 commit f778dc4
Show file tree
Hide file tree
Showing 9 changed files with 22 additions and 18 deletions.
6 changes: 3 additions & 3 deletions cmd/agent/daemon/daemon.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,9 @@ func NewRunCommand(version string) *cobra.Command {
ebpfTracerMetricsEnabled = command.Flags().Bool("ebpf-tracer-metrics-enabled", true, "Enables the export of tracer related metrics from eBPF")
ebpfProgramMetricsEnabled = command.Flags().Bool("ebpf-program-metrics-enabled", false, "Enables the export of metrics about eBPF programs")

EBPFSignalEventsRingBufferSize = command.Flags().Uint32("ebpf-signal-events-ring-buffer-size", 1<<20, "Ebpf ring buffer size in bytes for priority events")
EBPFEventsRingBufferSize = command.Flags().Uint32("ebpf-events-ring-buffer-size", 1<<20, "Ebpf ring buffer size in bytes for events")
EBPFSkbEventsRingBufferSize = command.Flags().Uint32("ebpf-skb-events-ring-buffer-size", 1<<20, "Ebpf ring buffer size in bytes for skb network events")
EBPFSignalEventsRingBufferSize = command.Flags().Uint32("ebpf-signal-events-ring-buffer-size", 1<<20, "Ebpf ring buffer size in bytes for priority events. Should be power of 2")
EBPFEventsRingBufferSize = command.Flags().Uint32("ebpf-events-ring-buffer-size", 1<<20, "Ebpf ring buffer size in bytes for events. Should be power of 2")
EBPFSkbEventsRingBufferSize = command.Flags().Uint32("ebpf-skb-events-ring-buffer-size", 1<<20, "Ebpf ring buffer size in bytes for skb network events. Should be power of 2")

mutedNamespaces = command.Flags().StringSlice("ignored-namespaces", []string{"kube-system", "calico", "calico-system"},
"List of namespaces to ignore tracing events for. To ignore multiple namespaces, separate by comma or pass flag multiple times."+
Expand Down
1 change: 1 addition & 0 deletions pkg/ebpftracer/c/tracee.bpf.c
Original file line number Diff line number Diff line change
Expand Up @@ -1742,6 +1742,7 @@ statfunc u32 cgroup_skb_submit(void *map, struct __sk_buff *ctx, net_event_conte
}

e->argnum = 1;
e->index0 = 0;
e->bytes = size;
e->eventctx.eventid = event_type;

Expand Down
6 changes: 2 additions & 4 deletions pkg/ebpftracer/decoder/args_decoder.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 1 addition & 3 deletions pkg/ebpftracer/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,7 @@ func (t *Tracer) exportEBPFTracerMetrics() error {
for iter.Next(&metric, &counter) {
name := eBPFMetric(metric).String()
metrics.EBPFExposedMetrics.WithLabelValues(name).Set(float64(counter))
if counter > 0 {
t.logInternalEbpfTracerMetric(name, counter)
}
t.logInternalEbpfTracerMetric(name, counter)
}
if err := iter.Err(); err != nil {
return err
Expand Down
8 changes: 7 additions & 1 deletion pkg/ebpftracer/tracer.go
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,13 @@ func (t *Tracer) runPerfBufReaderLoop(ctx context.Context, target *ebpf.Map) err
if err != nil {
return err
}
defer eventsReader.Close()

go func() {
<-ctx.Done()
if err := eventsReader.Close(); err != nil {
t.log.Warnf("closing events reader: %v", err)
}
}()

// Allocate message decoder and perf record once.
// Under the hood per event reader will reuse and grow raw sample backing bytes slice.
Expand Down
Binary file modified pkg/ebpftracer/tracer_arm64_bpfel.o
Binary file not shown.
9 changes: 6 additions & 3 deletions pkg/ebpftracer/tracer_playground_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ func TestTracer(t *testing.T) {
tr := ebpftracer.New(log, ebpftracer.Config{
//BTFPath: fmt.Sprintf("./testdata/5.10.0-0.deb10.24-cloud-%s.btf", runtime.GOARCH),
EventsOutputChanSize: 10000,
SignalEventsRingBufferSize: 1 << 20,
SignalEventsRingBufferSize: 1 << 12,
EventsRingBufferSize: 1 << 12,
SkbEventsRingBufferSize: 1 << 12,

Expand Down Expand Up @@ -102,6 +102,10 @@ func TestTracer(t *testing.T) {
NetflowSampleSubmitIntervalSeconds: 2,
NetflowGrouping: ebpftracer.NetflowGroupingDropSrcPort,
ProcessTreeCollector: processtree.NewNoop(),
MetricsReporting: ebpftracer.MetricsReportingConfig{
ProgramMetricsEnabled: true,
TracerMetricsEnabled: true,
},
})
defer tr.Close()

Expand All @@ -120,9 +124,8 @@ func TestTracer(t *testing.T) {

policy := &ebpftracer.Policy{
Events: []*ebpftracer.EventPolicy{
{ID: events.NetPacketSSHBase},
//{ID: events.SockSetState},
//{ID: events.NetPacketDNSBase},
{ID: events.NetPacketDNSBase},
//{ID: events.NetPacketTCPBase},
//{ID: events.SchedProcessExec},
},
Expand Down
Binary file modified pkg/ebpftracer/tracer_x86_bpfel.o
Binary file not shown.
6 changes: 2 additions & 4 deletions tools/codegen/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,16 +105,14 @@ var (
)
// eventMaxByteSliceBufferSize is used to determine the max slice size allowed for different
// event types. For example, most events have a max size of 4096, but for network related events
// there is no max size (this is represented as -1).
// event types. For example, most events have a max size of 4096, but for network we limit to 512 bytes.
func eventMaxByteSliceBufferSize(id events.ID) int {
// For non network event, we have a max byte slice size of 4096
if id < events.NetPacketBase || id > events.MaxNetID {
return 4096
}
// Network events do not have a max buffer size.
return -1
return 512
}
`, targetPackage)
}
Expand Down

0 comments on commit f778dc4

Please sign in to comment.