2
2
3
3
#include < filesystem>
4
4
#include < optional>
5
- #include < sstream>
6
5
7
6
#include < libsinsp/sinsp.h>
8
7
@@ -50,9 +49,18 @@ BoolEnvVar collect_connection_status("ROX_COLLECT_CONNECTION_STATUS", true);
50
49
51
50
BoolEnvVar enable_external_ips (" ROX_ENABLE_EXTERNAL_IPS" , false );
52
51
52
+ // Stats and metrics configuration
53
53
BoolEnvVar enable_connection_stats (" ROX_COLLECTOR_ENABLE_CONNECTION_STATS" , true );
54
-
55
54
BoolEnvVar enable_detailed_metrics (" ROX_COLLECTOR_ENABLE_DETAILED_METRICS" , true );
55
+ StringListEnvVar connection_stats_quantiles (" ROX_COLLECTOR_CONNECTION_STATS_QUANTILES" );
56
+ DoubleEnvVar connection_stats_error (" ROX_COLLECTOR_CONNECTION_STATS_ERROR" , 0.01 );
57
+ UIntEnvVar connection_stats_window (" ROX_COLLECTOR_CONNECTION_STATS_WINDOW" , 60 );
58
+
59
+ // Sinsp configuration
60
+ UIntEnvVar sinsp_cpu_per_buffer (" ROX_COLLECTOR_SINSP_CPU_PER_BUFFER" , DEFAULT_CPU_FOR_EACH_BUFFER);
61
+ UIntEnvVar sinsp_buffer_size (" ROX_COLLECTOR_SINSP_BUFFER_SIZE" , DEFAULT_DRIVER_BUFFER_BYTES_DIM);
62
+ UIntEnvVar sinsp_total_buffer_size (" ROX_COLLECTOR_SINSP_TOTAL_BUFFER_SIZE" , 512 * 1024 * 1024 );
63
+ UIntEnvVar sinsp_thread_cache_size (" ROX_COLLECTOR_SINSP_TOTAL_BUFFER_SIZE" , 32768 );
56
64
57
65
BoolEnvVar enable_runtime_config (" ROX_COLLECTOR_RUNTIME_CONFIG_ENABLED" , false );
58
66
@@ -98,7 +106,13 @@ CollectorConfig::CollectorConfig(CollectorArgs* args)
98
106
use_docker_ce_(use_docker_ce),
99
107
use_podman_ce_(use_podman_ce),
100
108
enable_introspection_(enable_introspection),
101
- track_send_recv_(track_send_recv) {
109
+ track_send_recv_(track_send_recv),
110
+ connection_stats_error_(connection_stats_error),
111
+ connection_stats_window_(connection_stats_window),
112
+ sinsp_cpu_per_buffer_(sinsp_cpu_per_buffer),
113
+ sinsp_buffer_size_(sinsp_buffer_size),
114
+ sinsp_total_buffer_size_(sinsp_total_buffer_size),
115
+ sinsp_thread_cache_size_(sinsp_thread_cache_size) {
102
116
// Get hostname
103
117
hostname_ = GetHostname ();
104
118
if (hostname_.empty ()) {
@@ -118,8 +132,7 @@ CollectorConfig::CollectorConfig(CollectorArgs* args)
118
132
HandleArgs (args);
119
133
HandleNetworkConfig ();
120
134
HandleAfterglowEnvVars ();
121
- HandleConnectionStatsEnvVars ();
122
- HandleSinspEnvVars ();
135
+ HandleConnectionStatsQuantiles ();
123
136
HandleConfig (config_file.value ());
124
137
125
138
host_config_ = ProcessHostHeuristics (*this );
@@ -290,17 +303,12 @@ void CollectorConfig::HandleAfterglowEnvVars() {
290
303
CLOG (INFO) << " Afterglow is " << (enable_afterglow_ ? " enabled" : " disabled" );
291
304
}
292
305
293
- void CollectorConfig::HandleConnectionStatsEnvVars () {
294
- const char * envvar;
295
-
306
+ void CollectorConfig::HandleConnectionStatsQuantiles () {
296
307
connection_stats_quantiles_ = {0.50 , 0.90 , 0.95 };
297
308
298
- if ((envvar = std::getenv ( " ROX_COLLECTOR_CONNECTION_STATS_QUANTILES " )) != NULL ) {
309
+ if (connection_stats_quantiles. hasValue () ) {
299
310
connection_stats_quantiles_.clear ();
300
- std::stringstream quantiles (envvar);
301
- while (quantiles.good ()) {
302
- std::string quantile;
303
- std::getline (quantiles, quantile, ' ,' );
311
+ for (const auto & quantile : connection_stats_quantiles.value ()) {
304
312
try {
305
313
double v = std::stod (quantile);
306
314
connection_stats_quantiles_.push_back (v);
@@ -310,69 +318,6 @@ void CollectorConfig::HandleConnectionStatsEnvVars() {
310
318
}
311
319
}
312
320
}
313
-
314
- if ((envvar = std::getenv (" ROX_COLLECTOR_CONNECTION_STATS_ERROR" )) != NULL ) {
315
- try {
316
- connection_stats_error_ = std::stod (envvar);
317
- CLOG (INFO) << " Connection statistics error value: " << connection_stats_error_;
318
- } catch (...) {
319
- CLOG (ERROR) << " Invalid quantile error value: '" << envvar << " '" ;
320
- }
321
- }
322
-
323
- if ((envvar = std::getenv (" ROX_COLLECTOR_CONNECTION_STATS_WINDOW" )) != NULL ) {
324
- try {
325
- connection_stats_window_ = std::stoi (envvar);
326
- CLOG (INFO) << " Connection statistics window: " << connection_stats_window_;
327
- } catch (...) {
328
- CLOG (ERROR) << " Invalid window length value: '" << envvar << " '" ;
329
- }
330
- }
331
- }
332
-
333
- void CollectorConfig::HandleSinspEnvVars () {
334
- const char * envvar;
335
-
336
- sinsp_cpu_per_buffer_ = DEFAULT_CPU_FOR_EACH_BUFFER;
337
- sinsp_buffer_size_ = DEFAULT_DRIVER_BUFFER_BYTES_DIM;
338
- // the default values for sinsp_thread_cache_size_, sinsp_total_buffer_size_
339
- // are not picked up from Falco, but set in the CollectorConfig class.
340
-
341
- if ((envvar = std::getenv (" ROX_COLLECTOR_SINSP_CPU_PER_BUFFER" )) != NULL ) {
342
- try {
343
- sinsp_cpu_per_buffer_ = std::stoi (envvar);
344
- CLOG (INFO) << " Sinsp cpu per buffer: " << sinsp_cpu_per_buffer_;
345
- } catch (...) {
346
- CLOG (ERROR) << " Invalid cpu per buffer value: '" << envvar << " '" ;
347
- }
348
- }
349
-
350
- if ((envvar = std::getenv (" ROX_COLLECTOR_SINSP_BUFFER_SIZE" )) != NULL ) {
351
- try {
352
- sinsp_buffer_size_ = std::stoll (envvar);
353
- CLOG (INFO) << " Sinsp buffer size: " << sinsp_buffer_size_;
354
- } catch (...) {
355
- CLOG (ERROR) << " Invalid buffer size value: '" << envvar << " '" ;
356
- }
357
- }
358
-
359
- if ((envvar = std::getenv (" ROX_COLLECTOR_SINSP_TOTAL_BUFFER_SIZE" )) != NULL ) {
360
- try {
361
- sinsp_total_buffer_size_ = std::stoll (envvar);
362
- CLOG (INFO) << " Sinsp total buffer size: " << sinsp_total_buffer_size_;
363
- } catch (...) {
364
- CLOG (ERROR) << " Invalid total buffer size value: '" << envvar << " '" ;
365
- }
366
- }
367
-
368
- if ((envvar = std::getenv (" ROX_COLLECTOR_SINSP_THREAD_CACHE_SIZE" )) != NULL ) {
369
- try {
370
- sinsp_thread_cache_size_ = std::stoll (envvar);
371
- CLOG (INFO) << " Sinsp thread cache size: " << sinsp_thread_cache_size_;
372
- } catch (...) {
373
- CLOG (ERROR) << " Invalid thread cache size value: '" << envvar << " '" ;
374
- }
375
- }
376
321
}
377
322
378
323
bool CollectorConfig::YamlConfigToConfig (YAML::Node& yamlConfig) {
0 commit comments