diff --git a/x-pack/auditbeat/module/system/socket/config.go b/x-pack/auditbeat/module/system/socket/config.go index 79413f7649cb..89f2e6806432 100644 --- a/x-pack/auditbeat/module/system/socket/config.go +++ b/x-pack/auditbeat/module/system/socket/config.go @@ -65,6 +65,9 @@ type Config struct { // EnableIPv6 allows to control IPv6 support. When unset (default) IPv6 // will be automatically detected on runtime. EnableIPv6 *bool `config:"socket.enable_ipv6"` + + // DisableKprobe allows to disable specific kprobes by their probe name. + DisableKprobe []string `config:"socket.disable_kprobe"` } // Validate validates the socket metricset config. diff --git a/x-pack/auditbeat/module/system/socket/socket_linux.go b/x-pack/auditbeat/module/system/socket/socket_linux.go index 4cd4edf7a136..5baeff2f95d0 100644 --- a/x-pack/auditbeat/module/system/socket/socket_linux.go +++ b/x-pack/auditbeat/module/system/socket/socket_linux.go @@ -3,7 +3,6 @@ // you may not use this file except in compliance with the Elastic License. //go:build (linux && 386) || (linux && amd64) -// +build linux,386 linux,amd64 package socket @@ -22,6 +21,7 @@ import ( "syscall" "time" + "golang.org/x/exp/slices" "golang.org/x/sys/unix" "github.com/elastic/beats/v7/libbeat/common" @@ -405,6 +405,9 @@ func (m *MetricSet) Setup() (err error) { // Make sure all the required kernel functions are available // for _, probeDef := range getKProbes(hasIPv6) { + if slices.Index(m.config.DisableKprobe, probeDef.Probe.Name) != -1 { + continue + } probeDef = probeDef.ApplyTemplate(m.templateVars) name := probeDef.Probe.Address if !m.isKernelFunctionAvailable(name, functions) { @@ -454,6 +457,9 @@ func (m *MetricSet) Setup() (err error) { // Register Kprobes // for _, probeDef := range getKProbes(hasIPv6) { + if slices.Index(m.config.DisableKprobe, probeDef.Probe.Name) != -1 { + continue + } format, decoder, err := m.installer.Install(probeDef) if err != nil { return fmt.Errorf("unable to register probe %s: %w", probeDef.Probe.String(), err)