add system-info columns to streaming function (#19482)
* add system-info columns to streaming function * add group by to streaming for system info fields
Costa Tsaousis committed
Jan 24, 2025 at 20:58 UTC
752553d6ecd14c3607089148f36f525d0fcb61fb
3 files changed
+318
-84
src/database/rrdhost-system-info.c
+61
@@ -498,3 +498,64 @@ void rrdhost_system_info_to_node_info(struct rrdhost_system_info *system_info, s
498
node_info->data.ml_info.ml_capable = system_info->ml_capable;
499
node_info->data.ml_info.ml_enabled = system_info->ml_enabled;
500
}
501
+
502
+void rrdhost_system_info_to_streaming_function_array(BUFFER *wb, struct rrdhost_system_info *system_info) {
503
+ if(system_info) {
504
+ buffer_json_add_array_item_string(wb, system_info->host_os_name ? system_info->host_os_name : "");
505
+ buffer_json_add_array_item_string(wb, system_info->host_os_id ? system_info->host_os_id : "");
506
+ buffer_json_add_array_item_string(wb, system_info->host_os_id_like ? system_info->host_os_id_like : "");
507
+ buffer_json_add_array_item_string(wb, system_info->host_os_version ? system_info->host_os_version : "");
508
+ buffer_json_add_array_item_string(wb, system_info->host_os_version_id ? system_info->host_os_version_id : "");
509
+ buffer_json_add_array_item_string(wb, system_info->host_os_detection ? system_info->host_os_detection : "");
510
+ buffer_json_add_array_item_string(wb, system_info->host_cores ? system_info->host_cores : "");
511
+ buffer_json_add_array_item_string(wb, system_info->host_disk_space ? system_info->host_disk_space : "");
512
+ buffer_json_add_array_item_string(wb, system_info->host_cpu_freq ? system_info->host_cpu_freq : "");
513
+ buffer_json_add_array_item_string(wb, system_info->host_ram_total ? system_info->host_ram_total : "");
514
+ buffer_json_add_array_item_string(wb, system_info->container_os_name ? system_info->container_os_name : "");
515
+ buffer_json_add_array_item_string(wb, system_info->container_os_id ? system_info->container_os_id : "");
516
+ buffer_json_add_array_item_string(wb, system_info->container_os_id_like ? system_info->container_os_id_like : "");
517
+ buffer_json_add_array_item_string(wb, system_info->container_os_version ? system_info->container_os_version : "");
518
+ buffer_json_add_array_item_string(wb, system_info->container_os_version_id ? system_info->container_os_version_id : "");
519
+ buffer_json_add_array_item_string(wb, system_info->container_os_detection ? system_info->container_os_detection : "");
520
+ buffer_json_add_array_item_string(wb, system_info->is_k8s_node ? system_info->is_k8s_node : "");
521
+ buffer_json_add_array_item_string(wb, system_info->kernel_name ? system_info->kernel_name : "");
522
+ buffer_json_add_array_item_string(wb, system_info->kernel_version ? system_info->kernel_version : "");
523
+ buffer_json_add_array_item_string(wb, system_info->architecture ? system_info->architecture : "");
524
+ buffer_json_add_array_item_string(wb, system_info->virtualization ? system_info->virtualization : "");
525
+ buffer_json_add_array_item_string(wb, system_info->virt_detection ? system_info->virt_detection : "");
526
+ buffer_json_add_array_item_string(wb, system_info->container ? system_info->container : "");
527
+ buffer_json_add_array_item_string(wb, system_info->container_detection ? system_info->container_detection : "");
528
+ buffer_json_add_array_item_string(wb, system_info->cloud_provider_type ? system_info->cloud_provider_type : "");
529
+ buffer_json_add_array_item_string(wb, system_info->cloud_instance_type ? system_info->cloud_instance_type : "");
530
+ buffer_json_add_array_item_string(wb, system_info->cloud_instance_region ? system_info->cloud_instance_region : "");
531
+ }
532
+ else {
533
+ buffer_json_add_array_item_string(wb, "");
534
+ buffer_json_add_array_item_string(wb, "");
535
+ buffer_json_add_array_item_string(wb, "");
536
+ buffer_json_add_array_item_string(wb, "");
537
+ buffer_json_add_array_item_string(wb, "");
538
+ buffer_json_add_array_item_string(wb, "");
539
+ buffer_json_add_array_item_string(wb, "");
540
+ buffer_json_add_array_item_string(wb, "");
541
+ buffer_json_add_array_item_string(wb, "");
542
+ buffer_json_add_array_item_string(wb, "");
543
+ buffer_json_add_array_item_string(wb, "");
544
+ buffer_json_add_array_item_string(wb, "");
545
+ buffer_json_add_array_item_string(wb, "");
546
+ buffer_json_add_array_item_string(wb, "");
547
+ buffer_json_add_array_item_string(wb, "");
548
+ buffer_json_add_array_item_string(wb, "");
549
+ buffer_json_add_array_item_string(wb, "");
550
+ buffer_json_add_array_item_string(wb, "");
551
+ buffer_json_add_array_item_string(wb, "");
552
+ buffer_json_add_array_item_string(wb, "");
553
+ buffer_json_add_array_item_string(wb, "");
554
+ buffer_json_add_array_item_string(wb, "");
555
+ buffer_json_add_array_item_string(wb, "");
556
+ buffer_json_add_array_item_string(wb, "");
557
+ buffer_json_add_array_item_string(wb, "");
558
+ buffer_json_add_array_item_string(wb, "");
559
+ buffer_json_add_array_item_string(wb, "");
560
+ }
561
+}
\ No newline at end of file
src/database/rrdhost-system-info.h
+2
@@ -96,4 +96,6 @@ int rrdhost_system_info_foreach(struct rrdhost_system_info *system_info, add_hos
96
struct update_node_info;
97
void rrdhost_system_info_to_node_info(struct rrdhost_system_info *system_info, struct update_node_info *node_info);
98
99
+void rrdhost_system_info_to_streaming_function_array(BUFFER *wb, struct rrdhost_system_info *system_info);
100
+
101
#endif //NETDATA_RRDHOST_SYSTEM_INFO_H
src/web/api/functions/function-streaming.c
+255
-84
@@ -2,6 +2,19 @@
2
3
#include "function-streaming.h"
4
5
+#define GROUP_BY_COLUMN(name, descr) \
6
+ buffer_json_member_add_object(wb, name);\
7
+ {\
8
+ buffer_json_member_add_string(wb, "name", descr);\
9
+ buffer_json_member_add_array(wb, "columns");\
10
+ {\
11
+ buffer_json_add_array_item_string(wb, name);\
12
+ }\
13
+ buffer_json_array_close(wb);\
14
+ }\
15
+ buffer_json_object_close(wb);
16
+
17
+
18
int function_streaming(BUFFER *wb, const char *function __maybe_unused, BUFFER *payload __maybe_unused, const char *source __maybe_unused) {
19
20
time_t now = now_realtime_sec();
@@ -24,27 +37,27 @@ int function_streaming(BUFFER *wb, const char *function __maybe_unused, BUFFER *
37
size_t max_ml_anomalous = 0, max_ml_normal = 0, max_ml_trained = 0, max_ml_pending = 0, max_ml_silenced = 0;
38
39
time_t
27
- max_db_duration,
28
- max_db_from,
29
- max_db_to,
30
- max_in_age,
31
- max_out_age,
32
- max_out_attempt_age;
40
+ max_db_duration = 0,
41
+ max_db_from = 0,
42
+ max_db_to = 0,
43
+ max_in_age = 0,
44
+ max_out_age = 0,
45
+ max_out_attempt_age = 0;
46
47
uint64_t
35
- max_in_since,
36
- max_out_since,
37
- max_out_attempt_since;
48
+ max_in_since = 0,
49
+ max_out_since = 0,
50
+ max_out_attempt_since = 0;
51
52
int16_t
40
- max_in_hops,
41
- max_out_hops;
53
+ max_in_hops = -1,
54
+ max_out_hops = -1;
55
56
int
44
- max_in_local_port,
45
- max_in_remote_port,
46
- max_out_local_port,
47
- max_out_remote_port;
57
+ max_in_local_port = 0,
58
+ max_in_remote_port = 0,
59
+ max_out_local_port = 0,
60
+ max_out_remote_port = 0;
61
62
{
63
RRDHOST *host;
@@ -75,9 +88,13 @@ int function_streaming(BUFFER *wb, const char *function __maybe_unused, BUFFER *
88
s.stream.sent_bytes_on_this_connection_per_type[i];
89
}
90
78
- // retention
79
- buffer_json_add_array_item_string(wb, rrdhost_hostname(s.host)); // Node
91
+ // Node
92
+ buffer_json_add_array_item_string(wb, rrdhost_hostname(s.host));
93
94
+ // System Info
95
+ rrdhost_system_info_to_streaming_function_array(wb, s.host->system_info);
96
+
97
+ // retention
98
buffer_json_add_array_item_uint64(wb, s.db.first_time_s * MSEC_PER_SEC); // dbFrom
99
if(s.db.first_time_s > max_db_from) max_db_from = s.db.first_time_s;
100
@@ -122,7 +139,7 @@ int function_streaming(BUFFER *wb, const char *function __maybe_unused, BUFFER *
139
140
buffer_json_add_array_item_double(wb, s.ingest.replication.completion); // InReplCompletion
141
buffer_json_add_array_item_uint64(wb, s.ingest.replication.instances); // InReplInstances
125
- buffer_json_add_array_item_string(wb, s.ingest.peers.local.ip); // InLocalIP
142
+ buffer_json_add_array_item_string(wb, s.ingest.type == RRDHOST_INGEST_TYPE_LOCALHOST || s.ingest.type == RRDHOST_INGEST_TYPE_VIRTUAL ? "localhost" : s.ingest.peers.local.ip); // InLocalIP
143
144
buffer_json_add_array_item_uint64(wb, s.ingest.peers.local.port); // InLocalPort
145
if(s.ingest.peers.local.port > max_in_local_port) max_in_local_port = s.ingest.peers.local.port;
@@ -154,7 +171,7 @@ int function_streaming(BUFFER *wb, const char *function __maybe_unused, BUFFER *
171
}
172
buffer_json_add_array_item_string(wb, stream_handshake_error_to_string(s.stream.reason)); // OutReason
173
157
- buffer_json_add_array_item_uint64(wb, s.stream.hops); // OutHops
174
+ buffer_json_add_array_item_int64(wb, s.stream.hops); // OutHops
175
if(s.stream.hops > max_out_hops) max_out_hops = s.stream.hops;
176
177
buffer_json_add_array_item_double(wb, s.stream.replication.completion); // OutReplCompletion
@@ -243,6 +260,195 @@ int function_streaming(BUFFER *wb, const char *function __maybe_unused, BUFFER *
260
RRDF_FIELD_OPTS_VISIBLE | RRDF_FIELD_OPTS_UNIQUE_KEY | RRDF_FIELD_OPTS_STICKY,
261
NULL);
262
263
+ buffer_rrdf_table_add_field(wb, field_id++, "OSName", "The name of the host's operating system",
264
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
265
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
266
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
267
+ RRDF_FIELD_OPTS_NONE,
268
+ NULL);
269
+
270
+ buffer_rrdf_table_add_field(wb, field_id++, "OSId", "The identifier of the host's operating system",
271
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
272
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
273
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
274
+ RRDF_FIELD_OPTS_NONE,
275
+ NULL);
276
+
277
+ buffer_rrdf_table_add_field(wb, field_id++, "OSIdLike", "The ID-like string for the host's OS",
278
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
279
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
280
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
281
+ RRDF_FIELD_OPTS_NONE,
282
+ NULL);
283
+
284
+ buffer_rrdf_table_add_field(wb, field_id++, "OSVersion", "The version of the host's operating system",
285
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
286
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
287
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
288
+ RRDF_FIELD_OPTS_NONE,
289
+ NULL);
290
+
291
+ buffer_rrdf_table_add_field(wb, field_id++, "OSVersionId", "The version identifier of the host's OS",
292
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
293
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
294
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
295
+ RRDF_FIELD_OPTS_NONE,
296
+ NULL);
297
+
298
+ buffer_rrdf_table_add_field(wb, field_id++, "OSDetection", "Details about host OS detection",
299
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
300
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
301
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
302
+ RRDF_FIELD_OPTS_NONE,
303
+ NULL);
304
+
305
+ buffer_rrdf_table_add_field(wb, field_id++, "CPUCores", "The number of CPU cores in the host",
306
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
307
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
308
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
309
+ RRDF_FIELD_OPTS_NONE,
310
+ NULL);
311
+
312
+ buffer_rrdf_table_add_field(wb, field_id++, "DiskSpace", "The total disk space available on the host",
313
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
314
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
315
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_NONE,
316
+ RRDF_FIELD_OPTS_NONE,
317
+ NULL);
318
+
319
+ buffer_rrdf_table_add_field(wb, field_id++, "CPUFreq", "The CPU frequency of the host",
320
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
321
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
322
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_NONE,
323
+ RRDF_FIELD_OPTS_NONE,
324
+ NULL);
325
+
326
+ buffer_rrdf_table_add_field(wb, field_id++, "RAMTotal", "The total RAM available on the host",
327
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
328
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
329
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_NONE,
330
+ RRDF_FIELD_OPTS_NONE,
331
+ NULL);
332
+
333
+ buffer_rrdf_table_add_field(wb, field_id++, "ContainerOSName", "The name of the container's operating system",
334
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
335
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
336
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
337
+ RRDF_FIELD_OPTS_NONE,
338
+ NULL);
339
+
340
+ buffer_rrdf_table_add_field(wb, field_id++, "ContainerOSId", "The identifier of the container's operating system",
341
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
342
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
343
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
344
+ RRDF_FIELD_OPTS_NONE,
345
+ NULL);
346
+
347
+ buffer_rrdf_table_add_field(wb, field_id++, "ContainerOSIdLike", "The ID-like string for the container's OS",
348
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
349
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
350
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
351
+ RRDF_FIELD_OPTS_NONE,
352
+ NULL);
353
+
354
+ buffer_rrdf_table_add_field(wb, field_id++, "ContainerOSVersion", "The version of the container's OS",
355
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
356
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
357
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
358
+ RRDF_FIELD_OPTS_NONE,
359
+ NULL);
360
+
361
+ buffer_rrdf_table_add_field(wb, field_id++, "ContainerOSVersionId", "The version identifier of the container's OS",
362
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
363
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
364
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
365
+ RRDF_FIELD_OPTS_NONE,
366
+ NULL);
367
+
368
+ buffer_rrdf_table_add_field(wb, field_id++, "ContainerOSDetection", "Details about container OS detection",
369
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
370
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
371
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
372
+ RRDF_FIELD_OPTS_NONE,
373
+ NULL);
374
+
375
+ buffer_rrdf_table_add_field(wb, field_id++, "IsK8sNode", "Whether this node is part of a Kubernetes cluster",
376
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
377
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
378
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
379
+ RRDF_FIELD_OPTS_NONE,
380
+ NULL);
381
+
382
+ buffer_rrdf_table_add_field(wb, field_id++, "KernelName", "The kernel name",
383
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
384
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
385
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
386
+ RRDF_FIELD_OPTS_NONE,
387
+ NULL);
388
+
389
+ buffer_rrdf_table_add_field(wb, field_id++, "KernelVersion", "The kernel version",
390
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
391
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
392
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
393
+ RRDF_FIELD_OPTS_NONE,
394
+ NULL);
395
+
396
+ buffer_rrdf_table_add_field(wb, field_id++, "Architecture", "The system architecture",
397
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
398
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
399
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
400
+ RRDF_FIELD_OPTS_NONE,
401
+ NULL);
402
+
403
+ buffer_rrdf_table_add_field(wb, field_id++, "Virtualization", "The virtualization technology in use",
404
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
405
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
406
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
407
+ RRDF_FIELD_OPTS_NONE,
408
+ NULL);
409
+
410
+ buffer_rrdf_table_add_field(wb, field_id++, "VirtDetection", "Details about virtualization detection",
411
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
412
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
413
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
414
+ RRDF_FIELD_OPTS_NONE,
415
+ NULL);
416
+
417
+ buffer_rrdf_table_add_field(wb, field_id++, "Container", "Container type information",
418
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
419
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
420
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
421
+ RRDF_FIELD_OPTS_NONE,
422
+ NULL);
423
+
424
+ buffer_rrdf_table_add_field(wb, field_id++, "ContainerDetection", "Details about container detection",
425
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
426
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
427
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
428
+ RRDF_FIELD_OPTS_NONE,
429
+ NULL);
430
+
431
+ buffer_rrdf_table_add_field(wb, field_id++, "CloudProviderType", "The type of cloud provider",
432
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
433
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
434
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
435
+ RRDF_FIELD_OPTS_NONE,
436
+ NULL);
437
+
438
+ buffer_rrdf_table_add_field(wb, field_id++, "CloudInstanceType", "The type of cloud instance",
439
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
440
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
441
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
442
+ RRDF_FIELD_OPTS_NONE,
443
+ NULL);
444
+
445
+ buffer_rrdf_table_add_field(wb, field_id++, "CloudInstanceRegion", "The region of the cloud instance",
446
+ RRDF_FIELD_TYPE_STRING, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_NONE,
447
+ 0, NULL, NAN, RRDF_FIELD_SORT_ASCENDING, NULL,
448
+ RRDF_FIELD_SUMMARY_COUNT, RRDF_FIELD_FILTER_MULTISELECT,
449
+ RRDF_FIELD_OPTS_NONE,
450
+ NULL);
451
+
452
buffer_rrdf_table_add_field(wb, field_id++, "dbFrom", "DB Data Retention From",
453
RRDF_FIELD_TYPE_TIMESTAMP, RRDF_FIELD_VISUAL_VALUE, RRDF_FIELD_TRANSFORM_DATETIME_MS,
454
0, NULL, (double)max_db_from * MSEC_PER_SEC, RRDF_FIELD_SORT_ASCENDING, NULL,
@@ -629,71 +835,36 @@ int function_streaming(BUFFER *wb, const char *function __maybe_unused, BUFFER *
835
836
buffer_json_member_add_object(wb, "group_by");
837
{
632
- buffer_json_member_add_object(wb, "Node");
633
- {
634
- buffer_json_member_add_string(wb, "name", "Node");
635
- buffer_json_member_add_array(wb, "columns");
636
- {
637
- buffer_json_add_array_item_string(wb, "Node");
638
- }
639
- buffer_json_array_close(wb);
640
- }
641
- buffer_json_object_close(wb);
642
-
643
- buffer_json_member_add_object(wb, "InStatus");
644
- {
645
- buffer_json_member_add_string(wb, "name", "Nodes by Collection Status");
646
- buffer_json_member_add_array(wb, "columns");
647
- {
648
- buffer_json_add_array_item_string(wb, "InStatus");
649
- }
650
- buffer_json_array_close(wb);
651
- }
652
- buffer_json_object_close(wb);
653
-
654
- buffer_json_member_add_object(wb, "OutStatus");
655
- {
656
- buffer_json_member_add_string(wb, "name", "Nodes by Streaming Status");
657
- buffer_json_member_add_array(wb, "columns");
658
- {
659
- buffer_json_add_array_item_string(wb, "OutStatus");
660
- }
661
- buffer_json_array_close(wb);
662
- }
663
- buffer_json_object_close(wb);
664
-
665
- buffer_json_member_add_object(wb, "MlStatus");
666
- {
667
- buffer_json_member_add_string(wb, "name", "Nodes by ML Status");
668
- buffer_json_member_add_array(wb, "columns");
669
- {
670
- buffer_json_add_array_item_string(wb, "MlStatus");
671
- }
672
- buffer_json_array_close(wb);
673
- }
674
- buffer_json_object_close(wb);
675
-
676
- buffer_json_member_add_object(wb, "InRemoteIP");
677
- {
678
- buffer_json_member_add_string(wb, "name", "Nodes by Inbound IP");
679
- buffer_json_member_add_array(wb, "columns");
680
- {
681
- buffer_json_add_array_item_string(wb, "InRemoteIP");
682
- }
683
- buffer_json_array_close(wb);
684
- }
685
- buffer_json_object_close(wb);
686
-
687
- buffer_json_member_add_object(wb, "OutRemoteIP");
688
- {
689
- buffer_json_member_add_string(wb, "name", "Nodes by Outbound IP");
690
- buffer_json_member_add_array(wb, "columns");
691
- {
692
- buffer_json_add_array_item_string(wb, "OutRemoteIP");
693
- }
694
- buffer_json_array_close(wb);
695
- }
696
- buffer_json_object_close(wb);
838
+ GROUP_BY_COLUMN("OSName", "O/S Name");
839
+ GROUP_BY_COLUMN("OSId", "O/S ID");
840
+ GROUP_BY_COLUMN("OSIdLike", "O/S ID Like");
841
+ GROUP_BY_COLUMN("OSVersion", "O/S Version");
842
+ GROUP_BY_COLUMN("OSVersionId", "O/S Version ID");
843
+ GROUP_BY_COLUMN("OSDetection", "O/S Detection");
844
+ GROUP_BY_COLUMN("CPUCores", "CPU Cores");
845
+ GROUP_BY_COLUMN("ContainerOSName", "Container O/S Name");
846
+ GROUP_BY_COLUMN("ContainerOSId", "Container O/S ID");
847
+ GROUP_BY_COLUMN("ContainerOSIdLike", "Container O/S ID Like");
848
+ GROUP_BY_COLUMN("ContainerOSVersion", "Container O/S Version");
849
+ GROUP_BY_COLUMN("ContainerOSVersionId", "Container O/S Version ID");
850
+ GROUP_BY_COLUMN("ContainerOSDetection", "Container O/S Detection");
851
+ GROUP_BY_COLUMN("IsK8sNode", "Kubernetes Nodes");
852
+ GROUP_BY_COLUMN("KernelName", "Kernel Name");
853
+ GROUP_BY_COLUMN("KernelVersion", "Kernel Version");
854
+ GROUP_BY_COLUMN("Architecture", "Architecture");
855
+ GROUP_BY_COLUMN("Virtualization", "Virtualization Technology");
856
+ GROUP_BY_COLUMN("VirtDetection", "Virtualization Detection");
857
+ GROUP_BY_COLUMN("Container", "Container");
858
+ GROUP_BY_COLUMN("ContainerDetection", "Container Detection");
859
+ GROUP_BY_COLUMN("CloudProviderType", "Cloud Provider Type");
860
+ GROUP_BY_COLUMN("CloudInstanceType", "Cloud Instance Type");
861
+ GROUP_BY_COLUMN("CloudInstanceRegion", "Cloud Instance Region");
862
+
863
+ GROUP_BY_COLUMN("InStatus", "Collection Status");
864
+ GROUP_BY_COLUMN("OutStatus", "Streaming Status");
865
+ GROUP_BY_COLUMN("MlStatus", "ML Status");
866
+ GROUP_BY_COLUMN("InRemoteIP", "Inbound IP");
867
+ GROUP_BY_COLUMN("OutRemoteIP", "Outbound IP");
868
}
869
buffer_json_object_close(wb); // group_by
870