Skip to content

Commit 0ee7be5

Browse files
authored
Merge pull request #49 from slashben/feature/report-ebpf-errors
Reporting eBPF errors in event sink interface
2 parents 26b6bbd + f4cc4b6 commit 0ee7be5

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

pkg/eventsink/es.go

+6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package eventsink
22

33
import (
44
"fmt"
5+
"log"
56

67
"github.com/kubescape/kapprofiler/pkg/inmemorymapdb"
78
"github.com/kubescape/kapprofiler/pkg/tracing"
@@ -280,6 +281,11 @@ func (es *EventSink) SendNetworkEvent(event *tracing.NetworkEvent) {
280281
}
281282
}
282283

284+
func (es *EventSink) ReportError(eventType tracing.EventType, err error) {
285+
// There is not a lot we can do here
286+
log.Printf("Error reported for event type %d: %s", eventType, err)
287+
}
288+
283289
func (es *EventSink) Close() error {
284290
es.execvEventDB.Close()
285291
es.openEventDB.Close()

pkg/tracing/events.go

+2
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,6 @@ type EventSink interface {
111111
SendDnsEvent(event *DnsEvent)
112112
// SendNetworkEvent sends a Network event to the sink
113113
SendNetworkEvent(event *NetworkEvent)
114+
// ReportError reports an error to the sink
115+
ReportError(eventType EventType, err error)
114116
}

pkg/tracing/ig.go

+21
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package tracing
22

33
import (
4+
"fmt"
45
"log"
56

67
"github.com/cilium/ebpf"
@@ -206,6 +207,10 @@ func (t *Tracer) dnsEventCallback(event *tracerdnstype.Event) {
206207
for _, eventSink := range t.eventSinks {
207208
eventSink.SendDnsEvent(dnsEvent)
208209
}
210+
} else if event.Type == eventtypes.ERR {
211+
for _, eventSink := range t.eventSinks {
212+
eventSink.ReportError(DnsEventType, fmt.Errorf("dns ebpf error: %s", event.Message))
213+
}
209214
}
210215
}
211216

@@ -236,6 +241,10 @@ func (t *Tracer) networkEventCallback(event *tracernetworktype.Event) {
236241
for _, eventSink := range t.eventSinks {
237242
eventSink.SendNetworkEvent(networkEvent)
238243
}
244+
} else if event.Type == eventtypes.ERR {
245+
for _, eventSink := range t.eventSinks {
246+
eventSink.ReportError(NetworkEventType, fmt.Errorf("network ebpf error: %s", event.Message))
247+
}
239248
}
240249
}
241250

@@ -263,6 +272,10 @@ func (t *Tracer) capabilitiesEventCallback(event *tracercapabilitiestype.Event)
263272
for _, eventSink := range t.eventSinks {
264273
eventSink.SendCapabilitiesEvent(capabilitiesEvent)
265274
}
275+
} else if event.Type == eventtypes.ERR {
276+
for _, eventSink := range t.eventSinks {
277+
eventSink.ReportError(CapabilitiesEventType, fmt.Errorf("capabilities ebpf error: %s", event.Message))
278+
}
266279
}
267280
}
268281

@@ -292,6 +305,10 @@ func (t *Tracer) openEventCallback(event *traceropentype.Event) {
292305
for _, eventSink := range t.eventSinks {
293306
eventSink.SendOpenEvent(openEvent)
294307
}
308+
} else if event.Type == eventtypes.ERR {
309+
for _, eventSink := range t.eventSinks {
310+
eventSink.ReportError(OpenEventType, fmt.Errorf("open ebpf error: %s", event.Message))
311+
}
295312
}
296313
}
297314

@@ -322,6 +339,10 @@ func (t *Tracer) execEventCallback(event *tracerexectype.Event) {
322339
for _, eventSink := range t.eventSinks {
323340
eventSink.SendExecveEvent(execveEvent)
324341
}
342+
} else if event.Type == eventtypes.ERR {
343+
for _, eventSink := range t.eventSinks {
344+
eventSink.ReportError(ExecveEventType, fmt.Errorf("execve ebpf error: %s", event.Message))
345+
}
325346
}
326347
}
327348

0 commit comments

Comments
 (0)