diff --git a/collector/lib/CollectionMethod.cpp b/collector/lib/CollectionMethod.cpp index 29864ddd6f..1e684d6b7c 100644 --- a/collector/lib/CollectionMethod.cpp +++ b/collector/lib/CollectionMethod.cpp @@ -18,6 +18,8 @@ const char* CollectionMethodName(CollectionMethod method) { return "ebpf"; case CollectionMethod::CORE_BPF: return "core_bpf"; + case CollectionMethod::PROCFS_ONLY: + return "procfs_only"; default: CLOG(WARNING) << "Unexpected CollectionMethod: " << static_cast(method); return "unknown"; @@ -38,6 +40,10 @@ CollectionMethod ParseCollectionMethod(std::string_view method) { return CollectionMethod::CORE_BPF; } + if (cm == "procfs_only") { + return CollectionMethod::PROCFS_ONLY; + } + CLOG(WARNING) << "Invalid collection-method (" << cm << "), using CO-RE BPF"; return CollectionMethod::CORE_BPF; } diff --git a/collector/lib/CollectionMethod.h b/collector/lib/CollectionMethod.h index 4dcb68b9a7..35e768273b 100644 --- a/collector/lib/CollectionMethod.h +++ b/collector/lib/CollectionMethod.h @@ -9,6 +9,7 @@ namespace collector { enum class CollectionMethod : uint8_t { EBPF = 0, CORE_BPF, + PROCFS_ONLY, }; std::ostream& operator<<(std::ostream& os, CollectionMethod method); diff --git a/collector/lib/CollectorConfig.h b/collector/lib/CollectorConfig.h index 454ac07019..b05a42bc28 100644 --- a/collector/lib/CollectorConfig.h +++ b/collector/lib/CollectorConfig.h @@ -31,7 +31,8 @@ class CollectorConfig { static constexpr bool kTurnOffScrape = false; static constexpr int kScrapeInterval = 30; static constexpr int64_t kMaxConnectionsPerMinute = 2048; - static constexpr CollectionMethod kCollectionMethod = CollectionMethod::CORE_BPF; + // static constexpr CollectionMethod kCollectionMethod = CollectionMethod::CORE_BPF; + static constexpr CollectionMethod kCollectionMethod = CollectionMethod::PROCFS_ONLY; static constexpr const char* kSyscalls[] = { "accept", "accept4", diff --git a/collector/lib/CollectorService.cpp b/collector/lib/CollectorService.cpp index 78f66b9a1e..c3e3bc9b19 100644 --- a/collector/lib/CollectorService.cpp +++ b/collector/lib/CollectorService.cpp @@ -119,13 +119,17 @@ void CollectorService::RunForever() { server.addHandler(collector_config_inspector->kBaseRoute, collector_config_inspector.get()); } - system_inspector_.Init(config_, conn_tracker); - system_inspector_.Start(); + if (config_.GetCollectionMethod() != CollectionMethod::PROCFS_ONLY) { + system_inspector_.Init(config_, conn_tracker); + system_inspector_.Start(); + } ControlValue cv; while ((cv = control_->load(std::memory_order_relaxed)) != STOP_COLLECTOR) { - system_inspector_.Run(*control_); - CLOG(DEBUG) << "Interrupted collector!"; + if (config_.GetCollectionMethod() != CollectionMethod::PROCFS_ONLY) { + system_inspector_.Run(*control_); + CLOG(DEBUG) << "Interrupted collector!"; + } } int signal = signum_.load(); @@ -144,7 +148,9 @@ void CollectorService::RunForever() { exporter.stop(); server.close(); - system_inspector_.CleanUp(); + if (config_.GetCollectionMethod() != CollectionMethod::PROCFS_ONLY) { + system_inspector_.CleanUp(); + } } bool CollectorService::InitKernel() { @@ -158,6 +164,10 @@ bool CollectorService::WaitForGRPCServer() { } bool SetupKernelDriver(CollectorService& collector, const CollectorConfig& config) { + if (config.GetCollectionMethod() == CollectionMethod::PROCFS_ONLY) { + return true; + } + auto& startup_diagnostics = StartupDiagnostics::GetInstance(); std::string cm_name(CollectionMethodName(config.GetCollectionMethod())); diff --git a/integration-tests/pkg/config/config.go b/integration-tests/pkg/config/config.go index 47febb7cd4..36cca64e16 100644 --- a/integration-tests/pkg/config/config.go +++ b/integration-tests/pkg/config/config.go @@ -7,8 +7,9 @@ import ( ) const ( - CollectionMethodEBPF = "ebpf" - CollectionMethodCoreBPF = "core-bpf" + CollectionMethodEBPF = "ebpf" + CollectionMethodCoreBPF = "core-bpf" + CollectionMethodProcfsOnly = "procfs_only" runtimeDefaultCommand = "docker" runtimeDefaultSocket = "/var/run/docker.sock" @@ -27,8 +28,9 @@ const ( var ( qa_tag = ReadEnvVar(envQATag) - collection_method = ReadEnvVarWithDefault(envCollectionMethod, CollectionMethodCoreBPF) - stop_timeout = ReadEnvVarWithDefault(envStopTimeout, defaultStopTimeoutSeconds) + collection_method = ReadEnvVarWithDefault(envCollectionMethod, CollectionMethodProcfsOnly) + //collection_method = ReadEnvVarWithDefault(envCollectionMethod, CollectionMethodCoreBPF) + stop_timeout = ReadEnvVarWithDefault(envStopTimeout, defaultStopTimeoutSeconds) image_store *ImageStore collector_options *CollectorOptions