properly supported nfsv4; added plugin to collect nfs client statistics; fixes #959
Costa Tsaousis (ktsaou) committed
Sep 16, 2016 at 23:49 UTC
d143559b84a32a3c97cafbe9b304cb02b5f77408
5 files changed
+187
-81
src/Makefile.am
+1
@@ -52,6 +52,7 @@ netdata_SOURCES = \
52
proc_net_dev.c \
53
proc_net_ip_vs_stats.c \
54
proc_net_netstat.c \
55
+ proc_net_rpc_nfs.c \
56
proc_net_rpc_nfsd.c \
57
proc_net_snmp.c \
58
proc_net_snmp6.c \
src/plugin_proc.c
+10
@@ -28,6 +28,7 @@ void *proc_main(void *ptr)
28
int vdo_proc_stat = !config_get_boolean("plugin:proc", "/proc/stat", 1);
29
int vdo_proc_meminfo = !config_get_boolean("plugin:proc", "/proc/meminfo", 1);
30
int vdo_proc_vmstat = !config_get_boolean("plugin:proc", "/proc/vmstat", 1);
31
+ int vdo_proc_net_rpc_nfs = !config_get_boolean("plugin:proc", "/proc/net/rpc/nfs", 1);
32
int vdo_proc_net_rpc_nfsd = !config_get_boolean("plugin:proc", "/proc/net/rpc/nfsd", 1);
33
int vdo_proc_sys_kernel_random_entropy_avail = !config_get_boolean("plugin:proc", "/proc/sys/kernel/random/entropy_avail", 1);
34
int vdo_proc_interrupts = !config_get_boolean("plugin:proc", "/proc/interrupts", 1);
@@ -49,6 +50,7 @@ void *proc_main(void *ptr)
50
unsigned long long sutime_proc_stat = 0ULL;
51
unsigned long long sutime_proc_meminfo = 0ULL;
52
unsigned long long sutime_proc_vmstat = 0ULL;
53
+ unsigned long long sutime_proc_net_rpc_nfs = 0ULL;
54
unsigned long long sutime_proc_net_rpc_nfsd = 0ULL;
55
unsigned long long sutime_proc_sys_kernel_random_entropy_avail = 0ULL;
56
unsigned long long sutime_proc_interrupts = 0ULL;
@@ -221,6 +223,14 @@ void *proc_main(void *ptr)
223
}
224
if(unlikely(netdata_exit)) break;
225
226
+ if(!vdo_proc_net_rpc_nfs) {
227
+ debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_rpc_nfs().");
228
+ sunow = time_usec();
229
+ vdo_proc_net_rpc_nfs = do_proc_net_rpc_nfs(rrd_update_every, (sutime_proc_net_rpc_nfs > 0)?sunow - sutime_proc_net_rpc_nfs:0ULL);
230
+ sutime_proc_net_rpc_nfs = sunow;
231
+ }
232
+ if(unlikely(netdata_exit)) break;
233
+
234
// END -- the job is done
235
236
// --------------------------------------------------------------------
src/plugin_proc.h
+1
@@ -13,6 +13,7 @@ extern int do_proc_net_ip_vs_stats(int update_every, unsigned long long dt);
13
extern int do_proc_stat(int update_every, unsigned long long dt);
14
extern int do_proc_meminfo(int update_every, unsigned long long dt);
15
extern int do_proc_vmstat(int update_every, unsigned long long dt);
16
+extern int do_proc_net_rpc_nfs(int update_every, unsigned long long dt);
17
extern int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt);
18
extern int do_proc_sys_kernel_random_entropy_avail(int update_every, unsigned long long dt);
19
extern int do_proc_interrupts(int update_every, unsigned long long dt);
src/proc_net_rpc_nfsd.c
+168
-80
@@ -2,47 +2,135 @@
2
3
struct nfsd_procs {
4
char name[30];
5
- unsigned long long proc2;
6
- unsigned long long proc3;
7
- unsigned long long proc4;
8
- int present2;
9
- int present3;
10
- int present4;
5
+ unsigned long long value;
6
+ int present;
7
};
8
13
-struct nfsd_procs nfsd_proc_values[] = {
14
- { "null", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
15
- { "getattr", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
16
- { "setattr", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
17
- { "lookup", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
18
- { "access", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
19
- { "readlink", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
20
- { "read", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
21
- { "write", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
22
- { "create", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
23
- { "mkdir", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
24
- { "symlink", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
25
- { "mknod", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
26
- { "remove", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
27
- { "rmdir", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
28
- { "rename", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
29
- { "link", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
30
- { "readdir", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
31
- { "readdirplus", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
32
- { "fsstat", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
33
- { "fsinfo", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
34
- { "pathconf", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
35
- { "commit", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
36
- { "", 0ULL, 0ULL, 0ULL, 0, 0, 0 },
9
+struct nfsd_procs nfsd_proc2_values[] = {
10
+ { "null", 0ULL, 0 },
11
+ { "getattr", 0ULL, 0 },
12
+ { "setattr", 0ULL, 0 },
13
+ { "root", 0ULL, 0 },
14
+ { "lookup", 0ULL, 0 },
15
+ { "readlink", 0ULL, 0 },
16
+ { "read", 0ULL, 0 },
17
+ { "wrcache", 0ULL, 0 },
18
+ { "write", 0ULL, 0 },
19
+ { "create", 0ULL, 0 },
20
+ { "remove", 0ULL, 0 },
21
+ { "rename", 0ULL, 0 },
22
+ { "link", 0ULL, 0 },
23
+ { "symlink", 0ULL, 0 },
24
+ { "mkdir", 0ULL, 0 },
25
+ { "rmdir", 0ULL, 0 },
26
+ { "readdir", 0ULL, 0 },
27
+ { "fsstat", 0ULL, 0 },
28
+
29
+ /* termination */
30
+ { "", 0ULL, 0 }
31
};
32
39
-struct nfsd4_ops {
40
- char name[30];
41
- unsigned long long value;
42
- int present;
33
+struct nfsd_procs nfsd_proc3_values[] = {
34
+ { "null", 0ULL, 0 },
35
+ { "getattr", 0ULL, 0 },
36
+ { "setattr", 0ULL, 0 },
37
+ { "lookup", 0ULL, 0 },
38
+ { "access", 0ULL, 0 },
39
+ { "readlink", 0ULL, 0 },
40
+ { "read", 0ULL, 0 },
41
+ { "write", 0ULL, 0 },
42
+ { "create", 0ULL, 0 },
43
+ { "mkdir", 0ULL, 0 },
44
+ { "symlink", 0ULL, 0 },
45
+ { "mknod", 0ULL, 0 },
46
+ { "remove", 0ULL, 0 },
47
+ { "rmdir", 0ULL, 0 },
48
+ { "rename", 0ULL, 0 },
49
+ { "link", 0ULL, 0 },
50
+ { "readdir", 0ULL, 0 },
51
+ { "readdirplus", 0ULL, 0 },
52
+ { "fsstat", 0ULL, 0 },
53
+ { "fsinfo", 0ULL, 0 },
54
+ { "pathconf", 0ULL, 0 },
55
+ { "commit", 0ULL, 0 },
56
+
57
+ /* termination */
58
+ { "", 0ULL, 0 }
59
+};
60
+
61
+struct nfsd_procs nfsd_proc4_values[] = {
62
+ { "null", 0ULL, 0 },
63
+ { "read", 0ULL, 0 },
64
+ { "write", 0ULL, 0 },
65
+ { "commit", 0ULL, 0 },
66
+ { "open", 0ULL, 0 },
67
+ { "open_conf", 0ULL, 0 },
68
+ { "open_noat", 0ULL, 0 },
69
+ { "open_dgrd", 0ULL, 0 },
70
+ { "close", 0ULL, 0 },
71
+ { "setattr", 0ULL, 0 },
72
+ { "fsinfo", 0ULL, 0 },
73
+ { "renew", 0ULL, 0 },
74
+ { "setclntid", 0ULL, 0 },
75
+ { "confirm", 0ULL, 0 },
76
+ { "lock", 0ULL, 0 },
77
+ { "lockt", 0ULL, 0 },
78
+ { "locku", 0ULL, 0 },
79
+ { "access", 0ULL, 0 },
80
+ { "getattr", 0ULL, 0 },
81
+ { "lookup", 0ULL, 0 },
82
+ { "lookup_root", 0ULL, 0 },
83
+ { "remove", 0ULL, 0 },
84
+ { "rename", 0ULL, 0 },
85
+ { "link", 0ULL, 0 },
86
+ { "symlink", 0ULL, 0 },
87
+ { "create", 0ULL, 0 },
88
+ { "pathconf", 0ULL, 0 },
89
+ { "statfs", 0ULL, 0 },
90
+ { "readlink", 0ULL, 0 },
91
+ { "readdir", 0ULL, 0 },
92
+ { "server_caps", 0ULL, 0 },
93
+ { "delegreturn", 0ULL, 0 },
94
+ { "getacl", 0ULL, 0 },
95
+ { "setacl", 0ULL, 0 },
96
+ { "fs_locations", 0ULL, 0 },
97
+ { "rel_lkowner", 0ULL, 0 },
98
+ { "secinfo", 0ULL, 0 },
99
+ { "fsid_present", 0ULL, 0 },
100
+
101
+ /* nfsv4.1 client ops */
102
+ { "exchange_id", 0ULL, 0 },
103
+ { "create_session", 0ULL, 0 },
104
+ { "destroy_session", 0ULL, 0 },
105
+ { "sequence", 0ULL, 0 },
106
+ { "get_lease_time", 0ULL, 0 },
107
+ { "reclaim_comp", 0ULL, 0 },
108
+ { "layoutget", 0ULL, 0 },
109
+ { "getdevinfo", 0ULL, 0 },
110
+ { "layoutcommit", 0ULL, 0 },
111
+ { "layoutreturn", 0ULL, 0 },
112
+ { "secinfo_no", 0ULL, 0 },
113
+ { "test_stateid", 0ULL, 0 },
114
+ { "free_stateid", 0ULL, 0 },
115
+ { "getdevicelist", 0ULL, 0 },
116
+ { "bind_conn_to_ses", 0ULL, 0 },
117
+ { "destroy_clientid", 0ULL, 0 },
118
+
119
+ /* nfsv4.2 client ops */
120
+ { "seek", 0ULL, 0 },
121
+ { "allocate", 0ULL, 0 },
122
+ { "deallocate", 0ULL, 0 },
123
+ { "layoutstats", 0ULL, 0 },
124
+ { "clone", 0ULL, 0 },
125
+
126
+ /* termination */
127
+ { "", 0ULL, 0 }
128
};
129
45
-struct nfsd4_ops nfsd4_ops_values[] = {
130
+struct nfsd_procs nfsd4_ops_values[] = {
131
+ { "unused_op0", 0ULL, 0},
132
+ { "unused_op1", 0ULL, 0},
133
+ { "future_op2", 0ULL, 0},
134
{ "access", 0ULL, 0},
135
{ "close", 0ULL, 0},
136
{ "commit", 0ULL, 0},
@@ -56,7 +144,7 @@ struct nfsd4_ops nfsd4_ops_values[] = {
144
{ "lockt", 0ULL, 0},
145
{ "locku", 0ULL, 0},
146
{ "lookup", 0ULL, 0},
59
- { "lookupp", 0ULL, 0},
147
+ { "lookup_root", 0ULL, 0},
148
{ "nverify", 0ULL, 0},
149
{ "open", 0ULL, 0},
150
{ "openattr", 0ULL, 0},
@@ -107,7 +195,7 @@ struct nfsd4_ops nfsd4_ops_values[] = {
195
{ "copy", 0ULL, 0},
196
{ "copy_notify", 0ULL, 0},
197
{ "deallocate", 0ULL, 0},
110
- { "io_advise", 0ULL, 0},
198
+ { "ioadvise", 0ULL, 0},
199
{ "layouterror", 0ULL, 0},
200
{ "layoutstats", 0ULL, 0},
201
{ "offload_cancel", 0ULL, 0},
@@ -174,13 +262,13 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
262
unsigned long long th_threads = 0, th_fullcnt = 0, th_hist10 = 0, th_hist20 = 0, th_hist30 = 0, th_hist40 = 0, th_hist50 = 0, th_hist60 = 0, th_hist70 = 0, th_hist80 = 0, th_hist90 = 0, th_hist100 = 0;
263
unsigned long long ra_size = 0, ra_hist10 = 0, ra_hist20 = 0, ra_hist30 = 0, ra_hist40 = 0, ra_hist50 = 0, ra_hist60 = 0, ra_hist70 = 0, ra_hist80 = 0, ra_hist90 = 0, ra_hist100 = 0, ra_none = 0;
264
unsigned long long net_count = 0, net_udp_count = 0, net_tcp_count = 0, net_tcp_connections = 0;
177
- unsigned long long rpc_count = 0, rpc_bad_format = 0, rpc_bad_auth = 0, rpc_bad_client = 0;
265
+ unsigned long long rpc_calls = 0, rpc_bad_format = 0, rpc_bad_auth = 0, rpc_bad_client = 0;
266
267
for(l = 0; l < lines ;l++) {
268
words = procfile_linewords(ff, l);
269
if(!words) continue;
270
183
- type = procfile_lineword(ff, l, 0);
271
+ type = procfile_lineword(ff, l, 0);
272
273
if(do_rc == 1 && strcmp(type, "rc") == 0) {
274
if(words < 4) {
@@ -306,12 +394,12 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
394
continue;
395
}
396
309
- rpc_count = strtoull(procfile_lineword(ff, l, 1), NULL, 10);
397
+ rpc_calls = strtoull(procfile_lineword(ff, l, 1), NULL, 10);
398
rpc_bad_format = strtoull(procfile_lineword(ff, l, 2), NULL, 10);
399
rpc_bad_auth = strtoull(procfile_lineword(ff, l, 3), NULL, 10);
400
rpc_bad_client = strtoull(procfile_lineword(ff, l, 4), NULL, 10);
401
314
- unsigned long long sum = rpc_count + rpc_bad_format + rpc_bad_auth + rpc_bad_client;
402
+ unsigned long long sum = rpc_calls + rpc_bad_format + rpc_bad_auth + rpc_bad_client;
403
if(sum == 0ULL) do_rpc = -1;
404
else do_rpc = 2;
405
}
@@ -321,10 +409,10 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
409
410
unsigned long long sum = 0;
411
unsigned int i, j;
324
- for(i = 0, j = 2; j < words && nfsd_proc_values[i].name[0] ; i++, j++) {
325
- nfsd_proc_values[i].proc2 = strtoull(procfile_lineword(ff, l, j), NULL, 10);
326
- nfsd_proc_values[i].present2 = 1;
327
- sum += nfsd_proc_values[i].proc2;
412
+ for(i = 0, j = 2; j < words && nfsd_proc2_values[i].name[0] ; i++, j++) {
413
+ nfsd_proc2_values[i].value = strtoull(procfile_lineword(ff, l, j), NULL, 10);
414
+ nfsd_proc2_values[i].present = 1;
415
+ sum += nfsd_proc2_values[i].value;
416
}
417
418
if(sum == 0ULL) {
@@ -342,10 +430,10 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
430
431
unsigned long long sum = 0;
432
unsigned int i, j;
345
- for(i = 0, j = 2; j < words && nfsd_proc_values[i].name[0] ; i++, j++) {
346
- nfsd_proc_values[i].proc3 = strtoull(procfile_lineword(ff, l, j), NULL, 10);
347
- nfsd_proc_values[i].present3 = 1;
348
- sum += nfsd_proc_values[i].proc3;
433
+ for(i = 0, j = 2; j < words && nfsd_proc3_values[i].name[0] ; i++, j++) {
434
+ nfsd_proc3_values[i].value = strtoull(procfile_lineword(ff, l, j), NULL, 10);
435
+ nfsd_proc3_values[i].present = 1;
436
+ sum += nfsd_proc3_values[i].value;
437
}
438
439
if(sum == 0ULL) {
@@ -363,10 +451,10 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
451
452
unsigned long long sum = 0;
453
unsigned int i, j;
366
- for(i = 0, j = 2; j < words && nfsd_proc_values[i].name[0] ; i++, j++) {
367
- nfsd_proc_values[i].proc4 = strtoull(procfile_lineword(ff, l, j), NULL, 10);
368
- nfsd_proc_values[i].present4 = 1;
369
- sum += nfsd_proc_values[i].proc4;
454
+ for(i = 0, j = 2; j < words && nfsd_proc4_values[i].name[0] ; i++, j++) {
455
+ nfsd_proc4_values[i].value = strtoull(procfile_lineword(ff, l, j), NULL, 10);
456
+ nfsd_proc4_values[i].present = 1;
457
+ sum += nfsd_proc4_values[i].value;
458
}
459
460
if(sum == 0ULL) {
@@ -408,7 +496,7 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
496
if(do_rc == 2) {
497
st = rrdset_find_bytype("nfsd", "readcache");
498
if(!st) {
411
- st = rrdset_create("nfsd", "readcache", NULL, "nfsd", NULL, "Read Cache", "reads/s", 5000, update_every, RRDSET_TYPE_STACKED);
499
+ st = rrdset_create("nfsd", "readcache", NULL, "cache", NULL, "NFS Server Read Cache", "reads/s", 5000, update_every, RRDSET_TYPE_STACKED);
500
501
rrddim_add(st, "hits", NULL, 1, 1, RRDDIM_INCREMENTAL);
502
rrddim_add(st, "misses", NULL, 1, 1, RRDDIM_INCREMENTAL);
@@ -427,7 +515,7 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
515
if(do_fh == 2) {
516
st = rrdset_find_bytype("nfsd", "filehandles");
517
if(!st) {
430
- st = rrdset_create("nfsd", "filehandles", NULL, "nfsd", NULL, "File Handles", "handles/s", 5001, update_every, RRDSET_TYPE_LINE);
518
+ st = rrdset_create("nfsd", "filehandles", NULL, "filehandles", NULL, "NFS Server File Handles", "handles/s", 5001, update_every, RRDSET_TYPE_LINE);
519
st->isdetail = 1;
520
521
rrddim_add(st, "stale", NULL, 1, 1, RRDDIM_ABSOLUTE);
@@ -451,7 +539,7 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
539
if(do_io == 2) {
540
st = rrdset_find_bytype("nfsd", "io");
541
if(!st) {
454
- st = rrdset_create("nfsd", "io", NULL, "nfsd", NULL, "I/O", "kilobytes/s", 5002, update_every, RRDSET_TYPE_AREA);
542
+ st = rrdset_create("nfsd", "io", NULL, "io", NULL, "NFS Server I/O", "kilobytes/s", 5002, update_every, RRDSET_TYPE_AREA);
543
544
rrddim_add(st, "read", NULL, 1, 1000, RRDDIM_INCREMENTAL);
545
rrddim_add(st, "write", NULL, -1, 1000, RRDDIM_INCREMENTAL);
@@ -468,7 +556,7 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
556
if(do_th == 2) {
557
st = rrdset_find_bytype("nfsd", "threads");
558
if(!st) {
471
- st = rrdset_create("nfsd", "threads", NULL, "nfsd", NULL, "Threads", "threads", 5003, update_every, RRDSET_TYPE_LINE);
559
+ st = rrdset_create("nfsd", "threads", NULL, "threads", NULL, "NFS Server Threads", "threads", 5003, update_every, RRDSET_TYPE_LINE);
560
561
rrddim_add(st, "threads", NULL, 1, 1, RRDDIM_ABSOLUTE);
562
}
@@ -479,7 +567,7 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
567
568
st = rrdset_find_bytype("nfsd", "threads_fullcnt");
569
if(!st) {
482
- st = rrdset_create("nfsd", "threads_fullcnt", NULL, "nfsd", NULL, "Threads Full Count", "ops/s", 5004, update_every, RRDSET_TYPE_LINE);
570
+ st = rrdset_create("nfsd", "threads_fullcnt", NULL, "threads", NULL, "NFS Server Threads Full Count", "ops/s", 5004, update_every, RRDSET_TYPE_LINE);
571
572
rrddim_add(st, "full_count", NULL, 1, 1, RRDDIM_INCREMENTAL);
573
}
@@ -490,7 +578,7 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
578
579
st = rrdset_find_bytype("nfsd", "threads_histogram");
580
if(!st) {
493
- st = rrdset_create("nfsd", "threads_histogram", NULL, "nfsd", NULL, "Threads Usage Histogram", "percentage", 5005, update_every, RRDSET_TYPE_LINE);
581
+ st = rrdset_create("nfsd", "threads_histogram", NULL, "threads", NULL, "NFS Server Threads Usage Histogram", "percentage", 5005, update_every, RRDSET_TYPE_LINE);
582
583
rrddim_add(st, "0%-10%", NULL, 1, 1000, RRDDIM_ABSOLUTE);
584
rrddim_add(st, "10%-20%", NULL, 1, 1000, RRDDIM_ABSOLUTE);
@@ -523,7 +611,7 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
611
if(do_ra == 2) {
612
st = rrdset_find_bytype("nfsd", "readahead");
613
if(!st) {
526
- st = rrdset_create("nfsd", "readahead", NULL, "nfsd", NULL, "Read Ahead Depth", "percentage", 5005, update_every, RRDSET_TYPE_STACKED);
614
+ st = rrdset_create("nfsd", "readahead", NULL, "readahead", NULL, "NFS Server Read Ahead Depth", "percentage", 5005, update_every, RRDSET_TYPE_STACKED);
615
616
rrddim_add(st, "10%", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
617
rrddim_add(st, "20%", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL);
@@ -561,7 +649,7 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
649
if(do_net == 2) {
650
st = rrdset_find_bytype("nfsd", "net");
651
if(!st) {
564
- st = rrdset_create("nfsd", "net", NULL, "nfsd", NULL, "Network Reads", "reads/s", 5007, update_every, RRDSET_TYPE_STACKED);
652
+ st = rrdset_create("nfsd", "net", NULL, "network", NULL, "NFS Server Network Statistics", "packets/s", 5007, update_every, RRDSET_TYPE_STACKED);
653
st->isdetail = 1;
654
655
rrddim_add(st, "udp", NULL, 1, 1, RRDDIM_INCREMENTAL);
@@ -583,10 +671,10 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
671
if(do_rpc == 2) {
672
st = rrdset_find_bytype("nfsd", "rpc");
673
if(!st) {
586
- st = rrdset_create("nfsd", "rpc", NULL, "nfsd", NULL, "Remote Procedure Calls", "calls/s", 5008, update_every, RRDSET_TYPE_LINE);
674
+ st = rrdset_create("nfsd", "rpc", NULL, "rpc", NULL, "NFS Server Remote Procedure Calls Statistics", "calls/s", 5008, update_every, RRDSET_TYPE_LINE);
675
st->isdetail = 1;
676
589
- rrddim_add(st, "all", NULL, 1, 1, RRDDIM_INCREMENTAL);
677
+ rrddim_add(st, "calls", NULL, 1, 1, RRDDIM_INCREMENTAL);
678
rrddim_add(st, "bad_format", NULL, -1, 1, RRDDIM_INCREMENTAL);
679
rrddim_add(st, "bad_auth", NULL, -1, 1, RRDDIM_INCREMENTAL);
680
}
@@ -595,7 +683,7 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
683
// ignore rpc_bad_client
684
if(rpc_bad_client) {};
685
598
- rrddim_set(st, "all", rpc_count);
686
+ rrddim_set(st, "calls", rpc_calls);
687
rrddim_set(st, "bad_format", rpc_bad_format);
688
rrddim_set(st, "bad_auth", rpc_bad_auth);
689
rrdset_done(st);
@@ -607,15 +695,15 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
695
unsigned int i;
696
st = rrdset_find_bytype("nfsd", "proc2");
697
if(!st) {
610
- st = rrdset_create("nfsd", "proc2", NULL, "nfsd", NULL, "NFS v2 Calls", "calls/s", 5009, update_every, RRDSET_TYPE_STACKED);
698
+ st = rrdset_create("nfsd", "proc2", NULL, "nfsv2rpc", NULL, "NFS v2 Server Remote Procedure Calls", "calls/s", 5009, update_every, RRDSET_TYPE_STACKED);
699
612
- for(i = 0; nfsd_proc_values[i].present2 ; i++)
613
- rrddim_add(st, nfsd_proc_values[i].name, NULL, 1, 1, RRDDIM_INCREMENTAL);
700
+ for(i = 0; nfsd_proc2_values[i].present ; i++)
701
+ rrddim_add(st, nfsd_proc2_values[i].name, NULL, 1, 1, RRDDIM_INCREMENTAL);
702
}
703
else rrdset_next(st);
704
617
- for(i = 0; nfsd_proc_values[i].present2 ; i++)
618
- rrddim_set(st, nfsd_proc_values[i].name, nfsd_proc_values[i].proc2);
705
+ for(i = 0; nfsd_proc2_values[i].present ; i++)
706
+ rrddim_set(st, nfsd_proc2_values[i].name, nfsd_proc2_values[i].value);
707
708
rrdset_done(st);
709
}
@@ -626,15 +714,15 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
714
unsigned int i;
715
st = rrdset_find_bytype("nfsd", "proc3");
716
if(!st) {
629
- st = rrdset_create("nfsd", "proc3", NULL, "nfsd", NULL, "NFS v3 Calls", "calls/s", 5010, update_every, RRDSET_TYPE_STACKED);
717
+ st = rrdset_create("nfsd", "proc3", NULL, "nfsv3rpc", NULL, "NFS v3 Server Remote Procedure Calls", "calls/s", 5010, update_every, RRDSET_TYPE_STACKED);
718
631
- for(i = 0; nfsd_proc_values[i].present3 ; i++)
632
- rrddim_add(st, nfsd_proc_values[i].name, NULL, 1, 1, RRDDIM_INCREMENTAL);
719
+ for(i = 0; nfsd_proc3_values[i].present ; i++)
720
+ rrddim_add(st, nfsd_proc3_values[i].name, NULL, 1, 1, RRDDIM_INCREMENTAL);
721
}
722
else rrdset_next(st);
723
636
- for(i = 0; nfsd_proc_values[i].present3 ; i++)
637
- rrddim_set(st, nfsd_proc_values[i].name, nfsd_proc_values[i].proc3);
724
+ for(i = 0; nfsd_proc3_values[i].present ; i++)
725
+ rrddim_set(st, nfsd_proc3_values[i].name, nfsd_proc3_values[i].value);
726
727
rrdset_done(st);
728
}
@@ -645,15 +733,15 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
733
unsigned int i;
734
st = rrdset_find_bytype("nfsd", "proc4");
735
if(!st) {
648
- st = rrdset_create("nfsd", "proc4", NULL, "nfsd", NULL, "NFS v4 Calls", "calls/s", 5011, update_every, RRDSET_TYPE_STACKED);
736
+ st = rrdset_create("nfsd", "proc4", NULL, "nfsv4rpc", NULL, "NFS v4 Server Remote Procedure Calls", "calls/s", 5011, update_every, RRDSET_TYPE_STACKED);
737
650
- for(i = 0; nfsd_proc_values[i].present4 ; i++)
651
- rrddim_add(st, nfsd_proc_values[i].name, NULL, 1, 1, RRDDIM_INCREMENTAL);
738
+ for(i = 0; nfsd_proc4_values[i].present ; i++)
739
+ rrddim_add(st, nfsd_proc4_values[i].name, NULL, 1, 1, RRDDIM_INCREMENTAL);
740
}
741
else rrdset_next(st);
742
655
- for(i = 0; nfsd_proc_values[i].present4 ; i++)
656
- rrddim_set(st, nfsd_proc_values[i].name, nfsd_proc_values[i].proc4);
743
+ for(i = 0; nfsd_proc4_values[i].present ; i++)
744
+ rrddim_set(st, nfsd_proc4_values[i].name, nfsd_proc4_values[i].value);
745
746
rrdset_done(st);
747
}
@@ -664,7 +752,7 @@ int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt) {
752
unsigned int i;
753
st = rrdset_find_bytype("nfsd", "proc4ops");
754
if(!st) {
667
- st = rrdset_create("nfsd", "proc4ops", NULL, "nfsd", NULL, "NFS v4 Operations", "operations/s", 5012, update_every, RRDSET_TYPE_STACKED);
755
+ st = rrdset_create("nfsd", "proc4ops", NULL, "nfsv2ops", NULL, "NFS v4 Server Operations", "operations/s", 5012, update_every, RRDSET_TYPE_STACKED);
756
757
for(i = 0; nfsd4_ops_values[i].present ; i++)
758
rrddim_add(st, nfsd4_ops_values[i].name, NULL, 1, 1, RRDDIM_INCREMENTAL);
web/index.html
+7
-1
@@ -1593,7 +1593,13 @@ var menuData = {
1593
},
1594
1595
'nfsd': {
1596
- title: 'File Server (nfsd)',
1596
+ title: 'NFS Server',
1597
+ icon: '<i class="fa fa-folder-open" aria-hidden="true"></i>',
1598
+ info: undefined
1599
+ },
1600
+
1601
+ 'nfs': {
1602
+ title: 'NFS Client',
1603
icon: '<i class="fa fa-folder-open" aria-hidden="true"></i>',
1604
info: undefined
1605
},