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