extended processes function info from apps.plugin (#13822)
extended processes function info
Costa Tsaousis committed
Oct 14, 2022 at 21:16 UTC
559c4ccdb88421f077f471ebbc3222c948b47c13
1 file changed
+74
-64
collectors/apps.plugin/apps_plugin.c
+74
-64
@@ -4271,20 +4271,26 @@ static void apps_plugin_function_processes_help(const char *transaction) {
4271
pluginsd_function_result_end_to_stdout();
4272
}
4273
4274
-#define add_table_field(wb, key, name, visible, type, units, max, sort) do { \
4275
- if(fields_added) buffer_strcat(wb, ","); \
4276
- buffer_sprintf(wb, "\n \"%s\": {", key); \
4277
- buffer_sprintf(wb, "\n \"index\":%d,", fields_added); \
4278
- buffer_sprintf(wb, "\n \"name\":\"%s\",", name); \
4279
- buffer_sprintf(wb, "\n \"visible\":%s,", (visible)?"true":"false"); \
4280
- buffer_sprintf(wb, "\n \"type\":\"%s\",", type); \
4281
- if(units) \
4282
- buffer_sprintf(wb, "\n \"units\":\"%s\",", (char*)(units)); \
4283
- if(!isnan(max)) \
4284
- buffer_sprintf(wb, "\n \"max\":\"%f\",", (NETDATA_DOUBLE)(max)); \
4285
- buffer_sprintf(wb, "\n \"sort\":\"%s\"", sort); \
4286
- buffer_sprintf(wb, "\n }"); \
4287
- fields_added++; \
4274
+#define add_table_field(wb, key, name, visible, type, units, max, sort, sortable, sticky, unique_key, pointer_to, summary) do { \
4275
+ if(fields_added) buffer_strcat(wb, ","); \
4276
+ buffer_sprintf(wb, "\n \"%s\": {", key); \
4277
+ buffer_sprintf(wb, "\n \"index\":%d,", fields_added); \
4278
+ buffer_sprintf(wb, "\n \"unique_key\":%s,", (unique_key)?"true":"false"); \
4279
+ buffer_sprintf(wb, "\n \"name\":\"%s\",", name); \
4280
+ buffer_sprintf(wb, "\n \"visible\":%s,", (visible)?"true":"false"); \
4281
+ buffer_sprintf(wb, "\n \"type\":\"%s\",", type); \
4282
+ if(units) \
4283
+ buffer_sprintf(wb, "\n \"units\":\"%s\",", (char*)(units)); \
4284
+ if(!isnan(max)) \
4285
+ buffer_sprintf(wb, "\n \"max\":\"%f\",", (NETDATA_DOUBLE)(max)); \
4286
+ if(pointer_to) \
4287
+ buffer_sprintf(wb, "\n \"pointer_to\":\"%s\",", (char *)(pointer_to)); \
4288
+ buffer_sprintf(wb, "\n \"sort\":\"%s\",", sort); \
4289
+ buffer_sprintf(wb, "\n \"sortable\":%s,", (sortable)?"true":"false"); \
4290
+ buffer_sprintf(wb, "\n \"sticky\":%s,", (sticky)?"true":"false"); \
4291
+ buffer_sprintf(wb, "\n \"summary\":\"%s\"", summary); \
4292
+ buffer_sprintf(wb, "\n }"); \
4293
+ fields_added++; \
4294
} while(0)
4295
4296
static BUFFER *func_processes_fields = NULL;
@@ -4375,75 +4381,75 @@ static void apps_plugin_function_processes(const char *transaction, char *functi
4381
// IMPORTANT!
4382
// THE ORDER SHOULD BE THE SAME WITH THE VALUES!
4383
4378
- add_table_field(func_processes_fields, "Pid", "Process ID", true, "integer", NULL, NAN, "ascending");
4379
- add_table_field(func_processes_fields, "Cmd", "Process Name", true, "string", NULL, NAN, "ascending");
4384
+ add_table_field(func_processes_fields, "Pid", "Process ID", true, "integer", NULL, NAN, "ascending", true, true, true, NULL, "count_unique");
4385
+ add_table_field(func_processes_fields, "Cmd", "Process Name", true, "string", NULL, NAN, "ascending", true, true, false, NULL, "count_unique");
4386
4387
#ifdef NETDATA_DEV_MODE
4382
- add_table_field(func_processes_fields, "CmdLine", "Command Line", false, "detail-string:cmd", NULL, NAN, "ascending");
4388
+ add_table_field(func_processes_fields, "CmdLine", "Command Line", false, "detail-string:cmd", NULL, NAN, "ascending", true, true, false, NULL, "count_unique");
4389
#endif
4384
- add_table_field(func_processes_fields, "PPid", "Parent Process ID", false, "integer", NULL, NAN, "ascending");
4385
- add_table_field(func_processes_fields, "Category", "Category (apps_groups.conf)", true, "string", NULL, NAN, "ascending");
4386
- add_table_field(func_processes_fields, "User", "User Owner", true, "string", NULL, NAN, "ascending");
4387
- add_table_field(func_processes_fields, "Uid", "User ID", false, "integer", NULL, NAN, "ascending");
4388
- add_table_field(func_processes_fields, "Group", "Group Owner", false, "string", NULL, NAN, "ascending");
4389
- add_table_field(func_processes_fields, "Gid", "Group ID", false, "integer", NULL, NAN, "ascending");
4390
- add_table_field(func_processes_fields, "Processes", "Processes", true, "bar-with-integer", "processes", NAN, "descending");
4391
- add_table_field(func_processes_fields, "Threads", "Threads", true, "bar-with-integer", "threads", NAN, "descending");
4392
- add_table_field(func_processes_fields, "Uptime", "Uptime in seconds", true, "duration", "seconds", NAN, "descending");
4390
+ add_table_field(func_processes_fields, "PPid", "Parent Process ID", false, "integer", NULL, NAN, "ascending", true, true, false, "Pid", "count_unique");
4391
+ add_table_field(func_processes_fields, "Category", "Category (apps_groups.conf)", true, "string", NULL, NAN, "ascending", true, true, false, NULL, "count_unique");
4392
+ add_table_field(func_processes_fields, "User", "User Owner", true, "string", NULL, NAN, "ascending", true, true, false, NULL, "count_unique");
4393
+ add_table_field(func_processes_fields, "Uid", "User ID", false, "integer", NULL, NAN, "ascending", true, true, false, NULL, "count_unique");
4394
+ add_table_field(func_processes_fields, "Group", "Group Owner", false, "string", NULL, NAN, "ascending", true, true, false, NULL, "count_unique");
4395
+ add_table_field(func_processes_fields, "Gid", "Group ID", false, "integer", NULL, NAN, "ascending", true, true, false, NULL, "count_unique");
4396
+ add_table_field(func_processes_fields, "Processes", "Processes", true, "bar-with-integer", "processes", NAN, "descending", true, false, false, NULL, "sum");
4397
+ add_table_field(func_processes_fields, "Threads", "Threads", true, "bar-with-integer", "threads", NAN, "descending", true, false, false, NULL, "sum");
4398
+ add_table_field(func_processes_fields, "Uptime", "Uptime in seconds", true, "duration", "seconds", NAN, "descending", true, false, false, NULL, "max");
4399
4400
// minor page faults
4395
- add_table_field(func_processes_fields, "MinFlt", "Minor Page Faults/s", false, "bar", "page faults/s", NAN, "descending");
4396
- add_table_field(func_processes_fields, "CMinFlt", "Children Minor Page Faults/s", false, "bar", "page faults/s", NAN, "descending");
4397
- add_table_field(func_processes_fields, "TMinFlt", "Total Minor Page Faults/s", false, "bar", "page faults/s", NAN, "descending");
4401
+ add_table_field(func_processes_fields, "MinFlt", "Minor Page Faults/s", false, "bar", "page faults/s", NAN, "descending", true, false, false, NULL, "sum");
4402
+ add_table_field(func_processes_fields, "CMinFlt", "Children Minor Page Faults/s", false, "bar", "page faults/s", NAN, "descending", true, false, false, NULL, "sum");
4403
+ add_table_field(func_processes_fields, "TMinFlt", "Total Minor Page Faults/s", false, "bar", "page faults/s", NAN, "descending", true, false, false, NULL, "sum");
4404
4405
// major page faults
4400
- add_table_field(func_processes_fields, "MajFlt", "Major Page Faults/s", false, "bar", "page faults/s", NAN, "descending");
4401
- add_table_field(func_processes_fields, "CMajFlt", "Children Major Page Faults/s", false, "bar", "page faults/s", NAN, "descending");
4402
- add_table_field(func_processes_fields, "TMajFlt", "Total Major Page Faults/s", true, "bar", "page faults/s", NAN, "descending");
4406
+ add_table_field(func_processes_fields, "MajFlt", "Major Page Faults/s", false, "bar", "page faults/s", NAN, "descending", true, false, false, NULL, "sum");
4407
+ add_table_field(func_processes_fields, "CMajFlt", "Children Major Page Faults/s", false, "bar", "page faults/s", NAN, "descending", true, false, false, NULL, "sum");
4408
+ add_table_field(func_processes_fields, "TMajFlt", "Total Major Page Faults/s", true, "bar", "page faults/s", NAN, "descending", true, false, false, NULL, "sum");
4409
4410
// CPU utilization
4405
- add_table_field(func_processes_fields, "UserCPU", "User CPU time", false, "bar-only", "%", NAN, "descending");
4406
- add_table_field(func_processes_fields, "SysCPU", "System CPU Time", false, "bar-only", "%", NAN, "descending");
4407
- add_table_field(func_processes_fields, "GuestCPU", "Guest CPU Time", false, "bar-only", "%", NAN, "descending");
4408
- add_table_field(func_processes_fields, "CUserCPU", "Children User CPU Time", false, "bar-only", "%", NAN, "descending");
4409
- add_table_field(func_processes_fields, "CSysCPU", "Children System CPU Time", false, "bar-only", "%", NAN, "descending");
4410
- add_table_field(func_processes_fields, "CGuestCPU", "Children Guest CPU Time", false, "bar-only", "%", NAN, "descending");
4411
- add_table_field(func_processes_fields, "CPU", "Total CPU Time", true, "bar-only", "%", NAN, "descending");
4411
+ add_table_field(func_processes_fields, "UserCPU", "User CPU time", false, "bar-only", "%", NAN, "descending", true, false, false, NULL, "sum");
4412
+ add_table_field(func_processes_fields, "SysCPU", "System CPU Time", false, "bar-only", "%", NAN, "descending", true, false, false, NULL, "sum");
4413
+ add_table_field(func_processes_fields, "GuestCPU", "Guest CPU Time", false, "bar-only", "%", NAN, "descending", true, false, false, NULL, "sum");
4414
+ add_table_field(func_processes_fields, "CUserCPU", "Children User CPU Time", false, "bar-only", "%", NAN, "descending", true, false, false, NULL, "sum");
4415
+ add_table_field(func_processes_fields, "CSysCPU", "Children System CPU Time", false, "bar-only", "%", NAN, "descending", true, false, false, NULL, "sum");
4416
+ add_table_field(func_processes_fields, "CGuestCPU", "Children Guest CPU Time", false, "bar-only", "%", NAN, "descending", true, false, false, NULL, "sum");
4417
+ add_table_field(func_processes_fields, "CPU", "Total CPU Time", true, "bar-only", "%", NAN, "descending", true, false, false, NULL, "sum");
4418
4419
// memory
4414
- add_table_field(func_processes_fields, "VMSize", "Virtual Memory Size", false, "bar", "MiB", NAN, "descending");
4415
- add_table_field(func_processes_fields, "RSS", "Resident Set Size", MemTotal?false:true, "bar", "MiB", NAN, "descending");
4416
- add_table_field(func_processes_fields, "Shared", "Shared Pages", false, "bar", "MiB", NAN, "descending");
4417
- add_table_field(func_processes_fields, "Swap", "Swap Memory", false, "bar", "MiB", NAN, "descending");
4420
+ add_table_field(func_processes_fields, "VMSize", "Virtual Memory Size", false, "bar", "MiB", NAN, "descending", true, false, false, NULL, "sum");
4421
+ add_table_field(func_processes_fields, "RSS", "Resident Set Size", MemTotal?false:true, "bar", "MiB", NAN, "descending", true, false, false, NULL, "sum");
4422
+ add_table_field(func_processes_fields, "Shared", "Shared Pages", false, "bar", "MiB", NAN, "descending", true, false, false, NULL, "sum");
4423
+ add_table_field(func_processes_fields, "Swap", "Swap Memory", false, "bar", "MiB", NAN, "descending", true, false, false, NULL, "sum");
4424
4425
if(MemTotal)
4420
- add_table_field(func_processes_fields, "MemPcnt", "Memory Percentage", true, "bar", "%", 100.0, "descending");
4426
+ add_table_field(func_processes_fields, "MemPcnt", "Memory Percentage", true, "bar", "%", 100.0, "descending", true, false, false, NULL, "sum");
4427
4428
// Logical I/O
4429
#ifndef __FreeBSD__
4424
- add_table_field(func_processes_fields, "LReads", "Logical I/O Reads", false, "bar", "KiB/s", NAN, "descending");
4425
- add_table_field(func_processes_fields, "LWrites", "Logical I/O Writes", false, "bar", "KiB/s", NAN, "descending");
4430
+ add_table_field(func_processes_fields, "LReads", "Logical I/O Reads", false, "bar", "KiB/s", NAN, "descending", true, false, false, NULL, "sum");
4431
+ add_table_field(func_processes_fields, "LWrites", "Logical I/O Writes", false, "bar", "KiB/s", NAN, "descending", true, false, false, NULL, "sum");
4432
#endif
4433
4434
// Physical I/O
4429
- add_table_field(func_processes_fields, "PReads", "Physical I/O Reads", true, "bar", "KiB/s", NAN, "descending");
4430
- add_table_field(func_processes_fields, "PWrites", "Physical I/O Writes", true, "bar", "KiB/s", NAN, "descending");
4435
+ add_table_field(func_processes_fields, "PReads", "Physical I/O Reads", true, "bar", "KiB/s", NAN, "descending", true, false, false, NULL, "sum");
4436
+ add_table_field(func_processes_fields, "PWrites", "Physical I/O Writes", true, "bar", "KiB/s", NAN, "descending", true, false, false, NULL, "sum");
4437
4438
// I/O calls
4433
- add_table_field(func_processes_fields, "RCalls", "I/O Read Calls", false, "bar", "calls/s", NAN, "descending");
4434
- add_table_field(func_processes_fields, "WCalls", "I/O Write Calls", false, "bar", "calls/s", NAN, "descending");
4439
+ add_table_field(func_processes_fields, "RCalls", "I/O Read Calls", false, "bar", "calls/s", NAN, "descending", true, false, false, NULL, "sum");
4440
+ add_table_field(func_processes_fields, "WCalls", "I/O Write Calls", false, "bar", "calls/s", NAN, "descending", true, false, false, NULL, "sum");
4441
4442
// open file descriptors
4437
- add_table_field(func_processes_fields, "Files", "Open Files", false, "bar", "generic", NAN, "descending");
4438
- add_table_field(func_processes_fields, "Pipes", "Open Pipes", false, "bar", "generic", NAN, "descending");
4439
- add_table_field(func_processes_fields, "Sockets", "Open Sockets", false, "bar", "generic", NAN, "descending");
4440
- add_table_field(func_processes_fields, "iNotiFDs", "Open iNotify Descriptors", false, "bar", "generic", NAN, "descending");
4441
- add_table_field(func_processes_fields, "EventFDs", "Open Event Descriptors", false, "bar", "generic", NAN, "descending");
4442
- add_table_field(func_processes_fields, "TimerFDs", "Open Timer Descriptors", false, "bar", "generic", NAN, "descending");
4443
- add_table_field(func_processes_fields, "SigFDs", "Open Signal Descriptors", false, "bar", "generic", NAN, "descending");
4444
- add_table_field(func_processes_fields, "EvPollFDs", "Open Event Poll Descriptors", false, "bar", "generic", NAN, "descending");
4445
- add_table_field(func_processes_fields, "OtherFDs", "Other Open Descriptors", false, "bar", "generic", NAN, "descending");
4446
- add_table_field(func_processes_fields, "FDs", "All Open File Descriptors", true, "bar", "generic", NAN, "descending");
4443
+ add_table_field(func_processes_fields, "Files", "Open Files", false, "bar", "generic", NAN, "descending", true, false, false, NULL, "sum");
4444
+ add_table_field(func_processes_fields, "Pipes", "Open Pipes", false, "bar", "generic", NAN, "descending", true, false, false, NULL, "sum");
4445
+ add_table_field(func_processes_fields, "Sockets", "Open Sockets", false, "bar", "generic", NAN, "descending", true, false, false, NULL, "sum");
4446
+ add_table_field(func_processes_fields, "iNotiFDs", "Open iNotify Descriptors", false, "bar", "generic", NAN, "descending", true, false, false, NULL, "sum");
4447
+ add_table_field(func_processes_fields, "EventFDs", "Open Event Descriptors", false, "bar", "generic", NAN, "descending", true, false, false, NULL, "sum");
4448
+ add_table_field(func_processes_fields, "TimerFDs", "Open Timer Descriptors", false, "bar", "generic", NAN, "descending", true, false, false, NULL, "sum");
4449
+ add_table_field(func_processes_fields, "SigFDs", "Open Signal Descriptors", false, "bar", "generic", NAN, "descending", true, false, false, NULL, "sum");
4450
+ add_table_field(func_processes_fields, "EvPollFDs", "Open Event Poll Descriptors", false, "bar", "generic", NAN, "descending", true, false, false, NULL, "sum");
4451
+ add_table_field(func_processes_fields, "OtherFDs", "Other Open Descriptors", false, "bar", "generic", NAN, "descending", true, false, false, NULL, "sum");
4452
+ add_table_field(func_processes_fields, "FDs", "All Open File Descriptors", true, "bar", "generic", NAN, "descending", true, false, false, NULL, "sum");
4453
4454
buffer_strcat(
4455
func_processes_fields,
@@ -4531,12 +4537,16 @@ static void apps_plugin_function_processes(const char *transaction, char *functi
4537
"\n },"
4538
"\n \"group_by\": {"
4539
"\n \"Process Tree by PID\": {"
4534
- "\n \"columns\": [ \"PPid\", \"Pid\" ],"
4535
- "\n \"order\": [ \"ascending\", \"ascending\" ]"
4540
+ "\n \"columns\": [ \"PPid\" ]"
4541
"\n },"
4542
"\n \"Process Tree by Category\": {"
4538
- "\n \"columns\": [ \"Category\", \"PPid\", \"Pid\" ],"
4539
- "\n \"order\": [ \"any\", \"ascending\", \"ascending\" ]"
4543
+ "\n \"columns\": [ \"Category\", \"PPid\" ]"
4544
+ "\n },"
4545
+ "\n \"Process Tree by User\": {"
4546
+ "\n \"columns\": [ \"User\", \"PPid\" ]"
4547
+ "\n },"
4548
+ "\n \"Process Tree by Group\": {"
4549
+ "\n \"columns\": [ \"Group\", \"PPid\" ]"
4550
"\n }"
4551
"\n },"
4552
"\n \"data\":["