From f9aa2867dfb5e6e511f77810e0353fe98e2bbfa3 Mon Sep 17 00:00:00 2001 From: Jiri Olsa Date: Sat, 22 Jun 2024 20:26:27 +0000 Subject: [PATCH] tetragon: Add keep-sensors-on-exit option Signed-off-by: Jiri Olsa --- cmd/tetragon/main.go | 12 ++++++++++-- docs/data/tetragon_flags.yaml | 3 +++ pkg/option/config.go | 2 ++ pkg/option/flags.go | 6 ++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/cmd/tetragon/main.go b/cmd/tetragon/main.go index b2103212cd0..b5aabc19fb4 100644 --- a/cmd/tetragon/main.go +++ b/cmd/tetragon/main.go @@ -223,6 +223,10 @@ func tetragonExecute() error { log.Info("Force loading smallprograms") } + if option.Config.KeepSensorsOnExit { + log.Info("Not unloading sensors on exit") + } + if viper.IsSet(option.KeyNetnsDir) { defaults.NetnsDir = viper.GetString(option.KeyNetnsDir) } @@ -456,7 +460,9 @@ func tetragonExecute() error { return err } defer func() { - initialSensor.Unload() + if !option.Config.KeepSensorsOnExit { + initialSensor.Unload() + } }() cgrouprate.NewCgroupRate(ctx, pm, base.CgroupRateMap, &option.Config.CgroupRate) @@ -467,7 +473,9 @@ func tetragonExecute() error { sensorMgWait = nil observer.GetSensorManager().LogSensorsAndProbes(ctx) defer func() { - observer.RemoveSensors(ctx) + if !option.Config.KeepSensorsOnExit { + observer.RemoveSensors(ctx) + } }() err = loadTpFromDir(ctx, option.Config.TracingPolicyDir) diff --git a/docs/data/tetragon_flags.yaml b/docs/data/tetragon_flags.yaml index 648c9739947..81820d0f993 100644 --- a/docs/data/tetragon_flags.yaml +++ b/docs/data/tetragon_flags.yaml @@ -134,6 +134,9 @@ options: usage: help for tetragon - name: k8s-kubeconfig-path usage: Absolute path of the kubernetes kubeconfig file + - name: keep-sensors-on-exit + default_value: "false" + usage: Do not unload sensors on exit - name: kernel usage: Kernel version - name: kmods diff --git a/pkg/option/config.go b/pkg/option/config.go index b07091afd55..c083d17e765 100644 --- a/pkg/option/config.go +++ b/pkg/option/config.go @@ -95,6 +95,8 @@ type config struct { HealthServerInterval int Base string + + KeepSensorsOnExit bool } var ( diff --git a/pkg/option/flags.go b/pkg/option/flags.go index ea0bc6f95f9..641957a54b6 100644 --- a/pkg/option/flags.go +++ b/pkg/option/flags.go @@ -105,6 +105,8 @@ const ( KeyHealthTimeInterval = "health-server-interval" KeyBase = "base" + + KeyKeepSensorsOnExit = "keep-sensors-on-exit" ) type UsernameMetadaCode int @@ -220,6 +222,8 @@ func ReadAndSetFlags() error { Config.HealthServerInterval = viper.GetInt(KeyHealthTimeInterval) Config.Base = viper.GetString(KeyBase) + + Config.KeepSensorsOnExit = viper.GetBool(KeyKeepSensorsOnExit) return nil } @@ -376,4 +380,6 @@ func AddFlags(flags *pflag.FlagSet) { flags.Int(KeyHealthTimeInterval, 10, "Health server interval in seconds") flags.String(KeyBase, defaults.DefaultMapPrefix, "base") + + flags.Bool(KeyKeepSensorsOnExit, false, "Do not unload sensors on exit") }