From b509bba784bc892a04da6b712921d1e32b6ab6ce Mon Sep 17 00:00:00 2001 From: svennd Date: Sat, 1 Apr 2017 19:38:01 +0200 Subject: [PATCH 01/16] update just realized the pull script is a bad idea. not really portable. no nfsv2 stats for centos 7+ --- html/includes/functions.inc.php | 3 + .../graphs/application/nfs-server_io.inc.php | 33 ++ .../graphs/application/nfs-server_net.inc.php | 35 +++ .../nfs-server_net_tcp_conns.inc.php | 14 + .../graphs/application/nfs-server_ra.inc.php | 43 +++ .../graphs/application/nfs-server_rc.inc.php | 33 ++ .../graphs/application/nfs-server_rpc.inc.php | 36 +++ .../application/nfs-server_stats.inc.php | 53 ++++ .../application/nfs-server_stats_v2.inc.php | 49 +++ .../application/nfs-server_stats_v4.inc.php | 33 ++ .../application/nfs-server_v4ops.inc.php | 85 ++++++ html/pages/apps.inc.php | 14 + html/pages/device/apps/nfs-server.inc.php | 37 +++ includes/polling/applications/nfs-server.php | 287 ++++++++++++++++++ scripts/agent-local/nfs-server.sh | 88 ++++++ 15 files changed, 843 insertions(+) create mode 100644 html/includes/graphs/application/nfs-server_io.inc.php create mode 100644 html/includes/graphs/application/nfs-server_net.inc.php create mode 100644 html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php create mode 100644 html/includes/graphs/application/nfs-server_ra.inc.php create mode 100644 html/includes/graphs/application/nfs-server_rc.inc.php create mode 100644 html/includes/graphs/application/nfs-server_rpc.inc.php create mode 100644 html/includes/graphs/application/nfs-server_stats.inc.php create mode 100644 html/includes/graphs/application/nfs-server_stats_v2.inc.php create mode 100644 html/includes/graphs/application/nfs-server_stats_v4.inc.php create mode 100644 html/includes/graphs/application/nfs-server_v4ops.inc.php create mode 100644 html/pages/device/apps/nfs-server.inc.php create mode 100644 includes/polling/applications/nfs-server.php create mode 100644 scripts/agent-local/nfs-server.sh diff --git a/html/includes/functions.inc.php b/html/includes/functions.inc.php index 4cf133d48b52..6ec010290493 100644 --- a/html/includes/functions.inc.php +++ b/html/includes/functions.inc.php @@ -72,6 +72,9 @@ function nicecase($item) case 'nfs-v3-stats': return 'NFS v3 Stats'; + + case 'nfs-server': + return 'NFS Server'; case 'ntp': return 'NTP'; diff --git a/html/includes/graphs/application/nfs-server_io.inc.php b/html/includes/graphs/application/nfs-server_io.inc.php new file mode 100644 index 000000000000..d2a0549ded1b --- /dev/null +++ b/html/includes/graphs/application/nfs-server_io.inc.php @@ -0,0 +1,33 @@ + array('descr' => 'read','colour' => '2B9220',), + 'io_write' => array('descr' => 'write','colour' => 'B0262D',), +); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $var) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $var['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $var['colour']; + $i++; + } +} else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_v3_multiline.inc.php'; diff --git a/html/includes/graphs/application/nfs-server_net.inc.php b/html/includes/graphs/application/nfs-server_net.inc.php new file mode 100644 index 000000000000..6c93b9c6cf57 --- /dev/null +++ b/html/includes/graphs/application/nfs-server_net.inc.php @@ -0,0 +1,35 @@ + array('descr' => 'total','colour' => '000000',), this is udp+tcp + 'net_udp' => array('descr' => 'udp','colour' => 'AA3F39',), + 'net_tcp' => array('descr' => 'tcp','colour' => '2C8437',), + // 'net_tcpconn' => array('descr' => 'tcp conn','colour' => '576996',), this is tcp connections +); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $var) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $var['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $var['colour']; + $i++; + } +} else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_v3_multiline.inc.php'; diff --git a/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php b/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php new file mode 100644 index 000000000000..1cc5560f78a8 --- /dev/null +++ b/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php @@ -0,0 +1,14 @@ + array('descr' => '0%-10%'), + 'ra_range02' => array('descr' => '10%-20%'), + 'ra_range03' => array('descr' => '20%-30%'), + 'ra_range04' => array('descr' => '30%-40%'), + 'ra_range05' => array('descr' => '40%-50%'), + 'ra_range06' => array('descr' => '50%-60%'), + 'ra_range07' => array('descr' => '60%-70%'), + 'ra_range08' => array('descr' => '70%-80%'), + 'ra_range09' => array('descr' => '80%-90%'), + 'ra_range10' => array('descr' => '90%-100%'), + 'ra_notfound' => array('descr' => 'not found'), +); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $var) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $var['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $config['graph_colours'][$colours][$i]; + $i++; + } +} else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_v3_multiline.inc.php'; diff --git a/html/includes/graphs/application/nfs-server_rc.inc.php b/html/includes/graphs/application/nfs-server_rc.inc.php new file mode 100644 index 000000000000..3634a25eb9e3 --- /dev/null +++ b/html/includes/graphs/application/nfs-server_rc.inc.php @@ -0,0 +1,33 @@ + array('descr' => 'hits','colour' => 'B0262D'), // this is bad : retransmitting (red) + 'rc_misses' => array('descr' => 'misses','colour' => 'B36326'), // requires caching + 'rc_nocache' => array('descr' => 'nocache','colour' => '2B9220'), // no caching needed +); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $var) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $var['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $var['colour']; + $i++; + } +} else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_v3_multiline.inc.php'; diff --git a/html/includes/graphs/application/nfs-server_rpc.inc.php b/html/includes/graphs/application/nfs-server_rpc.inc.php new file mode 100644 index 000000000000..e2ccc1451e32 --- /dev/null +++ b/html/includes/graphs/application/nfs-server_rpc.inc.php @@ -0,0 +1,36 @@ + array('descr' => 'calls','colour' => '2C8437',), // green : good + //'rpc_badcalls' => array('descr' => 'bad calls','colour' => '600604',), # this is a sum of nbadfmt, badauth and badclnt + 'rpc_badfmt' => array('descr' => 'bad fmt','colour' => 'E6A4A5',), // pink + 'rpc_badauth' => array('descr' => 'bad auth','colour' => 'B2C8D9',), // blue + 'rpc_badclnt' => array('descr' => 'bad clnt','colour' => 'BEA37A',), // brown +); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $var) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $var['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $var['colour']; + $i++; + } +} else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_v3_multiline.inc.php'; diff --git a/html/includes/graphs/application/nfs-server_stats.inc.php b/html/includes/graphs/application/nfs-server_stats.inc.php new file mode 100644 index 000000000000..826b65153909 --- /dev/null +++ b/html/includes/graphs/application/nfs-server_stats.inc.php @@ -0,0 +1,53 @@ + array('descr' => 'Null'), + 'proc3_getattr' => array('descr' => 'Get attributes'), + 'proc3_setattr' => array('descr' => 'Set attributes'), + 'proc3_lookup' => array('descr' => 'Lookup'), + 'proc3_access' => array('descr' => 'Access'), + 'proc3_read' => array('descr' => 'Read'), + 'proc3_write' => array('descr' => 'Write'), + 'proc3_create' => array('descr' => 'Create'), + 'proc3_mkdir' => array('descr' => 'Make dir'), + 'proc3_mknod' => array('descr' => 'Make nod'), + 'proc3_link' => array('descr' => 'Link'), + 'proc3_remove' => array('descr' => 'Remove'), + 'proc3_rmdir' => array('descr' => 'Remove dir'), + 'proc3_rename' => array('descr' => 'Rename'), + 'proc3_readlink' => array('descr' => 'Read link'), + 'proc3_readdir' => array('descr' => 'Read dir'), + 'proc3_symlink' => array('descr' => 'Symlink'), + 'proc3_readdirplus' => array('descr' => 'Read dir plus'), + 'proc3_fsstat' => array('descr' => 'FS stat'), + 'proc3_fsinfo' => array('descr' => 'FS info'), + 'proc3_pathconf' => array('descr' => 'Pathconf'), + 'proc3_commit' => array('descr' => 'Commit'), + ); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $var) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $var['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $config['graph_colours'][$colours][$i]; + $i++; + } +} else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_v3_multiline.inc.php'; diff --git a/html/includes/graphs/application/nfs-server_stats_v2.inc.php b/html/includes/graphs/application/nfs-server_stats_v2.inc.php new file mode 100644 index 000000000000..f85796a44d25 --- /dev/null +++ b/html/includes/graphs/application/nfs-server_stats_v2.inc.php @@ -0,0 +1,49 @@ + array('descr' => 'Null'), + 'proc2_getattr' => array('descr' => 'Get attributes'), + 'proc2_setattr' => array('descr' => 'Set attributes'), + 'proc2_root' => array('descr' => 'Root'), + 'proc2_lookup' => array('descr' => 'Lookup'), + 'proc2_readlink' => array('descr' => 'ReadLink'), + 'proc2_read' => array('descr' => 'Read'), + 'proc2_wrcache' => array('descr' => 'Wrcache'), + 'proc2_write' => array('descr' => 'Write'), + 'proc2_create' => array('descr' => 'Create'), + 'proc2_remove' => array('descr' => 'Remove'), + 'proc2_rename' => array('descr' => 'Rename'), + 'proc2_link' => array('descr' => 'Link'), + 'proc2_symlink' => array('descr' => 'Symlink'), + 'proc2_mkdir' => array('descr' => 'Mkdir'), + 'proc2_rmdir' => array('descr' => 'Rmdir'), + 'proc2_readdir' => array('descr' => 'Readdir'), + 'proc2_fsstat' => array('descr' => 'fsstat') + ); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $var) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $var['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $config['graph_colours']['default'][$i]; + $i++; + } +} else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_v3_multiline.inc.php'; diff --git a/html/includes/graphs/application/nfs-server_stats_v4.inc.php b/html/includes/graphs/application/nfs-server_stats_v4.inc.php new file mode 100644 index 000000000000..fb2d98105f59 --- /dev/null +++ b/html/includes/graphs/application/nfs-server_stats_v4.inc.php @@ -0,0 +1,33 @@ + array('descr' => 'Null','colour' => '630606',), + 'proc4_compound' => array('descr' => 'Compound','colour' => '50C150',) + ); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $var) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $var['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $var['colour']; + $i++; + } +} else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_v3_multiline.inc.php'; diff --git a/html/includes/graphs/application/nfs-server_v4ops.inc.php b/html/includes/graphs/application/nfs-server_v4ops.inc.php new file mode 100644 index 000000000000..a18a62f5a4d6 --- /dev/null +++ b/html/includes/graphs/application/nfs-server_v4ops.inc.php @@ -0,0 +1,85 @@ + array('descr' => 'access'), + 'v4ops_close' => array('descr' => 'close'), + 'v4ops_commit' => array('descr' => 'commit'), + 'v4ops_create' => array('descr' => 'create'), + 'v4ops_delegpurge' => array('descr' => 'delegpurge'), + 'v4ops_delegreturn' => array('descr' => 'delegreturn'), + 'v4ops_getattr' => array('descr' => 'getattr'), + 'v4ops_getfh' => array('descr' => 'getfh'), + 'v4ops_link' => array('descr' => 'link'), + 'v4ops_lock' => array('descr' => 'lock'), + 'v4ops_lockt' => array('descr' => 'lockt'), + 'v4ops_locku' => array('descr' => 'locku'), + 'v4ops_lookup' => array('descr' => 'lookup'), + 'v4ops_lookup_root' => array('descr' => 'lookup_root'), + 'v4ops_nverify' => array('descr' => 'nverify'), + 'v4ops_open' => array('descr' => 'opsen'), + 'v4ops_openattr' => array('descr' => 'opsenattr'), + 'v4ops_open_confirm' => array('descr' => 'opsen_confirm'), + 'v4ops_open_downgrad' => array('descr' => 'opsen_downgrade'), + 'v4ops_putfh' => array('descr' => 'putfh'), + 'v4ops_putpubfh' => array('descr' => 'putpubfh'), + 'v4ops_putrootfh' => array('descr' => 'putrootfh'), + 'v4ops_read' => array('descr' => 'read'), + 'v4ops_readdir' => array('descr' => 'readdir'), + 'v4ops_readlink' => array('descr' => 'readlink'), + 'v4ops_remove' => array('descr' => 'remove'), + 'v4ops_rename' => array('descr' => 'rename'), + 'v4ops_renew' => array('descr' => 'renew'), + 'v4ops_savefh' => array('descr' => 'savefh'), + 'v4ops_secinfo' => array('descr' => 'secinfo'), + 'v4ops_setattr' => array('descr' => 'setattr'), + 'v4ops_setclientid' => array('descr' => 'setclientid'), + 'v4ops_setclientid_c' => array('descr' => 'setclientid confirm'), + 'v4ops_verify' => array('descr' => 'verify'), + 'v4ops_write' => array('descr' => 'write'), + 'v4ops_release_locko' => array('descr' => 'release lockowner'), + 'v4ops_backchannel_c' => array('descr' => 'backchannel ctl'), + 'v4ops_bind_conn_to_' => array('descr' => 'bind conn to session'), + 'v4ops_exchange_id' => array('descr' => 'exchange id'), + 'v4ops_create_sessio' => array('descr' => 'create session'), + 'v4ops_destroy_sessi' => array('descr' => 'destroy session'), + 'v4ops_free_stateid' => array('descr' => 'free stateid'), + 'v4ops_get_dir_deleg' => array('descr' => 'get dir delegation'), + 'v4ops_getdeviceinfo' => array('descr' => 'getdeviceinfo'), + 'v4ops_getdevicelist' => array('descr' => 'getdevicelist'), + 'v4ops_layoutcommit' => array('descr' => 'layoutcommit'), + 'v4ops_layoutget' => array('descr' => 'layoutget'), + 'v4ops_secinfo_no_na' => array('descr' => 'secinfo no name'), + 'v4ops_sequence' => array('descr' => 'sequence'), + 'v4ops_set_ssv' => array('descr' => 'set ssv'), + 'v4ops_test_stateid' => array('descr' => 'test stateid'), + 'v4ops_want_delegati' => array('descr' => 'want delegation'), + 'v4ops_destroy_clien' => array('descr' => 'destroy clientid'), + 'v4ops_reclaim_compl' => array('descr' => 'reclaim complete'), + ); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $var) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $var['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $config['graph_colours']['manycolours'][$i]; + $i++; + } +} else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_v3_multiline.inc.php'; diff --git a/html/pages/apps.inc.php b/html/pages/apps.inc.php index b08754cde904..ba2a0a0250aa 100644 --- a/html/pages/apps.inc.php +++ b/html/pages/apps.inc.php @@ -109,6 +109,20 @@ 'rpc', ); +$graphs['nfs-server'] = array( + 'stats_v2', + 'stats', + 'stats_v4', + 'v4ops', + 'io', + 'fh', + 'rc', + 'ra', + 'net', + 'net_tcp_conns', + 'rpc', +); + $graphs['os-updates'] = array( 'packages', ); diff --git a/html/pages/device/apps/nfs-server.inc.php b/html/pages/device/apps/nfs-server.inc.php new file mode 100644 index 000000000000..3df26c345f8e --- /dev/null +++ b/html/pages/device/apps/nfs-server.inc.php @@ -0,0 +1,37 @@ + 'NFS v2 Statistics', + 'nfs-server_stats' => 'NFS v3 Statistics', + 'nfs-server_stats_v4' => 'NFS v4 Statistics', + 'nfs-server_v4ops' => 'NFS v4ops Statistics', + 'nfs-server_io' => 'IO', + 'nfs-server_fh' => 'File handler', + 'nfs-server_rc' => 'Reply cache', + 'nfs-server_ra' => 'Read ahead cache', + 'nfs-server_net' => 'Network stats', + 'nfs-server_rpc' => 'RPC Stats', + +); + +foreach ($graphs as $key => $text) { + $graph_type = $key; + $graph_array['height'] = '100'; + $graph_array['width'] = '215'; + $graph_array['to'] = $config['time']['now']; + $graph_array['id'] = $app['app_id']; + $graph_array['type'] = 'application_'.$key; + + echo '
+
+

'.$text.'

+
+
+
'; + include 'includes/print-graphrow.inc.php'; + echo '
'; + echo '
'; + echo '
'; +} diff --git a/includes/polling/applications/nfs-server.php b/includes/polling/applications/nfs-server.php new file mode 100644 index 000000000000..3ad65b7997a8 --- /dev/null +++ b/includes/polling/applications/nfs-server.php @@ -0,0 +1,287 @@ +addDataset('rc_hits', 'GAUGE', 0) + ->addDataset('rc_misses', 'GAUGE', 0) + ->addDataset('rc_nocache', 'GAUGE', 0) + ->addDataset('fh_lookup', 'GAUGE', 0) + ->addDataset('fh_anon', 'GAUGE', 0) + ->addDataset('fh_ncachedir', 'GAUGE', 0) + ->addDataset('fh_ncachenondir', 'GAUGE', 0) + ->addDataset('fh_stale', 'GAUGE', 0) + ->addDataset('io_read', 'GAUGE', 0) + ->addDataset('io_write', 'GAUGE', 0) + ->addDataset('ra_range01', 'GAUGE', 0) + ->addDataset('ra_range02', 'GAUGE', 0) + ->addDataset('ra_range03', 'GAUGE', 0) + ->addDataset('ra_range04', 'GAUGE', 0) + ->addDataset('ra_range05', 'GAUGE', 0) + ->addDataset('ra_range06', 'GAUGE', 0) + ->addDataset('ra_range07', 'GAUGE', 0) + ->addDataset('ra_range08', 'GAUGE', 0) + ->addDataset('ra_range09', 'GAUGE', 0) + ->addDataset('ra_range10', 'GAUGE', 0) + ->addDataset('ra_notfound', 'GAUGE', 0) + ->addDataset('net_all', 'GAUGE', 0) + ->addDataset('net_udp', 'GAUGE', 0) + ->addDataset('net_tcp', 'GAUGE', 0) + ->addDataset('net_tcpconn', 'GAUGE', 0) + ->addDataset('rpc_calls', 'GAUGE', 0) + ->addDataset('rpc_badfmt', 'GAUGE', 0) + ->addDataset('rpc_badauth', 'GAUGE', 0) + ->addDataset('rpc_badclnt', 'GAUGE', 0) + ->addDataset('proc2_null', 'GAUGE', 0) + ->addDataset('proc2_getattr', 'GAUGE', 0) + ->addDataset('proc2_setattr', 'GAUGE', 0) + ->addDataset('proc2_root', 'GAUGE', 0) + ->addDataset('proc2_lookup', 'GAUGE', 0) + ->addDataset('proc2_readlink', 'GAUGE', 0) + ->addDataset('proc2_read', 'GAUGE', 0) + ->addDataset('proc2_wrcache', 'GAUGE', 0) + ->addDataset('proc2_write', 'GAUGE', 0) + ->addDataset('proc2_create', 'GAUGE', 0) + ->addDataset('proc2_remove', 'GAUGE', 0) + ->addDataset('proc2_rename', 'GAUGE', 0) + ->addDataset('proc2_link', 'GAUGE', 0) + ->addDataset('proc2_symlink', 'GAUGE', 0) + ->addDataset('proc2_mkdir', 'GAUGE', 0) + ->addDataset('proc2_rmdir', 'GAUGE', 0) + ->addDataset('proc2_readdir', 'GAUGE', 0) + ->addDataset('proc2_fsstat', 'GAUGE', 0) + ->addDataset('proc3_null', 'GAUGE', 0) + ->addDataset('proc3_getattr', 'GAUGE', 0) + ->addDataset('proc3_setattr', 'GAUGE', 0) + ->addDataset('proc3_lookup', 'GAUGE', 0) + ->addDataset('proc3_access', 'GAUGE', 0) + ->addDataset('proc3_readlink', 'GAUGE', 0) + ->addDataset('proc3_read', 'GAUGE', 0) + ->addDataset('proc3_write', 'GAUGE', 0) + ->addDataset('proc3_create', 'GAUGE', 0) + ->addDataset('proc3_mkdir', 'GAUGE', 0) + ->addDataset('proc3_symlink', 'GAUGE', 0) + ->addDataset('proc3_mknod', 'GAUGE', 0) + ->addDataset('proc3_remove', 'GAUGE', 0) + ->addDataset('proc3_rmdir', 'GAUGE', 0) + ->addDataset('proc3_rename', 'GAUGE', 0) + ->addDataset('proc3_link', 'GAUGE', 0) + ->addDataset('proc3_readdir', 'GAUGE', 0) + ->addDataset('proc3_readdirplus', 'GAUGE', 0) + ->addDataset('proc3_fsstat', 'GAUGE', 0) + ->addDataset('proc3_fsinfo', 'GAUGE', 0) + ->addDataset('proc3_pathconf', 'GAUGE', 0) + ->addDataset('proc3_commit', 'GAUGE', 0) + ->addDataset('proc4_null', 'GAUGE', 0) + ->addDataset('proc4_compound', 'GAUGE', 0) + ->addDataset('v4ops_access', 'GAUGE', 0) + ->addDataset('v4ops_close', 'GAUGE', 0) + ->addDataset('v4ops_commit', 'GAUGE', 0) + ->addDataset('v4ops_create', 'GAUGE', 0) + ->addDataset('v4ops_delegpurge', 'GAUGE', 0) + ->addDataset('v4ops_delegreturn', 'GAUGE', 0) + ->addDataset('v4ops_getattr', 'GAUGE', 0) + ->addDataset('v4ops_getfh', 'GAUGE', 0) + ->addDataset('v4ops_link', 'GAUGE', 0) + ->addDataset('v4ops_lock', 'GAUGE', 0) + ->addDataset('v4ops_lockt', 'GAUGE', 0) + ->addDataset('v4ops_locku', 'GAUGE', 0) + ->addDataset('v4ops_lookup', 'GAUGE', 0) + ->addDataset('v4ops_lookup_root', 'GAUGE', 0) + ->addDataset('v4ops_nverify', 'GAUGE', 0) + ->addDataset('v4ops_open', 'GAUGE', 0) + ->addDataset('v4ops_openattr', 'GAUGE', 0) + ->addDataset('v4ops_open_confirm', 'GAUGE', 0) + ->addDataset('v4ops_open_downgrad', 'GAUGE', 0) + ->addDataset('v4ops_putfh', 'GAUGE', 0) + ->addDataset('v4ops_putpubfh', 'GAUGE', 0) + ->addDataset('v4ops_putrootfh', 'GAUGE', 0) + ->addDataset('v4ops_read', 'GAUGE', 0) + ->addDataset('v4ops_readdir', 'GAUGE', 0) + ->addDataset('v4ops_readlink', 'GAUGE', 0) + ->addDataset('v4ops_remove', 'GAUGE', 0) + ->addDataset('v4ops_rename', 'GAUGE', 0) + ->addDataset('v4ops_renew', 'GAUGE', 0) + ->addDataset('v4ops_restorefh', 'GAUGE', 0) + ->addDataset('v4ops_savefh', 'GAUGE', 0) + ->addDataset('v4ops_secinfo', 'GAUGE', 0) + ->addDataset('v4ops_setattr', 'GAUGE', 0) + ->addDataset('v4ops_setclientid', 'GAUGE', 0) + ->addDataset('v4ops_setclientid_c', 'GAUGE', 0) + ->addDataset('v4ops_verify', 'GAUGE', 0) + ->addDataset('v4ops_write', 'GAUGE', 0) + ->addDataset('v4ops_release_locko', 'GAUGE', 0) + ->addDataset('v4ops_backchannel_c', 'GAUGE', 0) + ->addDataset('v4ops_bind_conn_to_', 'GAUGE', 0) + ->addDataset('v4ops_exchange_id', 'GAUGE', 0) + ->addDataset('v4ops_create_sessio', 'GAUGE', 0) + ->addDataset('v4ops_destroy_sessi', 'GAUGE', 0) + ->addDataset('v4ops_free_stateid', 'GAUGE', 0) + ->addDataset('v4ops_get_dir_deleg', 'GAUGE', 0) + ->addDataset('v4ops_getdeviceinfo', 'GAUGE', 0) + ->addDataset('v4ops_getdevicelist', 'GAUGE', 0) + ->addDataset('v4ops_layoutcommit', 'GAUGE', 0) + ->addDataset('v4ops_layoutget', 'GAUGE', 0) + ->addDataset('v4ops_secinfo_no_na', 'GAUGE', 0) + ->addDataset('v4ops_sequence', 'GAUGE', 0) + ->addDataset('v4ops_set_ssv', 'GAUGE', 0) + ->addDataset('v4ops_test_stateid', 'GAUGE', 0) + ->addDataset('v4ops_want_delegati', 'GAUGE', 0) + ->addDataset('v4ops_destroy_clien', 'GAUGE', 0) + ->addDataset('v4ops_reclaim_compl', 'GAUGE', 0) +; + +$data = explode("|", base64_decode($nfsstats)); + +$fields = array( + 'rc_hits' => $data[0], + 'rc_misses' => $data[1], + 'rc_nocache' => $data[2], + + 'fh_lookup' => $data[3], + 'fh_anon' => $data[4], + 'fh_ncachedir' => $data[5], + 'fh_ncachenondir' => $data[6], + 'fh_stale' => $data[7], + + 'io_read' => $data[8], + 'io_write' => $data[9], + + 'ra_range01' => $data[10], + 'ra_range02' => $data[11], + 'ra_range03' => $data[12], + 'ra_range04' => $data[13], + 'ra_range05' => $data[14], + 'ra_range06' => $data[15], + 'ra_range07' => $data[16], + 'ra_range08' => $data[17], + 'ra_range09' => $data[18], + 'ra_range10' => $data[19], + 'ra_notfound' => $data[20], + + 'net_all' => $data[21], + 'net_udp' => $data[22], + 'net_tcp' => $data[23], + 'net_tcpconn' => $data[24], + + 'rpc_calls' => $data[25], + 'rpc_badfmt' => $data[26], + 'rpc_badauth' => $data[27], + 'rpc_badclnt' => $data[28], + + 'proc2_null' => $data[29], + 'proc2_getattr' => $data[30], + 'proc2_setattr' => $data[31], + 'proc2_root' => $data[32], + 'proc2_lookup' => $data[33], + 'proc2_readlink' => $data[34], + 'proc2_read' => $data[35], + 'proc2_wrcache' => $data[36], + 'proc2_write' => $data[37], + 'proc2_create' => $data[38], + 'proc2_remove' => $data[39], + 'proc2_rename' => $data[40], + 'proc2_link' => $data[41], + 'proc2_symlink' => $data[42], + 'proc2_mkdir' => $data[43], + 'proc2_rmdir' => $data[44], + 'proc2_readdir' => $data[45], + 'proc2_fsstat' => $data[46], + + 'proc3_null' => $data[47], + 'proc3_getattr' => $data[48], + 'proc3_setattr' => $data[49], + 'proc3_lookup' => $data[50], + 'proc3_access' => $data[51], + 'proc3_readlink' => $data[52], + 'proc3_read' => $data[53], + 'proc3_write' => $data[54], + 'proc3_create' => $data[55], + 'proc3_mkdir' => $data[56], + 'proc3_symlink' => $data[57], + 'proc3_mknod' => $data[58], + 'proc3_remove' => $data[59], + 'proc3_rmdir' => $data[60], + 'proc3_rename' => $data[61], + 'proc3_link' => $data[62], + 'proc3_readdir' => $data[63], + 'proc3_readdirplus' => $data[64], + 'proc3_fsstat' => $data[65], + 'proc3_fsinfo' => $data[66], + 'proc3_pathconf' => $data[67], + 'proc3_commit' => $data[68], + + 'proc4_null' => $data[69], + 'proc4_compound' => $data[70], + + 'v4ops_access' => $data[71], + 'v4ops_close' => $data[72], + 'v4ops_commit' => $data[73], + 'v4ops_create' => $data[74], + 'v4ops_delegpurge' => $data[75], + 'v4ops_delegreturn' => $data[76], + 'v4ops_getattr' => $data[77], + 'v4ops_getfh' => $data[78], + 'v4ops_link' => $data[79], + 'v4ops_lock' => $data[80], + 'v4ops_lockt' => $data[81], + 'v4ops_locku' => $data[82], + 'v4ops_lookup' => $data[83], + 'v4ops_lookup_root' => $data[84], + 'v4ops_nverify' => $data[85], + 'v4ops_opsen' => $data[86], + 'v4ops_opsenattr' => $data[87], + 'v4ops_opsen_confirm' => $data[88], + 'v4ops_opsen_downgrade' => $data[89], + 'v4ops_putfh' => $data[90], + 'v4ops_putpubfh' => $data[91], + 'v4ops_putrootfh' => $data[92], + 'v4ops_read' => $data[93], + 'v4ops_readdir' => $data[94], + 'v4ops_readlink' => $data[95], + 'v4ops_remove' => $data[96], + 'v4ops_rename' => $data[97], + 'v4ops_renew' => $data[98], + 'v4ops_restorefh' => $data[99], + 'v4ops_savefh' => $data[100], + 'v4ops_secinfo' => $data[101], + 'v4ops_setattr' => $data[102], + 'v4ops_setclientid' => $data[103], + 'v4ops_setclientid_confirm' => $data[104], + 'v4ops_verify' => $data[105], + 'v4ops_write' => $data[106], + 'v4ops_release_lockowner' => $data[107], + 'v4ops_backchannel_ctl' => $data[108], + 'v4ops_bind_conn_to_session' => $data[109], + 'v4ops_exchange_id' => $data[110], + 'v4ops_create_session' => $data[111], + 'v4ops_destroy_session' => $data[112], + 'v4ops_free_stateid' => $data[113], + 'v4ops_get_dir_delegation' => $data[114], + 'v4ops_getdeviceinfo' => $data[115], + 'v4ops_getdevicelist' => $data[116], + 'v4ops_layoutcommit' => $data[117], + 'v4ops_layoutget' => $data[118], + 'v4ops_secinfo_no_name' => $data[119], + 'v4ops_sequence' => $data[120], + 'v4ops_set_ssv' => $data[121], + 'v4ops_test_stateid' => $data[122], + 'v4ops_want_delegation' => $data[123], + 'v4ops_destroy_clientid' => $data[124], + 'v4ops_reclaim_complete' => $data[125] +); + +$tags = compact('name', 'app_id', 'rrd_name', 'rrd_def'); +data_update($device, 'app', $tags, $fields); + +unset($nfsstats, $rrd_name, $rrd_def, $data, $fields, $tags); \ No newline at end of file diff --git a/scripts/agent-local/nfs-server.sh b/scripts/agent-local/nfs-server.sh new file mode 100644 index 000000000000..474e4982b923 --- /dev/null +++ b/scripts/agent-local/nfs-server.sh @@ -0,0 +1,88 @@ +#!/bin/bash +# +# collect nfs server stats +# to enable, add this to snmpd.conf : +# extend nfs-server /path/to/this/file/nfs-server.sh + +# setting +nfsd="/proc/net/rpc/nfsd" +# used to store the old values +store="/tmp/librenms_nfsd_server" +# used to store the current values +tmp="/tmp/librenms_nfsd_server.tmp" + +# check if there is a server running here +if [ ! -f $nfsd ]; then + echo "0" + exit +fi + +# check if this is init run +if [ ! -f $store ]; then + echo "warning: could not find old file, its fine if this is inital run." +fi + +# parse the nfsd file +# reply cache : hits, misses, nocache +cat $nfsd | sed -n 1p | awk '{print $2,$3,$4}' | tr " " "\n" > $tmp + +# file handles : lookup, anon, ncachedir, ncachenondir, stale +cat $nfsd | sed -n 2p | awk '{print $2,$3,$4,$5,$6}' | tr " " "\n" >> $tmp + +# io : read, write +cat $nfsd | sed -n 3p | awk '{print $2,$3}' | tr " " "\n" >> $tmp + +# read ahead cache : 0-10%, 10-20%, ... 90-100%, not-found +cat $nfsd | sed -n 5p | awk '{print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13}' | tr " " "\n" >> $tmp + +# net : all_reads, udp, tcp, tcp_conn +cat $nfsd | sed -n 6p | awk '{print $2,$3,$4,$5}' | tr " " "\n" >> $tmp + +# rpc : calls, badfmt, badauth, badclnt +cat $nfsd | sed -n 7p | awk '{print $2,$4,$5,$6}' | tr " " "\n" >> $tmp + +# nfsv2 : null, getattr, setattr, root, lookup, readlink, read, wrcache, write, create, remove, rename, link, symlink, mkdir, rmdir, readdir, fsstat +cat $nfsd | sed -n 8p | awk '{print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20}' | tr " " "\n" >> $tmp + +# nfsv3 : null, getattr, setattr, lookup, access, readlink, read, write, create, mkdir, symlink, mknod, remove, rmdir, rename, link, readdir, readdirplus, fsstat, fsinfo, pathconf, commit +cat $nfsd | sed -n 9p | awk '{print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24}' | tr " " "\n" >> $tmp + +# nfsv4 : null, compound +cat $nfsd | sed -n 10p | awk '{print $3,$4}' | tr " " "\n" >> $tmp + +# nfsv4ops +# OP_ACCESS, OP_CLOSE, OP_COMMIT, OP_CREATE, +# OP_DELEGPURGE, OP_DELEGRETURN, OP_GETATTR, OP_GETFH, +# OP_LINK, OP_LOCK, OP_LOCKT, OP_LOCKU, +# OP_LOOKUP, OP_LOOKUP_ROOT, OP_NVERIFY, OP_OPEN, +# OP_OPENATTR, OP_OPEN_CONFIRM, OP_OPEN_DOWNGRADE, OP_PUTFH, +# OP_PUTPUBFH, OP_PUTROOTFH, OP_READ, OP_READDIR, +# OP_READLINK, OP_REMOVE, OP_RENAME, OP_RENEW, +# OP_RESTOREFH, OP_SAVEFH, OP_SECINFO, OP_SETATTR, +# OP_SETCLIENTID, OP_SETCLIENTID_CONFIRM, OP_VERIFY, OP_WRITE, +# OP_RELEASE_LOCKOWNER, OP_BACKCHANNEL_CTL, OP_BIND_CONN_TO_SESSION, OP_EXCHANGE_ID, +# OP_CREATE_SESSION, OP_DESTROY_SESSION, OP_FREE_STATEID, OP_GET_DIR_DELEGATION, +# OP_GETDEVICEINFO, OP_GETDEVICELIST, OP_LAYOUTCOMMIT, OP_LAYOUTGET, +# OP_SECINFO_NO_NAME, OP_SEQUENCE, OP_SET_SSV, OP_TEST_STATEID, +# OP_WANT_DELEGATION, OP_DESTROY_CLIENTID, OP_RECLAIM_COMPLETE +cat $nfsd | sed -n 11p | awk '{print $6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$60}' | tr " " "\n" >> $tmp + +# combine and subtract each line +output="" +while read a b ; do + # check if its empty + if [ -z "$a" ]; then + output+="0|" + else + output+="$(($a-$b))|" + fi +done < <(paste $tmp $store) + +# copy the tmp over the new +cp -f $tmp $store + +# clean up the tmp +rm $tmp + +# base64 is required otherwise the string overflows +echo $output | base64 From 9891bf1c1d3285e8e404c9c660be4cd8fefc34e5 Mon Sep 17 00:00:00 2001 From: svennd Date: Sun, 2 Apr 2017 10:22:22 +0200 Subject: [PATCH 02/16] some php errors --- includes/polling/applications/nfs-server.php | 498 +++++++++---------- 1 file changed, 231 insertions(+), 267 deletions(-) diff --git a/includes/polling/applications/nfs-server.php b/includes/polling/applications/nfs-server.php index 3ad65b7997a8..8f1935532547 100644 --- a/includes/polling/applications/nfs-server.php +++ b/includes/polling/applications/nfs-server.php @@ -1,9 +1,8 @@ addDataset('rc_hits', 'GAUGE', 0) - ->addDataset('rc_misses', 'GAUGE', 0) - ->addDataset('rc_nocache', 'GAUGE', 0) - ->addDataset('fh_lookup', 'GAUGE', 0) - ->addDataset('fh_anon', 'GAUGE', 0) - ->addDataset('fh_ncachedir', 'GAUGE', 0) - ->addDataset('fh_ncachenondir', 'GAUGE', 0) - ->addDataset('fh_stale', 'GAUGE', 0) - ->addDataset('io_read', 'GAUGE', 0) - ->addDataset('io_write', 'GAUGE', 0) - ->addDataset('ra_range01', 'GAUGE', 0) - ->addDataset('ra_range02', 'GAUGE', 0) - ->addDataset('ra_range03', 'GAUGE', 0) - ->addDataset('ra_range04', 'GAUGE', 0) - ->addDataset('ra_range05', 'GAUGE', 0) - ->addDataset('ra_range06', 'GAUGE', 0) - ->addDataset('ra_range07', 'GAUGE', 0) - ->addDataset('ra_range08', 'GAUGE', 0) - ->addDataset('ra_range09', 'GAUGE', 0) - ->addDataset('ra_range10', 'GAUGE', 0) - ->addDataset('ra_notfound', 'GAUGE', 0) - ->addDataset('net_all', 'GAUGE', 0) - ->addDataset('net_udp', 'GAUGE', 0) - ->addDataset('net_tcp', 'GAUGE', 0) - ->addDataset('net_tcpconn', 'GAUGE', 0) - ->addDataset('rpc_calls', 'GAUGE', 0) - ->addDataset('rpc_badfmt', 'GAUGE', 0) - ->addDataset('rpc_badauth', 'GAUGE', 0) - ->addDataset('rpc_badclnt', 'GAUGE', 0) - ->addDataset('proc2_null', 'GAUGE', 0) - ->addDataset('proc2_getattr', 'GAUGE', 0) - ->addDataset('proc2_setattr', 'GAUGE', 0) - ->addDataset('proc2_root', 'GAUGE', 0) - ->addDataset('proc2_lookup', 'GAUGE', 0) - ->addDataset('proc2_readlink', 'GAUGE', 0) - ->addDataset('proc2_read', 'GAUGE', 0) - ->addDataset('proc2_wrcache', 'GAUGE', 0) - ->addDataset('proc2_write', 'GAUGE', 0) - ->addDataset('proc2_create', 'GAUGE', 0) - ->addDataset('proc2_remove', 'GAUGE', 0) - ->addDataset('proc2_rename', 'GAUGE', 0) - ->addDataset('proc2_link', 'GAUGE', 0) - ->addDataset('proc2_symlink', 'GAUGE', 0) - ->addDataset('proc2_mkdir', 'GAUGE', 0) - ->addDataset('proc2_rmdir', 'GAUGE', 0) - ->addDataset('proc2_readdir', 'GAUGE', 0) - ->addDataset('proc2_fsstat', 'GAUGE', 0) - ->addDataset('proc3_null', 'GAUGE', 0) - ->addDataset('proc3_getattr', 'GAUGE', 0) - ->addDataset('proc3_setattr', 'GAUGE', 0) - ->addDataset('proc3_lookup', 'GAUGE', 0) - ->addDataset('proc3_access', 'GAUGE', 0) - ->addDataset('proc3_readlink', 'GAUGE', 0) - ->addDataset('proc3_read', 'GAUGE', 0) - ->addDataset('proc3_write', 'GAUGE', 0) - ->addDataset('proc3_create', 'GAUGE', 0) - ->addDataset('proc3_mkdir', 'GAUGE', 0) - ->addDataset('proc3_symlink', 'GAUGE', 0) - ->addDataset('proc3_mknod', 'GAUGE', 0) - ->addDataset('proc3_remove', 'GAUGE', 0) - ->addDataset('proc3_rmdir', 'GAUGE', 0) - ->addDataset('proc3_rename', 'GAUGE', 0) - ->addDataset('proc3_link', 'GAUGE', 0) - ->addDataset('proc3_readdir', 'GAUGE', 0) - ->addDataset('proc3_readdirplus', 'GAUGE', 0) - ->addDataset('proc3_fsstat', 'GAUGE', 0) - ->addDataset('proc3_fsinfo', 'GAUGE', 0) - ->addDataset('proc3_pathconf', 'GAUGE', 0) - ->addDataset('proc3_commit', 'GAUGE', 0) - ->addDataset('proc4_null', 'GAUGE', 0) - ->addDataset('proc4_compound', 'GAUGE', 0) - ->addDataset('v4ops_access', 'GAUGE', 0) - ->addDataset('v4ops_close', 'GAUGE', 0) - ->addDataset('v4ops_commit', 'GAUGE', 0) - ->addDataset('v4ops_create', 'GAUGE', 0) - ->addDataset('v4ops_delegpurge', 'GAUGE', 0) - ->addDataset('v4ops_delegreturn', 'GAUGE', 0) - ->addDataset('v4ops_getattr', 'GAUGE', 0) - ->addDataset('v4ops_getfh', 'GAUGE', 0) - ->addDataset('v4ops_link', 'GAUGE', 0) - ->addDataset('v4ops_lock', 'GAUGE', 0) - ->addDataset('v4ops_lockt', 'GAUGE', 0) - ->addDataset('v4ops_locku', 'GAUGE', 0) - ->addDataset('v4ops_lookup', 'GAUGE', 0) - ->addDataset('v4ops_lookup_root', 'GAUGE', 0) - ->addDataset('v4ops_nverify', 'GAUGE', 0) - ->addDataset('v4ops_open', 'GAUGE', 0) - ->addDataset('v4ops_openattr', 'GAUGE', 0) - ->addDataset('v4ops_open_confirm', 'GAUGE', 0) - ->addDataset('v4ops_open_downgrad', 'GAUGE', 0) - ->addDataset('v4ops_putfh', 'GAUGE', 0) - ->addDataset('v4ops_putpubfh', 'GAUGE', 0) - ->addDataset('v4ops_putrootfh', 'GAUGE', 0) - ->addDataset('v4ops_read', 'GAUGE', 0) - ->addDataset('v4ops_readdir', 'GAUGE', 0) - ->addDataset('v4ops_readlink', 'GAUGE', 0) - ->addDataset('v4ops_remove', 'GAUGE', 0) - ->addDataset('v4ops_rename', 'GAUGE', 0) - ->addDataset('v4ops_renew', 'GAUGE', 0) - ->addDataset('v4ops_restorefh', 'GAUGE', 0) - ->addDataset('v4ops_savefh', 'GAUGE', 0) - ->addDataset('v4ops_secinfo', 'GAUGE', 0) - ->addDataset('v4ops_setattr', 'GAUGE', 0) - ->addDataset('v4ops_setclientid', 'GAUGE', 0) - ->addDataset('v4ops_setclientid_c', 'GAUGE', 0) - ->addDataset('v4ops_verify', 'GAUGE', 0) - ->addDataset('v4ops_write', 'GAUGE', 0) - ->addDataset('v4ops_release_locko', 'GAUGE', 0) - ->addDataset('v4ops_backchannel_c', 'GAUGE', 0) - ->addDataset('v4ops_bind_conn_to_', 'GAUGE', 0) - ->addDataset('v4ops_exchange_id', 'GAUGE', 0) - ->addDataset('v4ops_create_sessio', 'GAUGE', 0) - ->addDataset('v4ops_destroy_sessi', 'GAUGE', 0) - ->addDataset('v4ops_free_stateid', 'GAUGE', 0) - ->addDataset('v4ops_get_dir_deleg', 'GAUGE', 0) - ->addDataset('v4ops_getdeviceinfo', 'GAUGE', 0) - ->addDataset('v4ops_getdevicelist', 'GAUGE', 0) - ->addDataset('v4ops_layoutcommit', 'GAUGE', 0) - ->addDataset('v4ops_layoutget', 'GAUGE', 0) - ->addDataset('v4ops_secinfo_no_na', 'GAUGE', 0) - ->addDataset('v4ops_sequence', 'GAUGE', 0) - ->addDataset('v4ops_set_ssv', 'GAUGE', 0) - ->addDataset('v4ops_test_stateid', 'GAUGE', 0) - ->addDataset('v4ops_want_delegati', 'GAUGE', 0) - ->addDataset('v4ops_destroy_clien', 'GAUGE', 0) - ->addDataset('v4ops_reclaim_compl', 'GAUGE', 0) + ->addDataset('rc_hits', 'COUNTER', 0, 125000000000) + ->addDataset('rc_misses', 'COUNTER', 0, 125000000000) + ->addDataset('rc_nocache', 'COUNTER', 0, 125000000000) + + ->addDataset('fh_lookup', 'COUNTER', 0, 125000000000) + ->addDataset('fh_anon', 'COUNTER', 0, 125000000000) + ->addDataset('fh_ncachedir', 'COUNTER', 0, 125000000000) + ->addDataset('fh_ncachenondir', 'COUNTER', 0, 125000000000) + ->addDataset('fh_stale', 'COUNTER', 0, 125000000000) + + ->addDataset('io_read', 'COUNTER', 0, 125000000000) + ->addDataset('io_write', 'COUNTER', 0, 125000000000) + + ->addDataset('th_threads', 'COUNTER', 0, 125000000000) + ->addDataset('th_fullcnt', 'COUNTER', 0, 125000000000) + ->addDataset('th_range01', 'GAUGE', 0, 125000000000) + ->addDataset('th_range02', 'GAUGE', 0, 125000000000) + ->addDataset('th_range03', 'GAUGE', 0, 125000000000) + ->addDataset('th_range04', 'GAUGE', 0, 125000000000) + ->addDataset('th_range05', 'GAUGE', 0, 125000000000) + ->addDataset('th_range06', 'GAUGE', 0, 125000000000) + ->addDataset('th_range07', 'GAUGE', 0, 125000000000) + ->addDataset('th_range08', 'GAUGE', 0, 125000000000) + ->addDataset('th_range09', 'GAUGE', 0, 125000000000) + ->addDataset('th_range10', 'GAUGE', 0, 125000000000) + + ->addDataset('ra_cachesize', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range01', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range02', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range03', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range04', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range05', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range06', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range07', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range08', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range09', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range10', 'GAUGE', 0, 125000000000) + ->addDataset('ra_notfound', 'GAUGE', 0, 125000000000) + + ->addDataset('net_cnt', 'COUNTER', 0, 125000000000) + ->addDataset('net_udp', 'COUNTER', 0, 125000000000) + ->addDataset('net_tcp', 'COUNTER', 0, 125000000000) + ->addDataset('net_tcpconn', 'COUNTER', 0, 125000000000) + + ->addDataset('rpc_calls', 'COUNTER', 0, 125000000000) + ->addDataset('rpc_badcount', 'COUNTER', 0, 125000000000) + ->addDataset('rpc_badfmt', 'COUNTER', 0, 125000000000) + ->addDataset('rpc_badauth', 'COUNTER', 0, 125000000000) + ->addDataset('rpc_badclnt', 'COUNTER', 0, 125000000000) + + ->addDataset('proc2_null', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_getattr', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_setattr', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_root', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_lookup', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_readlink', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_read', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_wrcache', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_write', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_create', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_remove', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_rename', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_link', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_symlink', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_mkdir', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_rmdir', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_readdir', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_fsstat', 'COUNTER', 0, 125000000000) + + ->addDataset('proc3_null', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_getattr', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_setattr', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_lookup', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_access', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_readlink', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_read', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_write', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_create', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_mkdir', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_symlink', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_mknod', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_remove', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_rmdir', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_rename', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_link', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_readdir', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_readdirplus', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_fsstat', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_fsinfo', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_pathconf', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_commit', 'COUNTER', 0, 125000000000) + + ->addDataset('proc4_null', 'COUNTER', 0, 125000000000) + ->addDataset('proc4_compound', 'COUNTER', 0, 125000000000) + + ->addDataset('v4ops_access', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_close', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_commit', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_create', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_delegpurge', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_delegreturn', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_getattr', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_getfh', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_link', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_lock', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_lockt', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_locku', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_lookup', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_lookup_root', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_nverify', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_open', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_openattr', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_open_confirm', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_open_downgrad', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_putfh', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_putpubfh', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_putrootfh', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_read', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_readdir', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_readlink', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_remove', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_rename', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_renew', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_restorefh', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_savefh', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_secinfo', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_setattr', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_setclientid', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_setclientid_c', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_verify', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_write', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_release_locko', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_backchannel_c', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_bind_conn_to_', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_exchange_id', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_create_sessio', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_destroy_sessi', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_free_stateid', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_get_dir_deleg', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_getdeviceinfo', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_getdevicelist', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_layoutcommit', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_layoutget', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_secinfo_no_na', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_sequence', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_set_ssv', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_test_stateid', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_want_delegati', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_destroy_clien', 'COUNTER', 0, 125000000000) + ->addDataset('v4ops_reclaim_compl', 'COUNTER', 0, 125000000000) ; -$data = explode("|", base64_decode($nfsstats)); - -$fields = array( - 'rc_hits' => $data[0], - 'rc_misses' => $data[1], - 'rc_nocache' => $data[2], - - 'fh_lookup' => $data[3], - 'fh_anon' => $data[4], - 'fh_ncachedir' => $data[5], - 'fh_ncachenondir' => $data[6], - 'fh_stale' => $data[7], - - 'io_read' => $data[8], - 'io_write' => $data[9], - - 'ra_range01' => $data[10], - 'ra_range02' => $data[11], - 'ra_range03' => $data[12], - 'ra_range04' => $data[13], - 'ra_range05' => $data[14], - 'ra_range06' => $data[15], - 'ra_range07' => $data[16], - 'ra_range08' => $data[17], - 'ra_range09' => $data[18], - 'ra_range10' => $data[19], - 'ra_notfound' => $data[20], - - 'net_all' => $data[21], - 'net_udp' => $data[22], - 'net_tcp' => $data[23], - 'net_tcpconn' => $data[24], - - 'rpc_calls' => $data[25], - 'rpc_badfmt' => $data[26], - 'rpc_badauth' => $data[27], - 'rpc_badclnt' => $data[28], - - 'proc2_null' => $data[29], - 'proc2_getattr' => $data[30], - 'proc2_setattr' => $data[31], - 'proc2_root' => $data[32], - 'proc2_lookup' => $data[33], - 'proc2_readlink' => $data[34], - 'proc2_read' => $data[35], - 'proc2_wrcache' => $data[36], - 'proc2_write' => $data[37], - 'proc2_create' => $data[38], - 'proc2_remove' => $data[39], - 'proc2_rename' => $data[40], - 'proc2_link' => $data[41], - 'proc2_symlink' => $data[42], - 'proc2_mkdir' => $data[43], - 'proc2_rmdir' => $data[44], - 'proc2_readdir' => $data[45], - 'proc2_fsstat' => $data[46], - - 'proc3_null' => $data[47], - 'proc3_getattr' => $data[48], - 'proc3_setattr' => $data[49], - 'proc3_lookup' => $data[50], - 'proc3_access' => $data[51], - 'proc3_readlink' => $data[52], - 'proc3_read' => $data[53], - 'proc3_write' => $data[54], - 'proc3_create' => $data[55], - 'proc3_mkdir' => $data[56], - 'proc3_symlink' => $data[57], - 'proc3_mknod' => $data[58], - 'proc3_remove' => $data[59], - 'proc3_rmdir' => $data[60], - 'proc3_rename' => $data[61], - 'proc3_link' => $data[62], - 'proc3_readdir' => $data[63], - 'proc3_readdirplus' => $data[64], - 'proc3_fsstat' => $data[65], - 'proc3_fsinfo' => $data[66], - 'proc3_pathconf' => $data[67], - 'proc3_commit' => $data[68], - - 'proc4_null' => $data[69], - 'proc4_compound' => $data[70], - - 'v4ops_access' => $data[71], - 'v4ops_close' => $data[72], - 'v4ops_commit' => $data[73], - 'v4ops_create' => $data[74], - 'v4ops_delegpurge' => $data[75], - 'v4ops_delegreturn' => $data[76], - 'v4ops_getattr' => $data[77], - 'v4ops_getfh' => $data[78], - 'v4ops_link' => $data[79], - 'v4ops_lock' => $data[80], - 'v4ops_lockt' => $data[81], - 'v4ops_locku' => $data[82], - 'v4ops_lookup' => $data[83], - 'v4ops_lookup_root' => $data[84], - 'v4ops_nverify' => $data[85], - 'v4ops_opsen' => $data[86], - 'v4ops_opsenattr' => $data[87], - 'v4ops_opsen_confirm' => $data[88], - 'v4ops_opsen_downgrade' => $data[89], - 'v4ops_putfh' => $data[90], - 'v4ops_putpubfh' => $data[91], - 'v4ops_putrootfh' => $data[92], - 'v4ops_read' => $data[93], - 'v4ops_readdir' => $data[94], - 'v4ops_readlink' => $data[95], - 'v4ops_remove' => $data[96], - 'v4ops_rename' => $data[97], - 'v4ops_renew' => $data[98], - 'v4ops_restorefh' => $data[99], - 'v4ops_savefh' => $data[100], - 'v4ops_secinfo' => $data[101], - 'v4ops_setattr' => $data[102], - 'v4ops_setclientid' => $data[103], - 'v4ops_setclientid_confirm' => $data[104], - 'v4ops_verify' => $data[105], - 'v4ops_write' => $data[106], - 'v4ops_release_lockowner' => $data[107], - 'v4ops_backchannel_ctl' => $data[108], - 'v4ops_bind_conn_to_session' => $data[109], - 'v4ops_exchange_id' => $data[110], - 'v4ops_create_session' => $data[111], - 'v4ops_destroy_session' => $data[112], - 'v4ops_free_stateid' => $data[113], - 'v4ops_get_dir_delegation' => $data[114], - 'v4ops_getdeviceinfo' => $data[115], - 'v4ops_getdevicelist' => $data[116], - 'v4ops_layoutcommit' => $data[117], - 'v4ops_layoutget' => $data[118], - 'v4ops_secinfo_no_name' => $data[119], - 'v4ops_sequence' => $data[120], - 'v4ops_set_ssv' => $data[121], - 'v4ops_test_stateid' => $data[122], - 'v4ops_want_delegation' => $data[123], - 'v4ops_destroy_clientid' => $data[124], - 'v4ops_reclaim_complete' => $data[125] -); +/* examples output : +rc 0 87795065 629022724 +fh 0 0 0 0 0 +io 35586909 1515531914 +th 16 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 +ra 32 229333249 0 0 0 0 0 0 0 0 0 4106423 +net 717504610 0 717216613 15750 +rpc 717521317 0 0 0 0 +proc2 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +proc3 22 84 185701663 9587314 62436191 114380547 61635 233519348 60991846 8887178 203052 68539 0 5816369 163267 1946736 127750 35510 8641639 1060644 112 56 13833978 +proc4 2 1 404 +proc4ops 59 0 0 0 2 0 0 0 0 0 402 3 0 0 0 0 3 0 0 0 0 0 0 403 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +*/ + +$keys_nfs_server = array( + 'rc' => array('th_hits', 'th_misses', 'th_nocache'), + 'fh' => array('fh_lookup', 'fh_anon', 'fh_ncachedir', 'fh_ncachenondir', 'fh_stale'), + 'io' => array('io_read', 'io_write'), + 'th' => array('th_threads', 'th_fullcnt', 'th_range01', 'th_range02', 'th_range03', 'th_range04', 'th_range05', 'th_range06', 'th_range07', 'th_range08', 'th_range09', 'th_range10'), + 'ra' => array('ra_cachesize', 'ra_range01', 'ra_range02', 'ra_range03', 'ra_range04', 'ra_range05', 'ra_range06', 'ra_range07', 'ra_range08', 'ra_range09', 'ra_range10', 'ra_notfound'), + 'net' => array('net_cnt', 'net_udp', 'net_tcp', 'net_tcpconn'), + 'rpc' => array('rpc_calls', 'rpc_badcount', 'rpc_badfmt', 'rpc_badauth', 'rpc_badclnt'), + 'proc2' => array('proc2_null', 'proc2_getattr', 'proc2_setattr', 'proc2_root', 'proc2_lookup','proc2_readlink', 'proc2_read', 'proc2_wrcache', 'proc2_write', 'proc2_create','proc2_remove', 'proc2_rename', 'proc2_link', 'proc2_symlink', 'proc2_mkdir','proc2_rmdir', 'proc2_readdir', 'proc2_fsstat'), + 'proc3' => array('proc3_null', 'proc3_getattr', 'proc3_setattr', 'proc3_lookup', 'proc3_access','proc3_readlink', 'proc3_read', 'proc3_write', 'proc3_create', 'proc3_mkdir','proc3_symlink', 'proc3_mknod', 'proc3_remove', 'proc3_rmdir', 'proc3_rename','proc3_link', 'proc3_readdir', 'proc3_readdirplus', 'proc3_fsstat', 'proc3_fsinfo', 'proc3_pathconf', 'proc3_commit'), + 'proc4' => array('proc4_null', 'proc4_compound'), + 'proc4ops' => array( + 'v4ops_access','v4ops_close','v4ops_commit','v4ops_create','v4ops_delegpurge','v4ops_delegreturn','v4ops_getattr','v4ops_getfh','v4ops_link', + 'v4ops_lock','v4ops_lockt','v4ops_locku','v4ops_lookup','v4ops_lookup_root','v4ops_nverify','v4ops_open','v4ops_openattr','v4ops_open_confirm', + 'v4ops_open_downgrad','v4ops_putfh','v4ops_putpubfh','v4ops_putrootfh','v4ops_read','v4ops_readdir','v4ops_readlink','v4ops_remove','v4ops_rename', + 'v4ops_renew','v4ops_restorefh','v4ops_savefh','v4ops_secinfo','v4ops_setattr','v4ops_setclientid','v4ops_setclientid_c','v4ops_verify', + 'v4ops_write','v4ops_release_locko','v4ops_backchannel_c','v4ops_bind_conn_to_','v4ops_exchange_id','v4ops_create_sessio','v4ops_destroy_sessi', + 'v4ops_free_stateid','v4ops_get_dir_deleg','v4ops_getdeviceinfo','v4ops_getdevicelist','v4ops_layoutcommit','v4ops_layoutget','v4ops_secinfo_no_na', + 'v4ops_sequence','v4ops_set_ssv','v4ops_test_stateid','v4ops_want_delegati','v4ops_destroy_clien','v4ops_reclaim_compl') + ); + + +# parse each output line, by the id +# then 'map' the values to the arrays from $keys_nfs_server +$lines = explode("\n", $nfsstats); +$fields = array(); +foreach ($lines as $line) +{ + $line_values = split(" ", $line); + $line_id = $line_values[0]; + + # remove the line_id + array_shift($line_values); + + switch ($line_id) + { + case 'rc': + case 'fh': + case 'io': + case 'th': + case 'ra': + case 'net': + case 'rpc': + # combine keys + values, and then merge it in $fields array + $fields = array_merge($fields, array_combine($keys_nfs_server['rc'], $line_values)); + break; + case 'proc2': + case 'proc3': + case 'proc4': + case 'proc4ops': + # note : proc2 is dropped for kernels 3.10.0+ (centos 7+) + # note : proc4ops has changed a few times, and getting the keys is difficult + # I only use the version which reports 59 value's (centos 6) + + # the first value of the proc* is the amount of fields that will follow; + # we check this, and if its incorrect, do not polute the chart with wrong values + $value_count = $line_values[0]; + if ($value_count == count($keys_nfs_server[$line_id])) + { + # pop the value_count + array_shift($line_values); + $fields = array_merge($fields, array_combine($keys_nfs_server[$line_id], $line_values)); + } + break; + } +} $tags = compact('name', 'app_id', 'rrd_name', 'rrd_def'); data_update($device, 'app', $tags, $fields); From d55eb9075b70ac9c4812216aa7cb45fa7d0f5b66 Mon Sep 17 00:00:00 2001 From: svennd Date: Sun, 2 Apr 2017 18:28:24 +0200 Subject: [PATCH 03/16] fixed v4ops removed nfs-server.sh, as only cat /proc/net/rpc/nfsd is needed as an extend. --- .../application/nfs-server_v4ops.inc.php | 113 ++++++++------- includes/polling/applications/nfs-server.php | 135 ++++++++++-------- scripts/agent-local/nfs-server.sh | 88 ------------ 3 files changed, 131 insertions(+), 205 deletions(-) delete mode 100644 scripts/agent-local/nfs-server.sh diff --git a/html/includes/graphs/application/nfs-server_v4ops.inc.php b/html/includes/graphs/application/nfs-server_v4ops.inc.php index a18a62f5a4d6..f16938ae9a06 100644 --- a/html/includes/graphs/application/nfs-server_v4ops.inc.php +++ b/html/includes/graphs/application/nfs-server_v4ops.inc.php @@ -12,60 +12,65 @@ $transparency = 33; $rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-'.$app['app_id'].'.rrd'; $array = array( - 'v4ops_access' => array('descr' => 'access'), - 'v4ops_close' => array('descr' => 'close'), - 'v4ops_commit' => array('descr' => 'commit'), - 'v4ops_create' => array('descr' => 'create'), - 'v4ops_delegpurge' => array('descr' => 'delegpurge'), - 'v4ops_delegreturn' => array('descr' => 'delegreturn'), - 'v4ops_getattr' => array('descr' => 'getattr'), - 'v4ops_getfh' => array('descr' => 'getfh'), - 'v4ops_link' => array('descr' => 'link'), - 'v4ops_lock' => array('descr' => 'lock'), - 'v4ops_lockt' => array('descr' => 'lockt'), - 'v4ops_locku' => array('descr' => 'locku'), - 'v4ops_lookup' => array('descr' => 'lookup'), - 'v4ops_lookup_root' => array('descr' => 'lookup_root'), - 'v4ops_nverify' => array('descr' => 'nverify'), - 'v4ops_open' => array('descr' => 'opsen'), - 'v4ops_openattr' => array('descr' => 'opsenattr'), - 'v4ops_open_confirm' => array('descr' => 'opsen_confirm'), - 'v4ops_open_downgrad' => array('descr' => 'opsen_downgrade'), - 'v4ops_putfh' => array('descr' => 'putfh'), - 'v4ops_putpubfh' => array('descr' => 'putpubfh'), - 'v4ops_putrootfh' => array('descr' => 'putrootfh'), - 'v4ops_read' => array('descr' => 'read'), - 'v4ops_readdir' => array('descr' => 'readdir'), - 'v4ops_readlink' => array('descr' => 'readlink'), - 'v4ops_remove' => array('descr' => 'remove'), - 'v4ops_rename' => array('descr' => 'rename'), - 'v4ops_renew' => array('descr' => 'renew'), - 'v4ops_savefh' => array('descr' => 'savefh'), - 'v4ops_secinfo' => array('descr' => 'secinfo'), - 'v4ops_setattr' => array('descr' => 'setattr'), - 'v4ops_setclientid' => array('descr' => 'setclientid'), - 'v4ops_setclientid_c' => array('descr' => 'setclientid confirm'), - 'v4ops_verify' => array('descr' => 'verify'), - 'v4ops_write' => array('descr' => 'write'), - 'v4ops_release_locko' => array('descr' => 'release lockowner'), - 'v4ops_backchannel_c' => array('descr' => 'backchannel ctl'), - 'v4ops_bind_conn_to_' => array('descr' => 'bind conn to session'), - 'v4ops_exchange_id' => array('descr' => 'exchange id'), - 'v4ops_create_sessio' => array('descr' => 'create session'), - 'v4ops_destroy_sessi' => array('descr' => 'destroy session'), - 'v4ops_free_stateid' => array('descr' => 'free stateid'), - 'v4ops_get_dir_deleg' => array('descr' => 'get dir delegation'), - 'v4ops_getdeviceinfo' => array('descr' => 'getdeviceinfo'), - 'v4ops_getdevicelist' => array('descr' => 'getdevicelist'), - 'v4ops_layoutcommit' => array('descr' => 'layoutcommit'), - 'v4ops_layoutget' => array('descr' => 'layoutget'), - 'v4ops_secinfo_no_na' => array('descr' => 'secinfo no name'), - 'v4ops_sequence' => array('descr' => 'sequence'), - 'v4ops_set_ssv' => array('descr' => 'set ssv'), - 'v4ops_test_stateid' => array('descr' => 'test stateid'), - 'v4ops_want_delegati' => array('descr' => 'want delegation'), - 'v4ops_destroy_clien' => array('descr' => 'destroy clientid'), - 'v4ops_reclaim_compl' => array('descr' => 'reclaim complete'), + // 'v4_op0-unused' => array('descr' => 'v4_op0-unused'), + // 'v4_op1-unused' => array('descr' => 'v4_op1-unused'), + // 'v4_op2-future' => array('descr' => 'v4_op2-future'), + 'v4_access' => array('descr' => 'v4_access'), + 'v4_close' => array('descr' => 'v4_close'), + 'v4_commit' => array('descr' => 'v4_commit'), + 'v4_create' => array('descr' => 'v4_create'), + 'v4_delegpurge' => array('descr' => 'v4_delegpurge'), + 'v4_delegreturn' => array('descr' => 'v4_delegreturn'), + 'v4_getattr' => array('descr' => 'v4_getattr'), + 'v4_getfh' => array('descr' => 'v4_getfh'), + 'v4_link' => array('descr' => 'v4_link'), + 'v4_lock' => array('descr' => 'v4_lock'), + 'v4_lockt' => array('descr' => 'v4_lockt'), + 'v4_locku' => array('descr' => 'v4_locku'), + 'v4_lookup' => array('descr' => 'v4_lookup'), + 'v4_lookup_root' => array('descr' => 'v4_lookup_root'), + 'v4_nverify' => array('descr' => 'v4_nverify'), + 'v4_open' => array('descr' => 'v4_open'), + 'v4_openattr' => array('descr' => 'v4_openattr'), + 'v4_open_conf' => array('descr' => 'v4_open_conf'), + 'v4_open_dgrd' => array('descr' => 'v4_open_dgrd'), + 'v4_putfh' => array('descr' => 'v4_putfh'), + 'v4_putpubfh' => array('descr' => 'v4_putpubfh'), + 'v4_putrootfh' => array('descr' => 'v4_putrootfh'), + 'v4_read' => array('descr' => 'v4_read'), + 'v4_readdir' => array('descr' => 'v4_readdir'), + 'v4_readlink' => array('descr' => 'v4_readlink'), + 'v4_remove' => array('descr' => 'v4_remove'), + 'v4_rename' => array('descr' => 'v4_rename'), + 'v4_renew' => array('descr' => 'v4_renew'), + 'v4_restorefh' => array('descr' => 'v4_restorefh'), + 'v4_savefh' => array('descr' => 'v4_savefh'), + 'v4_secinfo' => array('descr' => 'v4_secinfo'), + 'v4_setattr' => array('descr' => 'v4_setattr'), + 'v4_setcltid' => array('descr' => 'v4_setcltid'), + 'v4_setcltidconf' => array('descr' => 'v4_setcltidconf'), + 'v4_verify' => array('descr' => 'v4_verify'), + 'v4_write' => array('descr' => 'v4_write'), + 'v4_rellockowner' => array('descr' => 'v4_rellockowner'), + 'v4_bc_ctl' => array('descr' => 'v4_bc_ctl'), + 'v4_bind_conn' => array('descr' => 'v4_bind_conn'), + 'v4_exchange_id' => array('descr' => 'v4_exchange_id'), + 'v4_create_ses' => array('descr' => 'v4_create_ses'), + 'v4_destroy_ses' => array('descr' => 'v4_destroy_ses'), + 'v4_free_stateid' => array('descr' => 'v4_free_stateid'), + 'v4_getdirdeleg' => array('descr' => 'v4_getdirdeleg'), + 'v4_getdevinfo' => array('descr' => 'v4_getdevinfo'), + 'v4_getdevlist' => array('descr' => 'v4_getdevlist'), + 'v4_layoutcommit' => array('descr' => 'v4_layoutcommit'), + 'v4_layoutget' => array('descr' => 'v4_layoutget'), + 'v4_layoutreturn' => array('descr' => 'v4_layoutreturn'), + 'v4_secinfononam' => array('descr' => 'v4_secinfononam'), + 'v4_sequence' => array('descr' => 'v4_sequence'), + 'v4_set_ssv' => array('descr' => 'v4_set_ssv'), + 'v4_test_stateid' => array('descr' => 'v4_test_stateid'), + 'v4_want_deleg' => array('descr' => 'v4_want_deleg'), + 'v4_destroy_clid' => array('descr' => 'v4_destroy_clid'), + 'v4_reclaim_comp' => array('descr' => 'v4_reclaim_comp'), ); $i = 0; diff --git a/includes/polling/applications/nfs-server.php b/includes/polling/applications/nfs-server.php index 8f1935532547..78955a9f7432 100644 --- a/includes/polling/applications/nfs-server.php +++ b/includes/polling/applications/nfs-server.php @@ -107,61 +107,65 @@ ->addDataset('proc4_null', 'COUNTER', 0, 125000000000) ->addDataset('proc4_compound', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_access', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_close', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_commit', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_create', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_delegpurge', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_delegreturn', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_getattr', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_getfh', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_link', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_lock', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_lockt', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_locku', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_lookup', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_lookup_root', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_nverify', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_open', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_openattr', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_open_confirm', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_open_downgrad', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_putfh', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_putpubfh', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_putrootfh', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_read', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_readdir', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_readlink', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_remove', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_rename', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_renew', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_restorefh', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_savefh', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_secinfo', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_setattr', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_setclientid', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_setclientid_c', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_verify', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_write', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_release_locko', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_backchannel_c', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_bind_conn_to_', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_exchange_id', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_create_sessio', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_destroy_sessi', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_free_stateid', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_get_dir_deleg', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_getdeviceinfo', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_getdevicelist', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_layoutcommit', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_layoutget', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_secinfo_no_na', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_sequence', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_set_ssv', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_test_stateid', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_want_delegati', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_destroy_clien', 'COUNTER', 0, 125000000000) - ->addDataset('v4ops_reclaim_compl', 'COUNTER', 0, 125000000000) + ->addDataset('v4_op0-unused', 'COUNTER', 0, 125000000000) + ->addDataset('v4_op1-unused', 'COUNTER', 0, 125000000000) + ->addDataset('v4_op2-future', 'COUNTER', 0, 125000000000) + ->addDataset('v4_access', 'COUNTER', 0, 125000000000) + ->addDataset('v4_close', 'COUNTER', 0, 125000000000) + ->addDataset('v4_commit', 'COUNTER', 0, 125000000000) + ->addDataset('v4_create', 'COUNTER', 0, 125000000000) + ->addDataset('v4_delegpurge', 'COUNTER', 0, 125000000000) + ->addDataset('v4_delegreturn', 'COUNTER', 0, 125000000000) + ->addDataset('v4_getattr', 'COUNTER', 0, 125000000000) + ->addDataset('v4_getfh', 'COUNTER', 0, 125000000000) + ->addDataset('v4_link', 'COUNTER', 0, 125000000000) + ->addDataset('v4_lock', 'COUNTER', 0, 125000000000) + ->addDataset('v4_lockt', 'COUNTER', 0, 125000000000) + ->addDataset('v4_locku', 'COUNTER', 0, 125000000000) + ->addDataset('v4_lookup', 'COUNTER', 0, 125000000000) + ->addDataset('v4_lookup_root', 'COUNTER', 0, 125000000000) + ->addDataset('v4_nverify', 'COUNTER', 0, 125000000000) + ->addDataset('v4_open', 'COUNTER', 0, 125000000000) + ->addDataset('v4_openattr', 'COUNTER', 0, 125000000000) + ->addDataset('v4_open_conf', 'COUNTER', 0, 125000000000) + ->addDataset('v4_open_dgrd', 'COUNTER', 0, 125000000000) + ->addDataset('v4_putfh', 'COUNTER', 0, 125000000000) + ->addDataset('v4_putpubfh', 'COUNTER', 0, 125000000000) + ->addDataset('v4_putrootfh', 'COUNTER', 0, 125000000000) + ->addDataset('v4_read', 'COUNTER', 0, 125000000000) + ->addDataset('v4_readdir', 'COUNTER', 0, 125000000000) + ->addDataset('v4_readlink', 'COUNTER', 0, 125000000000) + ->addDataset('v4_remove', 'COUNTER', 0, 125000000000) + ->addDataset('v4_rename', 'COUNTER', 0, 125000000000) + ->addDataset('v4_renew', 'COUNTER', 0, 125000000000) + ->addDataset('v4_restorefh', 'COUNTER', 0, 125000000000) + ->addDataset('v4_savefh', 'COUNTER', 0, 125000000000) + ->addDataset('v4_secinfo', 'COUNTER', 0, 125000000000) + ->addDataset('v4_setattr', 'COUNTER', 0, 125000000000) + ->addDataset('v4_setcltid', 'COUNTER', 0, 125000000000) + ->addDataset('v4_setcltidconf', 'COUNTER', 0, 125000000000) + ->addDataset('v4_verify', 'COUNTER', 0, 125000000000) + ->addDataset('v4_write', 'COUNTER', 0, 125000000000) + ->addDataset('v4_rellockowner', 'COUNTER', 0, 125000000000) + ->addDataset('v4_bc_ctl', 'COUNTER', 0, 125000000000) + ->addDataset('v4_bind_conn', 'COUNTER', 0, 125000000000) + ->addDataset('v4_exchange_id', 'COUNTER', 0, 125000000000) + ->addDataset('v4_create_ses', 'COUNTER', 0, 125000000000) + ->addDataset('v4_destroy_ses', 'COUNTER', 0, 125000000000) + ->addDataset('v4_free_stateid', 'COUNTER', 0, 125000000000) + ->addDataset('v4_getdirdeleg', 'COUNTER', 0, 125000000000) + ->addDataset('v4_getdevinfo', 'COUNTER', 0, 125000000000) + ->addDataset('v4_getdevlist', 'COUNTER', 0, 125000000000) + ->addDataset('v4_layoutcommit', 'COUNTER', 0, 125000000000) + ->addDataset('v4_layoutget', 'COUNTER', 0, 125000000000) + ->addDataset('v4_layoutreturn', 'COUNTER', 0, 125000000000) + ->addDataset('v4_secinfononam', 'COUNTER', 0, 125000000000) + ->addDataset('v4_sequence', 'COUNTER', 0, 125000000000) + ->addDataset('v4_set_ssv', 'COUNTER', 0, 125000000000) + ->addDataset('v4_test_stateid', 'COUNTER', 0, 125000000000) + ->addDataset('v4_want_deleg', 'COUNTER', 0, 125000000000) + ->addDataset('v4_destroy_clid', 'COUNTER', 0, 125000000000) + ->addDataset('v4_reclaim_comp', 'COUNTER', 0, 125000000000) ; /* examples output : @@ -190,13 +194,16 @@ 'proc3' => array('proc3_null', 'proc3_getattr', 'proc3_setattr', 'proc3_lookup', 'proc3_access','proc3_readlink', 'proc3_read', 'proc3_write', 'proc3_create', 'proc3_mkdir','proc3_symlink', 'proc3_mknod', 'proc3_remove', 'proc3_rmdir', 'proc3_rename','proc3_link', 'proc3_readdir', 'proc3_readdirplus', 'proc3_fsstat', 'proc3_fsinfo', 'proc3_pathconf', 'proc3_commit'), 'proc4' => array('proc4_null', 'proc4_compound'), 'proc4ops' => array( - 'v4ops_access','v4ops_close','v4ops_commit','v4ops_create','v4ops_delegpurge','v4ops_delegreturn','v4ops_getattr','v4ops_getfh','v4ops_link', - 'v4ops_lock','v4ops_lockt','v4ops_locku','v4ops_lookup','v4ops_lookup_root','v4ops_nverify','v4ops_open','v4ops_openattr','v4ops_open_confirm', - 'v4ops_open_downgrad','v4ops_putfh','v4ops_putpubfh','v4ops_putrootfh','v4ops_read','v4ops_readdir','v4ops_readlink','v4ops_remove','v4ops_rename', - 'v4ops_renew','v4ops_restorefh','v4ops_savefh','v4ops_secinfo','v4ops_setattr','v4ops_setclientid','v4ops_setclientid_c','v4ops_verify', - 'v4ops_write','v4ops_release_locko','v4ops_backchannel_c','v4ops_bind_conn_to_','v4ops_exchange_id','v4ops_create_sessio','v4ops_destroy_sessi', - 'v4ops_free_stateid','v4ops_get_dir_deleg','v4ops_getdeviceinfo','v4ops_getdevicelist','v4ops_layoutcommit','v4ops_layoutget','v4ops_secinfo_no_na', - 'v4ops_sequence','v4ops_set_ssv','v4ops_test_stateid','v4ops_want_delegati','v4ops_destroy_clien','v4ops_reclaim_compl') + 'v4_op0-unused','v4_op1-unused','v4_op2-future','v4_access','v4_close', + 'v4_commit','v4_create','v4_delegpurge','v4_delegreturn','v4_getattr','v4_getfh', + 'v4_link','v4_lock','v4_lockt','v4_locku','v4_lookup','v4_lookup_root','v4_nverify', + 'v4_open','v4_openattr','v4_open_conf','v4_open_dgrd','v4_putfh','v4_putpubfh','v4_putrootfh', + 'v4_read','v4_readdir','v4_readlink','v4_remove','v4_rename','v4_renew','v4_restorefh','v4_savefh', + 'v4_secinfo','v4_setattr','v4_setcltid','v4_setcltidconf','v4_verify','v4_write','v4_rellockowner', + 'v4_bc_ctl','v4_bind_conn','v4_exchange_id','v4_create_ses','v4_destroy_ses','v4_free_stateid', + 'v4_getdirdeleg','v4_getdevinfo','v4_getdevlist','v4_layoutcommit','v4_layoutget','v4_layoutreturn', + 'v4_secinfononam','v4_sequence','v4_set_ssv','v4_test_stateid','v4_want_deleg','v4_destroy_clid', + 'v4_reclaim_comp') ); @@ -222,7 +229,7 @@ case 'net': case 'rpc': # combine keys + values, and then merge it in $fields array - $fields = array_merge($fields, array_combine($keys_nfs_server['rc'], $line_values)); + $fields = array_merge($fields, array_combine($keys_nfs_server[$line_id], $line_values)); break; case 'proc2': case 'proc3': @@ -235,10 +242,12 @@ # the first value of the proc* is the amount of fields that will follow; # we check this, and if its incorrect, do not polute the chart with wrong values $value_count = $line_values[0]; + if ($value_count == count($keys_nfs_server[$line_id])) { # pop the value_count array_shift($line_values); + $fields = array_merge($fields, array_combine($keys_nfs_server[$line_id], $line_values)); } break; diff --git a/scripts/agent-local/nfs-server.sh b/scripts/agent-local/nfs-server.sh deleted file mode 100644 index 474e4982b923..000000000000 --- a/scripts/agent-local/nfs-server.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/bash -# -# collect nfs server stats -# to enable, add this to snmpd.conf : -# extend nfs-server /path/to/this/file/nfs-server.sh - -# setting -nfsd="/proc/net/rpc/nfsd" -# used to store the old values -store="/tmp/librenms_nfsd_server" -# used to store the current values -tmp="/tmp/librenms_nfsd_server.tmp" - -# check if there is a server running here -if [ ! -f $nfsd ]; then - echo "0" - exit -fi - -# check if this is init run -if [ ! -f $store ]; then - echo "warning: could not find old file, its fine if this is inital run." -fi - -# parse the nfsd file -# reply cache : hits, misses, nocache -cat $nfsd | sed -n 1p | awk '{print $2,$3,$4}' | tr " " "\n" > $tmp - -# file handles : lookup, anon, ncachedir, ncachenondir, stale -cat $nfsd | sed -n 2p | awk '{print $2,$3,$4,$5,$6}' | tr " " "\n" >> $tmp - -# io : read, write -cat $nfsd | sed -n 3p | awk '{print $2,$3}' | tr " " "\n" >> $tmp - -# read ahead cache : 0-10%, 10-20%, ... 90-100%, not-found -cat $nfsd | sed -n 5p | awk '{print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13}' | tr " " "\n" >> $tmp - -# net : all_reads, udp, tcp, tcp_conn -cat $nfsd | sed -n 6p | awk '{print $2,$3,$4,$5}' | tr " " "\n" >> $tmp - -# rpc : calls, badfmt, badauth, badclnt -cat $nfsd | sed -n 7p | awk '{print $2,$4,$5,$6}' | tr " " "\n" >> $tmp - -# nfsv2 : null, getattr, setattr, root, lookup, readlink, read, wrcache, write, create, remove, rename, link, symlink, mkdir, rmdir, readdir, fsstat -cat $nfsd | sed -n 8p | awk '{print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20}' | tr " " "\n" >> $tmp - -# nfsv3 : null, getattr, setattr, lookup, access, readlink, read, write, create, mkdir, symlink, mknod, remove, rmdir, rename, link, readdir, readdirplus, fsstat, fsinfo, pathconf, commit -cat $nfsd | sed -n 9p | awk '{print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24}' | tr " " "\n" >> $tmp - -# nfsv4 : null, compound -cat $nfsd | sed -n 10p | awk '{print $3,$4}' | tr " " "\n" >> $tmp - -# nfsv4ops -# OP_ACCESS, OP_CLOSE, OP_COMMIT, OP_CREATE, -# OP_DELEGPURGE, OP_DELEGRETURN, OP_GETATTR, OP_GETFH, -# OP_LINK, OP_LOCK, OP_LOCKT, OP_LOCKU, -# OP_LOOKUP, OP_LOOKUP_ROOT, OP_NVERIFY, OP_OPEN, -# OP_OPENATTR, OP_OPEN_CONFIRM, OP_OPEN_DOWNGRADE, OP_PUTFH, -# OP_PUTPUBFH, OP_PUTROOTFH, OP_READ, OP_READDIR, -# OP_READLINK, OP_REMOVE, OP_RENAME, OP_RENEW, -# OP_RESTOREFH, OP_SAVEFH, OP_SECINFO, OP_SETATTR, -# OP_SETCLIENTID, OP_SETCLIENTID_CONFIRM, OP_VERIFY, OP_WRITE, -# OP_RELEASE_LOCKOWNER, OP_BACKCHANNEL_CTL, OP_BIND_CONN_TO_SESSION, OP_EXCHANGE_ID, -# OP_CREATE_SESSION, OP_DESTROY_SESSION, OP_FREE_STATEID, OP_GET_DIR_DELEGATION, -# OP_GETDEVICEINFO, OP_GETDEVICELIST, OP_LAYOUTCOMMIT, OP_LAYOUTGET, -# OP_SECINFO_NO_NAME, OP_SEQUENCE, OP_SET_SSV, OP_TEST_STATEID, -# OP_WANT_DELEGATION, OP_DESTROY_CLIENTID, OP_RECLAIM_COMPLETE -cat $nfsd | sed -n 11p | awk '{print $6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$60}' | tr " " "\n" >> $tmp - -# combine and subtract each line -output="" -while read a b ; do - # check if its empty - if [ -z "$a" ]; then - output+="0|" - else - output+="$(($a-$b))|" - fi -done < <(paste $tmp $store) - -# copy the tmp over the new -cp -f $tmp $store - -# clean up the tmp -rm $tmp - -# base64 is required otherwise the string overflows -echo $output | base64 From 2431fb615659edaa883d38f9a9fa03b22c5cec75 Mon Sep 17 00:00:00 2001 From: svennd Date: Mon, 3 Apr 2017 22:09:51 +0200 Subject: [PATCH 04/16] split rrd split rrd to store and pull them seperatly --- includes/polling/applications/nfs-server.php | 36 ++++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/includes/polling/applications/nfs-server.php b/includes/polling/applications/nfs-server.php index 78955a9f7432..52ba9992b59b 100644 --- a/includes/polling/applications/nfs-server.php +++ b/includes/polling/applications/nfs-server.php @@ -2,7 +2,6 @@ use LibreNMS\RRD\RrdDefinition; $name = 'nfs-server'; -$app_id = $app['app_id']; $oid = '.1.3.6.1.4.1.8072.1.3.2.3.1.2.10.110.102.115.45.115.101.114.118.101.114'; echo ' ' . $name; @@ -10,8 +9,13 @@ $nfsstats = snmp_walk($device, $oid, '-Oqv', 'NET-SNMP-EXTEND-MIB'); update_application($app, $nfsstats); -$rrd_name = array('app', 'nfs-server', $app_id); -$rrd_def = RrdDefinition::make() +// define the rrd names +$rrd_name['default'] = array('app', 'nfs-server-default', $app_id); +$rrd_name['proc2'] = array('app', 'nfs-server-proc2', $app_id); +$rrd_name['proc3'] = array('app', 'nfs-server-proc3', $app_id); +$rrd_name['proc4'] = array('app', 'nfs-server-proc4', $app_id); + +$rrd_def['default'] = RrdDefinition::make() ->addDataset('rc_hits', 'COUNTER', 0, 125000000000) ->addDataset('rc_misses', 'COUNTER', 0, 125000000000) ->addDataset('rc_nocache', 'COUNTER', 0, 125000000000) @@ -61,7 +65,9 @@ ->addDataset('rpc_badfmt', 'COUNTER', 0, 125000000000) ->addDataset('rpc_badauth', 'COUNTER', 0, 125000000000) ->addDataset('rpc_badclnt', 'COUNTER', 0, 125000000000) - +; + +$rrd_def['proc2'] = RrdDefinition::make() ->addDataset('proc2_null', 'COUNTER', 0, 125000000000) ->addDataset('proc2_getattr', 'COUNTER', 0, 125000000000) ->addDataset('proc2_setattr', 'COUNTER', 0, 125000000000) @@ -80,7 +86,9 @@ ->addDataset('proc2_rmdir', 'COUNTER', 0, 125000000000) ->addDataset('proc2_readdir', 'COUNTER', 0, 125000000000) ->addDataset('proc2_fsstat', 'COUNTER', 0, 125000000000) - +; + +$rrd_def['proc3'] = RrdDefinition::make() ->addDataset('proc3_null', 'COUNTER', 0, 125000000000) ->addDataset('proc3_getattr', 'COUNTER', 0, 125000000000) ->addDataset('proc3_setattr', 'COUNTER', 0, 125000000000) @@ -103,7 +111,9 @@ ->addDataset('proc3_fsinfo', 'COUNTER', 0, 125000000000) ->addDataset('proc3_pathconf', 'COUNTER', 0, 125000000000) ->addDataset('proc3_commit', 'COUNTER', 0, 125000000000) - +; + +$rrd_def['proc4'] = RrdDefinition::make() ->addDataset('proc4_null', 'COUNTER', 0, 125000000000) ->addDataset('proc4_compound', 'COUNTER', 0, 125000000000) @@ -210,6 +220,7 @@ # parse each output line, by the id # then 'map' the values to the arrays from $keys_nfs_server $lines = explode("\n", $nfsstats); +$default_fields = array(); $fields = array(); foreach ($lines as $line) { @@ -229,7 +240,7 @@ case 'net': case 'rpc': # combine keys + values, and then merge it in $fields array - $fields = array_merge($fields, array_combine($keys_nfs_server[$line_id], $line_values)); + $default_fields = array_merge($default_fields, array_combine($keys_nfs_server[$line_id], $line_values)); break; case 'proc2': case 'proc3': @@ -247,14 +258,19 @@ { # pop the value_count array_shift($line_values); - + $fields = array_merge($fields, array_combine($keys_nfs_server[$line_id], $line_values)); + + # create or push data to rrd + $tags = array('name' => $name, 'app_id' => $app['id'], 'rrd_name' => $rdd_name[$line_id], 'rrd_def' => $rrd_def[$line_id]); + data_update($device, 'app', $tags, $fields); } break; } } -$tags = compact('name', 'app_id', 'rrd_name', 'rrd_def'); -data_update($device, 'app', $tags, $fields); +# push the default data to rrd +$tags = array('name' => $name, 'app_id' => $app['id'], 'rrd_name' => $rdd_name['default'], 'rrd_def' => $rrd_def['default']); +data_update($device, 'app', $tags, $default_fields); unset($nfsstats, $rrd_name, $rrd_def, $data, $fields, $tags); \ No newline at end of file From 9515e9a852f60118e699bd65be27c2f17f18dd87 Mon Sep 17 00:00:00 2001 From: svennd Date: Wed, 5 Apr 2017 15:14:33 +0200 Subject: [PATCH 05/16] scrutinizer-ci fix scrutinizer-ci fix --- includes/polling/applications/nfs-server.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/includes/polling/applications/nfs-server.php b/includes/polling/applications/nfs-server.php index 52ba9992b59b..6cbf429beb19 100644 --- a/includes/polling/applications/nfs-server.php +++ b/includes/polling/applications/nfs-server.php @@ -7,7 +7,16 @@ echo ' ' . $name; $nfsstats = snmp_walk($device, $oid, '-Oqv', 'NET-SNMP-EXTEND-MIB'); -update_application($app, $nfsstats); + +# check for false return +if (!$nfsstats) +{ + update_application($app, $nfsstats); +} +else +{ + echo "snmpwalk failed"; +} // define the rrd names $rrd_name['default'] = array('app', 'nfs-server-default', $app_id); @@ -224,7 +233,7 @@ $fields = array(); foreach ($lines as $line) { - $line_values = split(" ", $line); + $line_values = explode(" ", $line); $line_id = $line_values[0]; # remove the line_id From c8eab42bcf9e7604d8d781b0f0f973743038f227 Mon Sep 17 00:00:00 2001 From: svennd Date: Wed, 5 Apr 2017 14:26:45 +0000 Subject: [PATCH 06/16] phpcbf --- includes/polling/applications/nfs-server.php | 458 +++++++++---------- 1 file changed, 226 insertions(+), 232 deletions(-) diff --git a/includes/polling/applications/nfs-server.php b/includes/polling/applications/nfs-server.php index 6cbf429beb19..084af21141d2 100644 --- a/includes/polling/applications/nfs-server.php +++ b/includes/polling/applications/nfs-server.php @@ -8,14 +8,13 @@ $nfsstats = snmp_walk($device, $oid, '-Oqv', 'NET-SNMP-EXTEND-MIB'); -# check for false return -if (!$nfsstats) -{ - update_application($app, $nfsstats); +// check for false return +if (!$nfsstats) { + update_application($app, $nfsstats); } else { - echo "snmpwalk failed"; + echo "snmpwalk failed"; } // define the rrd names @@ -25,167 +24,163 @@ $rrd_name['proc4'] = array('app', 'nfs-server-proc4', $app_id); $rrd_def['default'] = RrdDefinition::make() - ->addDataset('rc_hits', 'COUNTER', 0, 125000000000) - ->addDataset('rc_misses', 'COUNTER', 0, 125000000000) - ->addDataset('rc_nocache', 'COUNTER', 0, 125000000000) - - ->addDataset('fh_lookup', 'COUNTER', 0, 125000000000) - ->addDataset('fh_anon', 'COUNTER', 0, 125000000000) - ->addDataset('fh_ncachedir', 'COUNTER', 0, 125000000000) - ->addDataset('fh_ncachenondir', 'COUNTER', 0, 125000000000) - ->addDataset('fh_stale', 'COUNTER', 0, 125000000000) - - ->addDataset('io_read', 'COUNTER', 0, 125000000000) - ->addDataset('io_write', 'COUNTER', 0, 125000000000) - - ->addDataset('th_threads', 'COUNTER', 0, 125000000000) - ->addDataset('th_fullcnt', 'COUNTER', 0, 125000000000) - ->addDataset('th_range01', 'GAUGE', 0, 125000000000) - ->addDataset('th_range02', 'GAUGE', 0, 125000000000) - ->addDataset('th_range03', 'GAUGE', 0, 125000000000) - ->addDataset('th_range04', 'GAUGE', 0, 125000000000) - ->addDataset('th_range05', 'GAUGE', 0, 125000000000) - ->addDataset('th_range06', 'GAUGE', 0, 125000000000) - ->addDataset('th_range07', 'GAUGE', 0, 125000000000) - ->addDataset('th_range08', 'GAUGE', 0, 125000000000) - ->addDataset('th_range09', 'GAUGE', 0, 125000000000) - ->addDataset('th_range10', 'GAUGE', 0, 125000000000) - - ->addDataset('ra_cachesize', 'GAUGE', 0, 125000000000) - ->addDataset('ra_range01', 'GAUGE', 0, 125000000000) - ->addDataset('ra_range02', 'GAUGE', 0, 125000000000) - ->addDataset('ra_range03', 'GAUGE', 0, 125000000000) - ->addDataset('ra_range04', 'GAUGE', 0, 125000000000) - ->addDataset('ra_range05', 'GAUGE', 0, 125000000000) - ->addDataset('ra_range06', 'GAUGE', 0, 125000000000) - ->addDataset('ra_range07', 'GAUGE', 0, 125000000000) - ->addDataset('ra_range08', 'GAUGE', 0, 125000000000) - ->addDataset('ra_range09', 'GAUGE', 0, 125000000000) - ->addDataset('ra_range10', 'GAUGE', 0, 125000000000) - ->addDataset('ra_notfound', 'GAUGE', 0, 125000000000) - - ->addDataset('net_cnt', 'COUNTER', 0, 125000000000) - ->addDataset('net_udp', 'COUNTER', 0, 125000000000) - ->addDataset('net_tcp', 'COUNTER', 0, 125000000000) - ->addDataset('net_tcpconn', 'COUNTER', 0, 125000000000) - - ->addDataset('rpc_calls', 'COUNTER', 0, 125000000000) - ->addDataset('rpc_badcount', 'COUNTER', 0, 125000000000) - ->addDataset('rpc_badfmt', 'COUNTER', 0, 125000000000) - ->addDataset('rpc_badauth', 'COUNTER', 0, 125000000000) - ->addDataset('rpc_badclnt', 'COUNTER', 0, 125000000000) -; + ->addDataset('rc_hits', 'COUNTER', 0, 125000000000) + ->addDataset('rc_misses', 'COUNTER', 0, 125000000000) + ->addDataset('rc_nocache', 'COUNTER', 0, 125000000000) + + ->addDataset('fh_lookup', 'COUNTER', 0, 125000000000) + ->addDataset('fh_anon', 'COUNTER', 0, 125000000000) + ->addDataset('fh_ncachedir', 'COUNTER', 0, 125000000000) + ->addDataset('fh_ncachenondir', 'COUNTER', 0, 125000000000) + ->addDataset('fh_stale', 'COUNTER', 0, 125000000000) + + ->addDataset('io_read', 'COUNTER', 0, 125000000000) + ->addDataset('io_write', 'COUNTER', 0, 125000000000) + + ->addDataset('th_threads', 'COUNTER', 0, 125000000000) + ->addDataset('th_fullcnt', 'COUNTER', 0, 125000000000) + ->addDataset('th_range01', 'GAUGE', 0, 125000000000) + ->addDataset('th_range02', 'GAUGE', 0, 125000000000) + ->addDataset('th_range03', 'GAUGE', 0, 125000000000) + ->addDataset('th_range04', 'GAUGE', 0, 125000000000) + ->addDataset('th_range05', 'GAUGE', 0, 125000000000) + ->addDataset('th_range06', 'GAUGE', 0, 125000000000) + ->addDataset('th_range07', 'GAUGE', 0, 125000000000) + ->addDataset('th_range08', 'GAUGE', 0, 125000000000) + ->addDataset('th_range09', 'GAUGE', 0, 125000000000) + ->addDataset('th_range10', 'GAUGE', 0, 125000000000) + + ->addDataset('ra_cachesize', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range01', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range02', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range03', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range04', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range05', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range06', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range07', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range08', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range09', 'GAUGE', 0, 125000000000) + ->addDataset('ra_range10', 'GAUGE', 0, 125000000000) + ->addDataset('ra_notfound', 'GAUGE', 0, 125000000000) + + ->addDataset('net_cnt', 'COUNTER', 0, 125000000000) + ->addDataset('net_udp', 'COUNTER', 0, 125000000000) + ->addDataset('net_tcp', 'COUNTER', 0, 125000000000) + ->addDataset('net_tcpconn', 'COUNTER', 0, 125000000000) + + ->addDataset('rpc_calls', 'COUNTER', 0, 125000000000) + ->addDataset('rpc_badcount', 'COUNTER', 0, 125000000000) + ->addDataset('rpc_badfmt', 'COUNTER', 0, 125000000000) + ->addDataset('rpc_badauth', 'COUNTER', 0, 125000000000) + ->addDataset('rpc_badclnt', 'COUNTER', 0, 125000000000); -$rrd_def['proc2'] = RrdDefinition::make() - ->addDataset('proc2_null', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_getattr', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_setattr', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_root', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_lookup', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_readlink', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_read', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_wrcache', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_write', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_create', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_remove', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_rename', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_link', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_symlink', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_mkdir', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_rmdir', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_readdir', 'COUNTER', 0, 125000000000) - ->addDataset('proc2_fsstat', 'COUNTER', 0, 125000000000) -; +$rrd_def['proc2'] = RrdDefinition::make() + ->addDataset('proc2_null', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_getattr', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_setattr', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_root', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_lookup', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_readlink', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_read', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_wrcache', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_write', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_create', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_remove', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_rename', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_link', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_symlink', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_mkdir', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_rmdir', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_readdir', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_fsstat', 'COUNTER', 0, 125000000000); -$rrd_def['proc3'] = RrdDefinition::make() - ->addDataset('proc3_null', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_getattr', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_setattr', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_lookup', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_access', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_readlink', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_read', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_write', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_create', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_mkdir', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_symlink', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_mknod', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_remove', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_rmdir', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_rename', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_link', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_readdir', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_readdirplus', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_fsstat', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_fsinfo', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_pathconf', 'COUNTER', 0, 125000000000) - ->addDataset('proc3_commit', 'COUNTER', 0, 125000000000) -; +$rrd_def['proc3'] = RrdDefinition::make() + ->addDataset('proc3_null', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_getattr', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_setattr', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_lookup', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_access', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_readlink', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_read', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_write', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_create', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_mkdir', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_symlink', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_mknod', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_remove', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_rmdir', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_rename', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_link', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_readdir', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_readdirplus', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_fsstat', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_fsinfo', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_pathconf', 'COUNTER', 0, 125000000000) + ->addDataset('proc3_commit', 'COUNTER', 0, 125000000000); -$rrd_def['proc4'] = RrdDefinition::make() - ->addDataset('proc4_null', 'COUNTER', 0, 125000000000) - ->addDataset('proc4_compound', 'COUNTER', 0, 125000000000) - - ->addDataset('v4_op0-unused', 'COUNTER', 0, 125000000000) - ->addDataset('v4_op1-unused', 'COUNTER', 0, 125000000000) - ->addDataset('v4_op2-future', 'COUNTER', 0, 125000000000) - ->addDataset('v4_access', 'COUNTER', 0, 125000000000) - ->addDataset('v4_close', 'COUNTER', 0, 125000000000) - ->addDataset('v4_commit', 'COUNTER', 0, 125000000000) - ->addDataset('v4_create', 'COUNTER', 0, 125000000000) - ->addDataset('v4_delegpurge', 'COUNTER', 0, 125000000000) - ->addDataset('v4_delegreturn', 'COUNTER', 0, 125000000000) - ->addDataset('v4_getattr', 'COUNTER', 0, 125000000000) - ->addDataset('v4_getfh', 'COUNTER', 0, 125000000000) - ->addDataset('v4_link', 'COUNTER', 0, 125000000000) - ->addDataset('v4_lock', 'COUNTER', 0, 125000000000) - ->addDataset('v4_lockt', 'COUNTER', 0, 125000000000) - ->addDataset('v4_locku', 'COUNTER', 0, 125000000000) - ->addDataset('v4_lookup', 'COUNTER', 0, 125000000000) - ->addDataset('v4_lookup_root', 'COUNTER', 0, 125000000000) - ->addDataset('v4_nverify', 'COUNTER', 0, 125000000000) - ->addDataset('v4_open', 'COUNTER', 0, 125000000000) - ->addDataset('v4_openattr', 'COUNTER', 0, 125000000000) - ->addDataset('v4_open_conf', 'COUNTER', 0, 125000000000) - ->addDataset('v4_open_dgrd', 'COUNTER', 0, 125000000000) - ->addDataset('v4_putfh', 'COUNTER', 0, 125000000000) - ->addDataset('v4_putpubfh', 'COUNTER', 0, 125000000000) - ->addDataset('v4_putrootfh', 'COUNTER', 0, 125000000000) - ->addDataset('v4_read', 'COUNTER', 0, 125000000000) - ->addDataset('v4_readdir', 'COUNTER', 0, 125000000000) - ->addDataset('v4_readlink', 'COUNTER', 0, 125000000000) - ->addDataset('v4_remove', 'COUNTER', 0, 125000000000) - ->addDataset('v4_rename', 'COUNTER', 0, 125000000000) - ->addDataset('v4_renew', 'COUNTER', 0, 125000000000) - ->addDataset('v4_restorefh', 'COUNTER', 0, 125000000000) - ->addDataset('v4_savefh', 'COUNTER', 0, 125000000000) - ->addDataset('v4_secinfo', 'COUNTER', 0, 125000000000) - ->addDataset('v4_setattr', 'COUNTER', 0, 125000000000) - ->addDataset('v4_setcltid', 'COUNTER', 0, 125000000000) - ->addDataset('v4_setcltidconf', 'COUNTER', 0, 125000000000) - ->addDataset('v4_verify', 'COUNTER', 0, 125000000000) - ->addDataset('v4_write', 'COUNTER', 0, 125000000000) - ->addDataset('v4_rellockowner', 'COUNTER', 0, 125000000000) - ->addDataset('v4_bc_ctl', 'COUNTER', 0, 125000000000) - ->addDataset('v4_bind_conn', 'COUNTER', 0, 125000000000) - ->addDataset('v4_exchange_id', 'COUNTER', 0, 125000000000) - ->addDataset('v4_create_ses', 'COUNTER', 0, 125000000000) - ->addDataset('v4_destroy_ses', 'COUNTER', 0, 125000000000) - ->addDataset('v4_free_stateid', 'COUNTER', 0, 125000000000) - ->addDataset('v4_getdirdeleg', 'COUNTER', 0, 125000000000) - ->addDataset('v4_getdevinfo', 'COUNTER', 0, 125000000000) - ->addDataset('v4_getdevlist', 'COUNTER', 0, 125000000000) - ->addDataset('v4_layoutcommit', 'COUNTER', 0, 125000000000) - ->addDataset('v4_layoutget', 'COUNTER', 0, 125000000000) - ->addDataset('v4_layoutreturn', 'COUNTER', 0, 125000000000) - ->addDataset('v4_secinfononam', 'COUNTER', 0, 125000000000) - ->addDataset('v4_sequence', 'COUNTER', 0, 125000000000) - ->addDataset('v4_set_ssv', 'COUNTER', 0, 125000000000) - ->addDataset('v4_test_stateid', 'COUNTER', 0, 125000000000) - ->addDataset('v4_want_deleg', 'COUNTER', 0, 125000000000) - ->addDataset('v4_destroy_clid', 'COUNTER', 0, 125000000000) - ->addDataset('v4_reclaim_comp', 'COUNTER', 0, 125000000000) -; +$rrd_def['proc4'] = RrdDefinition::make() + ->addDataset('proc4_null', 'COUNTER', 0, 125000000000) + ->addDataset('proc4_compound', 'COUNTER', 0, 125000000000) + + ->addDataset('v4_op0-unused', 'COUNTER', 0, 125000000000) + ->addDataset('v4_op1-unused', 'COUNTER', 0, 125000000000) + ->addDataset('v4_op2-future', 'COUNTER', 0, 125000000000) + ->addDataset('v4_access', 'COUNTER', 0, 125000000000) + ->addDataset('v4_close', 'COUNTER', 0, 125000000000) + ->addDataset('v4_commit', 'COUNTER', 0, 125000000000) + ->addDataset('v4_create', 'COUNTER', 0, 125000000000) + ->addDataset('v4_delegpurge', 'COUNTER', 0, 125000000000) + ->addDataset('v4_delegreturn', 'COUNTER', 0, 125000000000) + ->addDataset('v4_getattr', 'COUNTER', 0, 125000000000) + ->addDataset('v4_getfh', 'COUNTER', 0, 125000000000) + ->addDataset('v4_link', 'COUNTER', 0, 125000000000) + ->addDataset('v4_lock', 'COUNTER', 0, 125000000000) + ->addDataset('v4_lockt', 'COUNTER', 0, 125000000000) + ->addDataset('v4_locku', 'COUNTER', 0, 125000000000) + ->addDataset('v4_lookup', 'COUNTER', 0, 125000000000) + ->addDataset('v4_lookup_root', 'COUNTER', 0, 125000000000) + ->addDataset('v4_nverify', 'COUNTER', 0, 125000000000) + ->addDataset('v4_open', 'COUNTER', 0, 125000000000) + ->addDataset('v4_openattr', 'COUNTER', 0, 125000000000) + ->addDataset('v4_open_conf', 'COUNTER', 0, 125000000000) + ->addDataset('v4_open_dgrd', 'COUNTER', 0, 125000000000) + ->addDataset('v4_putfh', 'COUNTER', 0, 125000000000) + ->addDataset('v4_putpubfh', 'COUNTER', 0, 125000000000) + ->addDataset('v4_putrootfh', 'COUNTER', 0, 125000000000) + ->addDataset('v4_read', 'COUNTER', 0, 125000000000) + ->addDataset('v4_readdir', 'COUNTER', 0, 125000000000) + ->addDataset('v4_readlink', 'COUNTER', 0, 125000000000) + ->addDataset('v4_remove', 'COUNTER', 0, 125000000000) + ->addDataset('v4_rename', 'COUNTER', 0, 125000000000) + ->addDataset('v4_renew', 'COUNTER', 0, 125000000000) + ->addDataset('v4_restorefh', 'COUNTER', 0, 125000000000) + ->addDataset('v4_savefh', 'COUNTER', 0, 125000000000) + ->addDataset('v4_secinfo', 'COUNTER', 0, 125000000000) + ->addDataset('v4_setattr', 'COUNTER', 0, 125000000000) + ->addDataset('v4_setcltid', 'COUNTER', 0, 125000000000) + ->addDataset('v4_setcltidconf', 'COUNTER', 0, 125000000000) + ->addDataset('v4_verify', 'COUNTER', 0, 125000000000) + ->addDataset('v4_write', 'COUNTER', 0, 125000000000) + ->addDataset('v4_rellockowner', 'COUNTER', 0, 125000000000) + ->addDataset('v4_bc_ctl', 'COUNTER', 0, 125000000000) + ->addDataset('v4_bind_conn', 'COUNTER', 0, 125000000000) + ->addDataset('v4_exchange_id', 'COUNTER', 0, 125000000000) + ->addDataset('v4_create_ses', 'COUNTER', 0, 125000000000) + ->addDataset('v4_destroy_ses', 'COUNTER', 0, 125000000000) + ->addDataset('v4_free_stateid', 'COUNTER', 0, 125000000000) + ->addDataset('v4_getdirdeleg', 'COUNTER', 0, 125000000000) + ->addDataset('v4_getdevinfo', 'COUNTER', 0, 125000000000) + ->addDataset('v4_getdevlist', 'COUNTER', 0, 125000000000) + ->addDataset('v4_layoutcommit', 'COUNTER', 0, 125000000000) + ->addDataset('v4_layoutget', 'COUNTER', 0, 125000000000) + ->addDataset('v4_layoutreturn', 'COUNTER', 0, 125000000000) + ->addDataset('v4_secinfononam', 'COUNTER', 0, 125000000000) + ->addDataset('v4_sequence', 'COUNTER', 0, 125000000000) + ->addDataset('v4_set_ssv', 'COUNTER', 0, 125000000000) + ->addDataset('v4_test_stateid', 'COUNTER', 0, 125000000000) + ->addDataset('v4_want_deleg', 'COUNTER', 0, 125000000000) + ->addDataset('v4_destroy_clid', 'COUNTER', 0, 125000000000) + ->addDataset('v4_reclaim_comp', 'COUNTER', 0, 125000000000); /* examples output : rc 0 87795065 629022724 @@ -202,83 +197,82 @@ */ $keys_nfs_server = array( - 'rc' => array('th_hits', 'th_misses', 'th_nocache'), - 'fh' => array('fh_lookup', 'fh_anon', 'fh_ncachedir', 'fh_ncachenondir', 'fh_stale'), - 'io' => array('io_read', 'io_write'), - 'th' => array('th_threads', 'th_fullcnt', 'th_range01', 'th_range02', 'th_range03', 'th_range04', 'th_range05', 'th_range06', 'th_range07', 'th_range08', 'th_range09', 'th_range10'), - 'ra' => array('ra_cachesize', 'ra_range01', 'ra_range02', 'ra_range03', 'ra_range04', 'ra_range05', 'ra_range06', 'ra_range07', 'ra_range08', 'ra_range09', 'ra_range10', 'ra_notfound'), - 'net' => array('net_cnt', 'net_udp', 'net_tcp', 'net_tcpconn'), - 'rpc' => array('rpc_calls', 'rpc_badcount', 'rpc_badfmt', 'rpc_badauth', 'rpc_badclnt'), - 'proc2' => array('proc2_null', 'proc2_getattr', 'proc2_setattr', 'proc2_root', 'proc2_lookup','proc2_readlink', 'proc2_read', 'proc2_wrcache', 'proc2_write', 'proc2_create','proc2_remove', 'proc2_rename', 'proc2_link', 'proc2_symlink', 'proc2_mkdir','proc2_rmdir', 'proc2_readdir', 'proc2_fsstat'), - 'proc3' => array('proc3_null', 'proc3_getattr', 'proc3_setattr', 'proc3_lookup', 'proc3_access','proc3_readlink', 'proc3_read', 'proc3_write', 'proc3_create', 'proc3_mkdir','proc3_symlink', 'proc3_mknod', 'proc3_remove', 'proc3_rmdir', 'proc3_rename','proc3_link', 'proc3_readdir', 'proc3_readdirplus', 'proc3_fsstat', 'proc3_fsinfo', 'proc3_pathconf', 'proc3_commit'), - 'proc4' => array('proc4_null', 'proc4_compound'), - 'proc4ops' => array( - 'v4_op0-unused','v4_op1-unused','v4_op2-future','v4_access','v4_close', - 'v4_commit','v4_create','v4_delegpurge','v4_delegreturn','v4_getattr','v4_getfh', - 'v4_link','v4_lock','v4_lockt','v4_locku','v4_lookup','v4_lookup_root','v4_nverify', - 'v4_open','v4_openattr','v4_open_conf','v4_open_dgrd','v4_putfh','v4_putpubfh','v4_putrootfh', - 'v4_read','v4_readdir','v4_readlink','v4_remove','v4_rename','v4_renew','v4_restorefh','v4_savefh', - 'v4_secinfo','v4_setattr','v4_setcltid','v4_setcltidconf','v4_verify','v4_write','v4_rellockowner', - 'v4_bc_ctl','v4_bind_conn','v4_exchange_id','v4_create_ses','v4_destroy_ses','v4_free_stateid', - 'v4_getdirdeleg','v4_getdevinfo','v4_getdevlist','v4_layoutcommit','v4_layoutget','v4_layoutreturn', - 'v4_secinfononam','v4_sequence','v4_set_ssv','v4_test_stateid','v4_want_deleg','v4_destroy_clid', - 'v4_reclaim_comp') - ); + 'rc' => array('th_hits', 'th_misses', 'th_nocache'), + 'fh' => array('fh_lookup', 'fh_anon', 'fh_ncachedir', 'fh_ncachenondir', 'fh_stale'), + 'io' => array('io_read', 'io_write'), + 'th' => array('th_threads', 'th_fullcnt', 'th_range01', 'th_range02', 'th_range03', 'th_range04', 'th_range05', 'th_range06', 'th_range07', 'th_range08', 'th_range09', 'th_range10'), + 'ra' => array('ra_cachesize', 'ra_range01', 'ra_range02', 'ra_range03', 'ra_range04', 'ra_range05', 'ra_range06', 'ra_range07', 'ra_range08', 'ra_range09', 'ra_range10', 'ra_notfound'), + 'net' => array('net_cnt', 'net_udp', 'net_tcp', 'net_tcpconn'), + 'rpc' => array('rpc_calls', 'rpc_badcount', 'rpc_badfmt', 'rpc_badauth', 'rpc_badclnt'), + 'proc2' => array('proc2_null', 'proc2_getattr', 'proc2_setattr', 'proc2_root', 'proc2_lookup','proc2_readlink', 'proc2_read', 'proc2_wrcache', 'proc2_write', 'proc2_create','proc2_remove', 'proc2_rename', 'proc2_link', 'proc2_symlink', 'proc2_mkdir','proc2_rmdir', 'proc2_readdir', 'proc2_fsstat'), + 'proc3' => array('proc3_null', 'proc3_getattr', 'proc3_setattr', 'proc3_lookup', 'proc3_access','proc3_readlink', 'proc3_read', 'proc3_write', 'proc3_create', 'proc3_mkdir','proc3_symlink', 'proc3_mknod', 'proc3_remove', 'proc3_rmdir', 'proc3_rename','proc3_link', 'proc3_readdir', 'proc3_readdirplus', 'proc3_fsstat', 'proc3_fsinfo', 'proc3_pathconf', 'proc3_commit'), + 'proc4' => array('proc4_null', 'proc4_compound'), + 'proc4ops' => array( + 'v4_op0-unused','v4_op1-unused','v4_op2-future','v4_access','v4_close', + 'v4_commit','v4_create','v4_delegpurge','v4_delegreturn','v4_getattr','v4_getfh', + 'v4_link','v4_lock','v4_lockt','v4_locku','v4_lookup','v4_lookup_root','v4_nverify', + 'v4_open','v4_openattr','v4_open_conf','v4_open_dgrd','v4_putfh','v4_putpubfh','v4_putrootfh', + 'v4_read','v4_readdir','v4_readlink','v4_remove','v4_rename','v4_renew','v4_restorefh','v4_savefh', + 'v4_secinfo','v4_setattr','v4_setcltid','v4_setcltidconf','v4_verify','v4_write','v4_rellockowner', + 'v4_bc_ctl','v4_bind_conn','v4_exchange_id','v4_create_ses','v4_destroy_ses','v4_free_stateid', + 'v4_getdirdeleg','v4_getdevinfo','v4_getdevlist','v4_layoutcommit','v4_layoutget','v4_layoutreturn', + 'v4_secinfononam','v4_sequence','v4_set_ssv','v4_test_stateid','v4_want_deleg','v4_destroy_clid', + 'v4_reclaim_comp') + ); - -# parse each output line, by the id -# then 'map' the values to the arrays from $keys_nfs_server -$lines = explode("\n", $nfsstats); + +// parse each output line, by the id +// then 'map' the values to the arrays from $keys_nfs_server +$lines = explode("\n", $nfsstats); $default_fields = array(); $fields = array(); foreach ($lines as $line) { - $line_values = explode(" ", $line); - $line_id = $line_values[0]; - - # remove the line_id - array_shift($line_values); - - switch ($line_id) - { - case 'rc': - case 'fh': - case 'io': - case 'th': - case 'ra': - case 'net': - case 'rpc': - # combine keys + values, and then merge it in $fields array - $default_fields = array_merge($default_fields, array_combine($keys_nfs_server[$line_id], $line_values)); - break; - case 'proc2': - case 'proc3': - case 'proc4': - case 'proc4ops': - # note : proc2 is dropped for kernels 3.10.0+ (centos 7+) - # note : proc4ops has changed a few times, and getting the keys is difficult - # I only use the version which reports 59 value's (centos 6) - - # the first value of the proc* is the amount of fields that will follow; - # we check this, and if its incorrect, do not polute the chart with wrong values - $value_count = $line_values[0]; + $line_values = explode(" ", $line); + $line_id = $line_values[0]; + + // remove the line_id + array_shift($line_values); + + switch ($line_id) + { + case 'rc': + case 'fh': + case 'io': + case 'th': + case 'ra': + case 'net': + case 'rpc': + // combine keys + values, and then merge it in $fields array + $default_fields = array_merge($default_fields, array_combine($keys_nfs_server[$line_id], $line_values)); + break; + case 'proc2': + case 'proc3': + case 'proc4': + case 'proc4ops': + // note : proc2 is dropped for kernels 3.10.0+ (centos 7+) + // note : proc4ops has changed a few times, and getting the keys is difficult + // I only use the version which reports 59 value's (centos 6) + + // the first value of the proc* is the amount of fields that will follow; + // we check this, and if its incorrect, do not polute the chart with wrong values + $value_count = $line_values[0]; - if ($value_count == count($keys_nfs_server[$line_id])) - { - # pop the value_count - array_shift($line_values); - - $fields = array_merge($fields, array_combine($keys_nfs_server[$line_id], $line_values)); - - # create or push data to rrd - $tags = array('name' => $name, 'app_id' => $app['id'], 'rrd_name' => $rdd_name[$line_id], 'rrd_def' => $rrd_def[$line_id]); - data_update($device, 'app', $tags, $fields); - } - break; - } + if ($value_count == count($keys_nfs_server[$line_id])) { + // pop the value_count + array_shift($line_values); + + $fields = array_merge($fields, array_combine($keys_nfs_server[$line_id], $line_values)); + + // create or push data to rrd + $tags = array('name' => $name, 'app_id' => $app['id'], 'rrd_name' => $rdd_name[$line_id], 'rrd_def' => $rrd_def[$line_id]); + data_update($device, 'app', $tags, $fields); + } + break; + } } -# push the default data to rrd +// push the default data to rrd $tags = array('name' => $name, 'app_id' => $app['id'], 'rrd_name' => $rdd_name['default'], 'rrd_def' => $rrd_def['default']); data_update($device, 'app', $tags, $default_fields); From 770e34ef8be016e22b4d3d00212945cc464fe263 Mon Sep 17 00:00:00 2001 From: svennd Date: Thu, 6 Apr 2017 11:47:27 +0000 Subject: [PATCH 07/16] messed up --- .../{nfs-server.php => nfs-server.inc.php} | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) rename includes/polling/applications/{nfs-server.php => nfs-server.inc.php} (95%) diff --git a/includes/polling/applications/nfs-server.php b/includes/polling/applications/nfs-server.inc.php similarity index 95% rename from includes/polling/applications/nfs-server.php rename to includes/polling/applications/nfs-server.inc.php index 084af21141d2..b93a707081a2 100644 --- a/includes/polling/applications/nfs-server.php +++ b/includes/polling/applications/nfs-server.inc.php @@ -1,6 +1,7 @@ addDataset('rc_hits', 'COUNTER', 0, 125000000000) @@ -265,7 +260,7 @@ $fields = array_merge($fields, array_combine($keys_nfs_server[$line_id], $line_values)); // create or push data to rrd - $tags = array('name' => $name, 'app_id' => $app['id'], 'rrd_name' => $rdd_name[$line_id], 'rrd_def' => $rrd_def[$line_id]); + $tags = array('name' => $name, 'app_id' => $app['app_id'], 'rrd_name' => $rrd_name[$line_id], 'rrd_def' => $rrd_def[$line_id]); data_update($device, 'app', $tags, $fields); } break; @@ -273,7 +268,8 @@ } // push the default data to rrd -$tags = array('name' => $name, 'app_id' => $app['id'], 'rrd_name' => $rdd_name['default'], 'rrd_def' => $rrd_def['default']); +$tags = array('name' => $name, 'app_id' => $app['app_id'], 'rrd_name' => $rrd_name['default'], 'rrd_def' => $rrd_def['default']); + data_update($device, 'app', $tags, $default_fields); -unset($nfsstats, $rrd_name, $rrd_def, $data, $fields, $tags); \ No newline at end of file +unset($nfsstats, $rrd_name, $rrd_def, $data, $fields, $tags); From 7b2857765725136fd941a81ca8ac12a24b5a7aff Mon Sep 17 00:00:00 2001 From: svennd Date: Fri, 7 Apr 2017 11:58:15 +0200 Subject: [PATCH 08/16] stuck, please ignore --- .../polling/applications/nfs-server.inc.php | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/includes/polling/applications/nfs-server.inc.php b/includes/polling/applications/nfs-server.inc.php index b93a707081a2..729ff2ddf03f 100644 --- a/includes/polling/applications/nfs-server.inc.php +++ b/includes/polling/applications/nfs-server.inc.php @@ -11,27 +11,26 @@ update_application($app, $nfsstats); +$app_id = $app['app_id']; -// define the rrd names -$rrd_name['default'] = array('app', 'nfs-server-default', $app['app_id']); -$rrd_name['proc2'] = array('app', 'nfs-server-proc2', $app['app_id']); -$rrd_name['proc3'] = array('app', 'nfs-server-proc3', $app['app_id']); -$rrd_name['proc4'] = array('app', 'nfs-server-proc4', $app['app_id']); +// nfs description +$rrd_name['default'] = array('app', 'nfs-default', $app_id); +$rrd_name['proc2'] = array('app', 'nfs-proc2', $app_id); +$rrd_name['proc3'] = array('app', 'nfs-proc3', $app_id); +$rrd_name['proc4'] = array('app', 'nfs-proc4', $app_id); +$rrd_name['proc4ops'] = array('app', 'nfs-proc4ops', $app_id); $rrd_def['default'] = RrdDefinition::make() ->addDataset('rc_hits', 'COUNTER', 0, 125000000000) ->addDataset('rc_misses', 'COUNTER', 0, 125000000000) ->addDataset('rc_nocache', 'COUNTER', 0, 125000000000) - ->addDataset('fh_lookup', 'COUNTER', 0, 125000000000) ->addDataset('fh_anon', 'COUNTER', 0, 125000000000) ->addDataset('fh_ncachedir', 'COUNTER', 0, 125000000000) ->addDataset('fh_ncachenondir', 'COUNTER', 0, 125000000000) ->addDataset('fh_stale', 'COUNTER', 0, 125000000000) - ->addDataset('io_read', 'COUNTER', 0, 125000000000) ->addDataset('io_write', 'COUNTER', 0, 125000000000) - ->addDataset('th_threads', 'COUNTER', 0, 125000000000) ->addDataset('th_fullcnt', 'COUNTER', 0, 125000000000) ->addDataset('th_range01', 'GAUGE', 0, 125000000000) @@ -44,7 +43,6 @@ ->addDataset('th_range08', 'GAUGE', 0, 125000000000) ->addDataset('th_range09', 'GAUGE', 0, 125000000000) ->addDataset('th_range10', 'GAUGE', 0, 125000000000) - ->addDataset('ra_cachesize', 'GAUGE', 0, 125000000000) ->addDataset('ra_range01', 'GAUGE', 0, 125000000000) ->addDataset('ra_range02', 'GAUGE', 0, 125000000000) @@ -57,12 +55,10 @@ ->addDataset('ra_range09', 'GAUGE', 0, 125000000000) ->addDataset('ra_range10', 'GAUGE', 0, 125000000000) ->addDataset('ra_notfound', 'GAUGE', 0, 125000000000) - ->addDataset('net_cnt', 'COUNTER', 0, 125000000000) ->addDataset('net_udp', 'COUNTER', 0, 125000000000) ->addDataset('net_tcp', 'COUNTER', 0, 125000000000) ->addDataset('net_tcpconn', 'COUNTER', 0, 125000000000) - ->addDataset('rpc_calls', 'COUNTER', 0, 125000000000) ->addDataset('rpc_badcount', 'COUNTER', 0, 125000000000) ->addDataset('rpc_badfmt', 'COUNTER', 0, 125000000000) @@ -116,7 +112,9 @@ $rrd_def['proc4'] = RrdDefinition::make() ->addDataset('proc4_null', 'COUNTER', 0, 125000000000) ->addDataset('proc4_compound', 'COUNTER', 0, 125000000000) - +; + +$rrd_def['proc4ops'] = RrdDefinition::make() ->addDataset('v4_op0-unused', 'COUNTER', 0, 125000000000) ->addDataset('v4_op1-unused', 'COUNTER', 0, 125000000000) ->addDataset('v4_op2-future', 'COUNTER', 0, 125000000000) @@ -257,11 +255,12 @@ // pop the value_count array_shift($line_values); - $fields = array_merge($fields, array_combine($keys_nfs_server[$line_id], $line_values)); + $fields = array_combine($keys_nfs_server[$line_id], $line_values); // create or push data to rrd $tags = array('name' => $name, 'app_id' => $app['app_id'], 'rrd_name' => $rrd_name[$line_id], 'rrd_def' => $rrd_def[$line_id]); - data_update($device, 'app', $tags, $fields); + data_update($device, 'app', $tags, $fields); + } break; } @@ -270,6 +269,10 @@ // push the default data to rrd $tags = array('name' => $name, 'app_id' => $app['app_id'], 'rrd_name' => $rrd_name['default'], 'rrd_def' => $rrd_def['default']); +echo "defaults\n"; +print_r($tags); +print_r($default_fields); data_update($device, 'app', $tags, $default_fields); unset($nfsstats, $rrd_name, $rrd_def, $data, $fields, $tags); + From f8a47fb9678f5a9f4cd23925dc181dab603b90b4 Mon Sep 17 00:00:00 2001 From: svennd Date: Thu, 13 Apr 2017 10:42:30 +0200 Subject: [PATCH 09/16] applied reviews murrant suggestions applied reviews murrant suggestions --- includes/polling/applications/nfs-server.inc.php | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/includes/polling/applications/nfs-server.inc.php b/includes/polling/applications/nfs-server.inc.php index 729ff2ddf03f..4d1dfc00ee61 100644 --- a/includes/polling/applications/nfs-server.inc.php +++ b/includes/polling/applications/nfs-server.inc.php @@ -222,11 +222,8 @@ foreach ($lines as $line) { $line_values = explode(" ", $line); - $line_id = $line_values[0]; - - // remove the line_id - array_shift($line_values); - + $line_id = array_shift($line_values); + switch ($line_id) { case 'rc': @@ -249,11 +246,9 @@ // the first value of the proc* is the amount of fields that will follow; // we check this, and if its incorrect, do not polute the chart with wrong values - $value_count = $line_values[0]; + $value_count = array_shift($line_values); if ($value_count == count($keys_nfs_server[$line_id])) { - // pop the value_count - array_shift($line_values); $fields = array_combine($keys_nfs_server[$line_id], $line_values); @@ -269,9 +264,6 @@ // push the default data to rrd $tags = array('name' => $name, 'app_id' => $app['app_id'], 'rrd_name' => $rrd_name['default'], 'rrd_def' => $rrd_def['default']); -echo "defaults\n"; -print_r($tags); -print_r($default_fields); data_update($device, 'app', $tags, $default_fields); unset($nfsstats, $rrd_name, $rrd_def, $data, $fields, $tags); From 4909d7e17f702effac725f83bb2068cbcd34ffa8 Mon Sep 17 00:00:00 2001 From: svennd Date: Fri, 14 Apr 2017 10:30:06 +0200 Subject: [PATCH 10/16] dirty scope dirty scope was the issue --- .../graphs/application/nfs-server_io.inc.php | 2 +- .../graphs/application/nfs-server_net.inc.php | 2 +- .../nfs-server_net_tcp_conns.inc.php | 2 +- .../graphs/application/nfs-server_ra.inc.php | 2 +- .../graphs/application/nfs-server_rc.inc.php | 2 +- .../graphs/application/nfs-server_rpc.inc.php | 2 +- .../application/nfs-server_stats.inc.php | 2 +- .../application/nfs-server_stats_v2.inc.php | 2 +- .../application/nfs-server_stats_v4.inc.php | 6 +-- .../application/nfs-server_v4ops.inc.php | 2 +- .../polling/applications/nfs-server.inc.php | 43 ++++++++++--------- 11 files changed, 35 insertions(+), 32 deletions(-) diff --git a/html/includes/graphs/application/nfs-server_io.inc.php b/html/includes/graphs/application/nfs-server_io.inc.php index d2a0549ded1b..e179eca1ac03 100644 --- a/html/includes/graphs/application/nfs-server_io.inc.php +++ b/html/includes/graphs/application/nfs-server_io.inc.php @@ -10,7 +10,7 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-'.$app['app_id'].'.rrd'; +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; $array = array( 'io_read' => array('descr' => 'read','colour' => '2B9220',), 'io_write' => array('descr' => 'write','colour' => 'B0262D',), diff --git a/html/includes/graphs/application/nfs-server_net.inc.php b/html/includes/graphs/application/nfs-server_net.inc.php index 6c93b9c6cf57..ef47859710c8 100644 --- a/html/includes/graphs/application/nfs-server_net.inc.php +++ b/html/includes/graphs/application/nfs-server_net.inc.php @@ -10,7 +10,7 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-'.$app['app_id'].'.rrd'; +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; $array = array( // 'net_all' => array('descr' => 'total','colour' => '000000',), this is udp+tcp 'net_udp' => array('descr' => 'udp','colour' => 'AA3F39',), diff --git a/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php b/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php index 1cc5560f78a8..eb6c3133f168 100644 --- a/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php +++ b/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php @@ -9,6 +9,6 @@ $colour_area_max = 'FFEE99'; $graph_max = 10000; $unit_text = 'net tcp connections'; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-'.$app['app_id'].'.rrd'; +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; require 'includes/graphs/generic_simplex.inc.php'; \ No newline at end of file diff --git a/html/includes/graphs/application/nfs-server_ra.inc.php b/html/includes/graphs/application/nfs-server_ra.inc.php index 000c06515fea..432c6b340c54 100644 --- a/html/includes/graphs/application/nfs-server_ra.inc.php +++ b/html/includes/graphs/application/nfs-server_ra.inc.php @@ -10,7 +10,7 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-'.$app['app_id'].'.rrd'; +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; $array = array( 'ra_range01' => array('descr' => '0%-10%'), diff --git a/html/includes/graphs/application/nfs-server_rc.inc.php b/html/includes/graphs/application/nfs-server_rc.inc.php index 3634a25eb9e3..503e069018ad 100644 --- a/html/includes/graphs/application/nfs-server_rc.inc.php +++ b/html/includes/graphs/application/nfs-server_rc.inc.php @@ -9,7 +9,7 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-'.$app['app_id'].'.rrd'; +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; $array = array( 'rc_hits' => array('descr' => 'hits','colour' => 'B0262D'), // this is bad : retransmitting (red) 'rc_misses' => array('descr' => 'misses','colour' => 'B36326'), // requires caching diff --git a/html/includes/graphs/application/nfs-server_rpc.inc.php b/html/includes/graphs/application/nfs-server_rpc.inc.php index e2ccc1451e32..9b55725959d8 100644 --- a/html/includes/graphs/application/nfs-server_rpc.inc.php +++ b/html/includes/graphs/application/nfs-server_rpc.inc.php @@ -10,7 +10,7 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-'.$app['app_id'].'.rrd'; +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; $array = array( 'rpc_calls' => array('descr' => 'calls','colour' => '2C8437',), // green : good //'rpc_badcalls' => array('descr' => 'bad calls','colour' => '600604',), # this is a sum of nbadfmt, badauth and badclnt diff --git a/html/includes/graphs/application/nfs-server_stats.inc.php b/html/includes/graphs/application/nfs-server_stats.inc.php index 826b65153909..03ddb3dee812 100644 --- a/html/includes/graphs/application/nfs-server_stats.inc.php +++ b/html/includes/graphs/application/nfs-server_stats.inc.php @@ -10,7 +10,7 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-'.$app['app_id'].'.rrd'; +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-proc3-'.$app['app_id'].'.rrd'; $array = array( 'proc3_null' => array('descr' => 'Null'), 'proc3_getattr' => array('descr' => 'Get attributes'), diff --git a/html/includes/graphs/application/nfs-server_stats_v2.inc.php b/html/includes/graphs/application/nfs-server_stats_v2.inc.php index f85796a44d25..8a94613137dd 100644 --- a/html/includes/graphs/application/nfs-server_stats_v2.inc.php +++ b/html/includes/graphs/application/nfs-server_stats_v2.inc.php @@ -10,7 +10,7 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-'.$app['app_id'].'.rrd'; +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-proc2-'.$app['app_id'].'.rrd'; $array = array( 'proc2_null' => array('descr' => 'Null'), 'proc2_getattr' => array('descr' => 'Get attributes'), diff --git a/html/includes/graphs/application/nfs-server_stats_v4.inc.php b/html/includes/graphs/application/nfs-server_stats_v4.inc.php index fb2d98105f59..ad688c469bcf 100644 --- a/html/includes/graphs/application/nfs-server_stats_v4.inc.php +++ b/html/includes/graphs/application/nfs-server_stats_v4.inc.php @@ -10,10 +10,10 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-'.$app['app_id'].'.rrd'; +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-proc4-'.$app['app_id'].'.rrd'; $array = array( - 'proc4_null' => array('descr' => 'Null','colour' => '630606',), - 'proc4_compound' => array('descr' => 'Compound','colour' => '50C150',) + 'proc4_null' => array('descr' => 'Null','colour' => '630606'), // these should be very low + 'proc4_compound' => array('descr' => 'Compound','colour' => '50C150') // basically this are 1 or more ops ); $i = 0; diff --git a/html/includes/graphs/application/nfs-server_v4ops.inc.php b/html/includes/graphs/application/nfs-server_v4ops.inc.php index f16938ae9a06..6986fd8969b8 100644 --- a/html/includes/graphs/application/nfs-server_v4ops.inc.php +++ b/html/includes/graphs/application/nfs-server_v4ops.inc.php @@ -10,7 +10,7 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-'.$app['app_id'].'.rrd'; +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-proc4ops-'.$app['app_id'].'.rrd'; $array = array( // 'v4_op0-unused' => array('descr' => 'v4_op0-unused'), // 'v4_op1-unused' => array('descr' => 'v4_op1-unused'), diff --git a/includes/polling/applications/nfs-server.inc.php b/includes/polling/applications/nfs-server.inc.php index 4d1dfc00ee61..a2baad508333 100644 --- a/includes/polling/applications/nfs-server.inc.php +++ b/includes/polling/applications/nfs-server.inc.php @@ -13,14 +13,17 @@ $app_id = $app['app_id']; -// nfs description -$rrd_name['default'] = array('app', 'nfs-default', $app_id); -$rrd_name['proc2'] = array('app', 'nfs-proc2', $app_id); -$rrd_name['proc3'] = array('app', 'nfs-proc3', $app_id); -$rrd_name['proc4'] = array('app', 'nfs-proc4', $app_id); -$rrd_name['proc4ops'] = array('app', 'nfs-proc4ops', $app_id); +// rrd names +$rrd_name = array(); +$rrd_name['default'] = array('app', 'nfs-server-default', $app_id); +$rrd_name['proc2'] = array('app', 'nfs-server-proc2', $app_id); +$rrd_name['proc3'] = array('app', 'nfs-server-proc3', $app_id); +$rrd_name['proc4'] = array('app', 'nfs-server-proc4', $app_id); +$rrd_name['proc4ops'] = array('app', 'nfs-server-proc4ops', $app_id); -$rrd_def['default'] = RrdDefinition::make() + +// rrd definitions +$rrd_def_array['default'] = RrdDefinition::make() ->addDataset('rc_hits', 'COUNTER', 0, 125000000000) ->addDataset('rc_misses', 'COUNTER', 0, 125000000000) ->addDataset('rc_nocache', 'COUNTER', 0, 125000000000) @@ -65,8 +68,8 @@ ->addDataset('rpc_badauth', 'COUNTER', 0, 125000000000) ->addDataset('rpc_badclnt', 'COUNTER', 0, 125000000000); -$rrd_def['proc2'] = RrdDefinition::make() - ->addDataset('proc2_null', 'COUNTER', 0, 125000000000) +$rrd_def_array['proc2'] = RrdDefinition::make() + ->addDataset('proc2_null', 'COUNTER', 0, 125000000000) ->addDataset('proc2_getattr', 'COUNTER', 0, 125000000000) ->addDataset('proc2_setattr', 'COUNTER', 0, 125000000000) ->addDataset('proc2_root', 'COUNTER', 0, 125000000000) @@ -85,7 +88,7 @@ ->addDataset('proc2_readdir', 'COUNTER', 0, 125000000000) ->addDataset('proc2_fsstat', 'COUNTER', 0, 125000000000); -$rrd_def['proc3'] = RrdDefinition::make() +$rrd_def_array['proc3'] = RrdDefinition::make() ->addDataset('proc3_null', 'COUNTER', 0, 125000000000) ->addDataset('proc3_getattr', 'COUNTER', 0, 125000000000) ->addDataset('proc3_setattr', 'COUNTER', 0, 125000000000) @@ -109,12 +112,12 @@ ->addDataset('proc3_pathconf', 'COUNTER', 0, 125000000000) ->addDataset('proc3_commit', 'COUNTER', 0, 125000000000); -$rrd_def['proc4'] = RrdDefinition::make() +$rrd_def_array['proc4'] = RrdDefinition::make() ->addDataset('proc4_null', 'COUNTER', 0, 125000000000) ->addDataset('proc4_compound', 'COUNTER', 0, 125000000000) ; -$rrd_def['proc4ops'] = RrdDefinition::make() +$rrd_def_array['proc4ops'] = RrdDefinition::make() ->addDataset('v4_op0-unused', 'COUNTER', 0, 125000000000) ->addDataset('v4_op1-unused', 'COUNTER', 0, 125000000000) ->addDataset('v4_op2-future', 'COUNTER', 0, 125000000000) @@ -218,7 +221,7 @@ // then 'map' the values to the arrays from $keys_nfs_server $lines = explode("\n", $nfsstats); $default_fields = array(); -$fields = array(); + foreach ($lines as $line) { $line_values = explode(" ", $line); @@ -253,18 +256,18 @@ $fields = array_combine($keys_nfs_server[$line_id], $line_values); // create or push data to rrd - $tags = array('name' => $name, 'app_id' => $app['app_id'], 'rrd_name' => $rrd_name[$line_id], 'rrd_def' => $rrd_def[$line_id]); - data_update($device, 'app', $tags, $fields); + $tags = array('name' => $name, 'app_id' => $app['app_id'], 'rrd_name' => $rrd_name[$line_id], 'rrd_def' => $rrd_def_array[$line_id]); + + data_update($device, 'app', $tags, $fields); } break; } } -// push the default data to rrd -$tags = array('name' => $name, 'app_id' => $app['app_id'], 'rrd_name' => $rrd_name['default'], 'rrd_def' => $rrd_def['default']); - +// push the default nfs server data to rrd +$tags = array('name' => $name, 'app_id' => $app['app_id'], 'rrd_name' => $rrd_name['default'], 'rrd_def' => $rrd_def_array['default']); data_update($device, 'app', $tags, $default_fields); -unset($nfsstats, $rrd_name, $rrd_def, $data, $fields, $tags); - +// clean up scope +unset($nfsstats, $rrd_name, $rrd_def_array, $default_fields, $fields, $tags); From 964ccfc8da878f7af0503cb3544f6576a1384452 Mon Sep 17 00:00:00 2001 From: svennd Date: Fri, 14 Apr 2017 11:15:02 +0200 Subject: [PATCH 11/16] style fix ? --- .../nfs-server_net_tcp_conns.inc.php | 16 +-- .../application/nfs-server_stats_v4.inc.php | 4 +- .../application/nfs-server_v4ops.inc.php | 118 +++++++++--------- .../polling/applications/nfs-server.inc.php | 7 +- 4 files changed, 72 insertions(+), 73 deletions(-) diff --git a/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php b/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php index eb6c3133f168..7ebdc266eccf 100644 --- a/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php +++ b/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php @@ -2,13 +2,13 @@ require 'includes/graphs/common.inc.php'; -$scale_min = 0; -$ds = 'net_tcpconn'; -$colour_area = '9DDA52'; -$colour_line = '2EAC6D'; -$colour_area_max = 'FFEE99'; -$graph_max = 10000; -$unit_text = 'net tcp connections'; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; +$scale_min = 0; +$ds = 'net_tcpconn'; +$colour_area = '9DDA52'; +$colour_line = '2EAC6D'; +$colour_area_max = 'FFEE99'; +$graph_max = 10000; +$unit_text = 'net tcp connections'; +$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; require 'includes/graphs/generic_simplex.inc.php'; \ No newline at end of file diff --git a/html/includes/graphs/application/nfs-server_stats_v4.inc.php b/html/includes/graphs/application/nfs-server_stats_v4.inc.php index ad688c469bcf..82274302bd06 100644 --- a/html/includes/graphs/application/nfs-server_stats_v4.inc.php +++ b/html/includes/graphs/application/nfs-server_stats_v4.inc.php @@ -12,8 +12,8 @@ $transparency = 33; $rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-proc4-'.$app['app_id'].'.rrd'; $array = array( - 'proc4_null' => array('descr' => 'Null','colour' => '630606'), // these should be very low - 'proc4_compound' => array('descr' => 'Compound','colour' => '50C150') // basically this are 1 or more ops + 'proc4_null' => array('descr' => 'Null','colour' => '630606'), // these should be very low + 'proc4_compound' => array('descr' => 'Compound','colour' => '50C150') // basically this are 1 or more ops ); $i = 0; diff --git a/html/includes/graphs/application/nfs-server_v4ops.inc.php b/html/includes/graphs/application/nfs-server_v4ops.inc.php index 6986fd8969b8..d81979efa317 100644 --- a/html/includes/graphs/application/nfs-server_v4ops.inc.php +++ b/html/includes/graphs/application/nfs-server_v4ops.inc.php @@ -12,65 +12,65 @@ $transparency = 33; $rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-proc4ops-'.$app['app_id'].'.rrd'; $array = array( - // 'v4_op0-unused' => array('descr' => 'v4_op0-unused'), - // 'v4_op1-unused' => array('descr' => 'v4_op1-unused'), - // 'v4_op2-future' => array('descr' => 'v4_op2-future'), - 'v4_access' => array('descr' => 'v4_access'), - 'v4_close' => array('descr' => 'v4_close'), - 'v4_commit' => array('descr' => 'v4_commit'), - 'v4_create' => array('descr' => 'v4_create'), - 'v4_delegpurge' => array('descr' => 'v4_delegpurge'), - 'v4_delegreturn' => array('descr' => 'v4_delegreturn'), - 'v4_getattr' => array('descr' => 'v4_getattr'), - 'v4_getfh' => array('descr' => 'v4_getfh'), - 'v4_link' => array('descr' => 'v4_link'), - 'v4_lock' => array('descr' => 'v4_lock'), - 'v4_lockt' => array('descr' => 'v4_lockt'), - 'v4_locku' => array('descr' => 'v4_locku'), - 'v4_lookup' => array('descr' => 'v4_lookup'), - 'v4_lookup_root' => array('descr' => 'v4_lookup_root'), - 'v4_nverify' => array('descr' => 'v4_nverify'), - 'v4_open' => array('descr' => 'v4_open'), - 'v4_openattr' => array('descr' => 'v4_openattr'), - 'v4_open_conf' => array('descr' => 'v4_open_conf'), - 'v4_open_dgrd' => array('descr' => 'v4_open_dgrd'), - 'v4_putfh' => array('descr' => 'v4_putfh'), - 'v4_putpubfh' => array('descr' => 'v4_putpubfh'), - 'v4_putrootfh' => array('descr' => 'v4_putrootfh'), - 'v4_read' => array('descr' => 'v4_read'), - 'v4_readdir' => array('descr' => 'v4_readdir'), - 'v4_readlink' => array('descr' => 'v4_readlink'), - 'v4_remove' => array('descr' => 'v4_remove'), - 'v4_rename' => array('descr' => 'v4_rename'), - 'v4_renew' => array('descr' => 'v4_renew'), - 'v4_restorefh' => array('descr' => 'v4_restorefh'), - 'v4_savefh' => array('descr' => 'v4_savefh'), - 'v4_secinfo' => array('descr' => 'v4_secinfo'), - 'v4_setattr' => array('descr' => 'v4_setattr'), - 'v4_setcltid' => array('descr' => 'v4_setcltid'), - 'v4_setcltidconf' => array('descr' => 'v4_setcltidconf'), - 'v4_verify' => array('descr' => 'v4_verify'), - 'v4_write' => array('descr' => 'v4_write'), - 'v4_rellockowner' => array('descr' => 'v4_rellockowner'), - 'v4_bc_ctl' => array('descr' => 'v4_bc_ctl'), - 'v4_bind_conn' => array('descr' => 'v4_bind_conn'), - 'v4_exchange_id' => array('descr' => 'v4_exchange_id'), - 'v4_create_ses' => array('descr' => 'v4_create_ses'), - 'v4_destroy_ses' => array('descr' => 'v4_destroy_ses'), - 'v4_free_stateid' => array('descr' => 'v4_free_stateid'), - 'v4_getdirdeleg' => array('descr' => 'v4_getdirdeleg'), - 'v4_getdevinfo' => array('descr' => 'v4_getdevinfo'), - 'v4_getdevlist' => array('descr' => 'v4_getdevlist'), - 'v4_layoutcommit' => array('descr' => 'v4_layoutcommit'), - 'v4_layoutget' => array('descr' => 'v4_layoutget'), - 'v4_layoutreturn' => array('descr' => 'v4_layoutreturn'), - 'v4_secinfononam' => array('descr' => 'v4_secinfononam'), - 'v4_sequence' => array('descr' => 'v4_sequence'), - 'v4_set_ssv' => array('descr' => 'v4_set_ssv'), - 'v4_test_stateid' => array('descr' => 'v4_test_stateid'), - 'v4_want_deleg' => array('descr' => 'v4_want_deleg'), - 'v4_destroy_clid' => array('descr' => 'v4_destroy_clid'), - 'v4_reclaim_comp' => array('descr' => 'v4_reclaim_comp'), + // 'v4_op0-unused' => array('descr' => 'v4_op0-unused'), + // 'v4_op1-unused' => array('descr' => 'v4_op1-unused'), + // 'v4_op2-future' => array('descr' => 'v4_op2-future'), + 'v4_access' => array('descr' => 'v4_access'), + 'v4_close' => array('descr' => 'v4_close'), + 'v4_commit' => array('descr' => 'v4_commit'), + 'v4_create' => array('descr' => 'v4_create'), + 'v4_delegpurge' => array('descr' => 'v4_delegpurge'), + 'v4_delegreturn' => array('descr' => 'v4_delegreturn'), + 'v4_getattr' => array('descr' => 'v4_getattr'), + 'v4_getfh' => array('descr' => 'v4_getfh'), + 'v4_link' => array('descr' => 'v4_link'), + 'v4_lock' => array('descr' => 'v4_lock'), + 'v4_lockt' => array('descr' => 'v4_lockt'), + 'v4_locku' => array('descr' => 'v4_locku'), + 'v4_lookup' => array('descr' => 'v4_lookup'), + 'v4_lookup_root' => array('descr' => 'v4_lookup_root'), + 'v4_nverify' => array('descr' => 'v4_nverify'), + 'v4_open' => array('descr' => 'v4_open'), + 'v4_openattr' => array('descr' => 'v4_openattr'), + 'v4_open_conf' => array('descr' => 'v4_open_conf'), + 'v4_open_dgrd' => array('descr' => 'v4_open_dgrd'), + 'v4_putfh' => array('descr' => 'v4_putfh'), + 'v4_putpubfh' => array('descr' => 'v4_putpubfh'), + 'v4_putrootfh' => array('descr' => 'v4_putrootfh'), + 'v4_read' => array('descr' => 'v4_read'), + 'v4_readdir' => array('descr' => 'v4_readdir'), + 'v4_readlink' => array('descr' => 'v4_readlink'), + 'v4_remove' => array('descr' => 'v4_remove'), + 'v4_rename' => array('descr' => 'v4_rename'), + 'v4_renew' => array('descr' => 'v4_renew'), + 'v4_restorefh' => array('descr' => 'v4_restorefh'), + 'v4_savefh' => array('descr' => 'v4_savefh'), + 'v4_secinfo' => array('descr' => 'v4_secinfo'), + 'v4_setattr' => array('descr' => 'v4_setattr'), + 'v4_setcltid' => array('descr' => 'v4_setcltid'), + 'v4_setcltidconf' => array('descr' => 'v4_setcltidconf'), + 'v4_verify' => array('descr' => 'v4_verify'), + 'v4_write' => array('descr' => 'v4_write'), + 'v4_rellockowner' => array('descr' => 'v4_rellockowner'), + 'v4_bc_ctl' => array('descr' => 'v4_bc_ctl'), + 'v4_bind_conn' => array('descr' => 'v4_bind_conn'), + 'v4_exchange_id' => array('descr' => 'v4_exchange_id'), + 'v4_create_ses' => array('descr' => 'v4_create_ses'), + 'v4_destroy_ses' => array('descr' => 'v4_destroy_ses'), + 'v4_free_stateid' => array('descr' => 'v4_free_stateid'), + 'v4_getdirdeleg' => array('descr' => 'v4_getdirdeleg'), + 'v4_getdevinfo' => array('descr' => 'v4_getdevinfo'), + 'v4_getdevlist' => array('descr' => 'v4_getdevlist'), + 'v4_layoutcommit' => array('descr' => 'v4_layoutcommit'), + 'v4_layoutget' => array('descr' => 'v4_layoutget'), + 'v4_layoutreturn' => array('descr' => 'v4_layoutreturn'), + 'v4_secinfononam' => array('descr' => 'v4_secinfononam'), + 'v4_sequence' => array('descr' => 'v4_sequence'), + 'v4_set_ssv' => array('descr' => 'v4_set_ssv'), + 'v4_test_stateid' => array('descr' => 'v4_test_stateid'), + 'v4_want_deleg' => array('descr' => 'v4_want_deleg'), + 'v4_destroy_clid' => array('descr' => 'v4_destroy_clid'), + 'v4_reclaim_comp' => array('descr' => 'v4_reclaim_comp'), ); $i = 0; diff --git a/includes/polling/applications/nfs-server.inc.php b/includes/polling/applications/nfs-server.inc.php index a2baad508333..91d2f119a5b4 100644 --- a/includes/polling/applications/nfs-server.inc.php +++ b/includes/polling/applications/nfs-server.inc.php @@ -69,7 +69,7 @@ ->addDataset('rpc_badclnt', 'COUNTER', 0, 125000000000); $rrd_def_array['proc2'] = RrdDefinition::make() - ->addDataset('proc2_null', 'COUNTER', 0, 125000000000) + ->addDataset('proc2_null', 'COUNTER', 0, 125000000000) ->addDataset('proc2_getattr', 'COUNTER', 0, 125000000000) ->addDataset('proc2_setattr', 'COUNTER', 0, 125000000000) ->addDataset('proc2_root', 'COUNTER', 0, 125000000000) @@ -114,8 +114,7 @@ $rrd_def_array['proc4'] = RrdDefinition::make() ->addDataset('proc4_null', 'COUNTER', 0, 125000000000) - ->addDataset('proc4_compound', 'COUNTER', 0, 125000000000) -; + ->addDataset('proc4_compound', 'COUNTER', 0, 125000000000); $rrd_def_array['proc4ops'] = RrdDefinition::make() ->addDataset('v4_op0-unused', 'COUNTER', 0, 125000000000) @@ -258,7 +257,7 @@ // create or push data to rrd $tags = array('name' => $name, 'app_id' => $app['app_id'], 'rrd_name' => $rrd_name[$line_id], 'rrd_def' => $rrd_def_array[$line_id]); - data_update($device, 'app', $tags, $fields); + data_update($device, 'app', $tags, $fields); } break; From 02d8fa09290e869ae4f8f90b21016be11b207b3a Mon Sep 17 00:00:00 2001 From: svennd Date: Fri, 14 Apr 2017 12:30:27 +0200 Subject: [PATCH 12/16] style PSR2 --- html/includes/functions.inc.php | 2 +- .../graphs/application/nfs-server_net.inc.php | 2 +- .../nfs-server_net_tcp_conns.inc.php | 2 +- .../application/nfs-server_stats_v4.inc.php | 2 +- .../polling/applications/nfs-server.inc.php | 73 +++++++++---------- 5 files changed, 39 insertions(+), 42 deletions(-) diff --git a/html/includes/functions.inc.php b/html/includes/functions.inc.php index 6ec010290493..0a30592a06ad 100644 --- a/html/includes/functions.inc.php +++ b/html/includes/functions.inc.php @@ -72,7 +72,7 @@ function nicecase($item) case 'nfs-v3-stats': return 'NFS v3 Stats'; - + case 'nfs-server': return 'NFS Server'; diff --git a/html/includes/graphs/application/nfs-server_net.inc.php b/html/includes/graphs/application/nfs-server_net.inc.php index ef47859710c8..aa440aeab178 100644 --- a/html/includes/graphs/application/nfs-server_net.inc.php +++ b/html/includes/graphs/application/nfs-server_net.inc.php @@ -15,7 +15,7 @@ // 'net_all' => array('descr' => 'total','colour' => '000000',), this is udp+tcp 'net_udp' => array('descr' => 'udp','colour' => 'AA3F39',), 'net_tcp' => array('descr' => 'tcp','colour' => '2C8437',), - // 'net_tcpconn' => array('descr' => 'tcp conn','colour' => '576996',), this is tcp connections + // 'net_tcpconn' => array('descr' => 'tcp conn','colour' => '576996',), this is tcp connections ); $i = 0; diff --git a/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php b/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php index 7ebdc266eccf..f945afea79f6 100644 --- a/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php +++ b/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php @@ -11,4 +11,4 @@ $unit_text = 'net tcp connections'; $rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; -require 'includes/graphs/generic_simplex.inc.php'; \ No newline at end of file +require 'includes/graphs/generic_simplex.inc.php'; diff --git a/html/includes/graphs/application/nfs-server_stats_v4.inc.php b/html/includes/graphs/application/nfs-server_stats_v4.inc.php index 82274302bd06..e2d035ced4f3 100644 --- a/html/includes/graphs/application/nfs-server_stats_v4.inc.php +++ b/html/includes/graphs/application/nfs-server_stats_v4.inc.php @@ -12,7 +12,7 @@ $transparency = 33; $rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-proc4-'.$app['app_id'].'.rrd'; $array = array( - 'proc4_null' => array('descr' => 'Null','colour' => '630606'), // these should be very low + 'proc4_null' => array('descr' => 'Null','colour' => '630606'), // these should be very low 'proc4_compound' => array('descr' => 'Compound','colour' => '50C150') // basically this are 1 or more ops ); diff --git a/includes/polling/applications/nfs-server.inc.php b/includes/polling/applications/nfs-server.inc.php index 91d2f119a5b4..8c0a66e93b61 100644 --- a/includes/polling/applications/nfs-server.inc.php +++ b/includes/polling/applications/nfs-server.inc.php @@ -1,4 +1,5 @@ addDataset('rc_hits', 'COUNTER', 0, 125000000000) + ->addDataset('rc_hits', 'COUNTER', 0, 125000000000) ->addDataset('rc_misses', 'COUNTER', 0, 125000000000) ->addDataset('rc_nocache', 'COUNTER', 0, 125000000000) ->addDataset('fh_lookup', 'COUNTER', 0, 125000000000) @@ -68,7 +69,7 @@ ->addDataset('rpc_badauth', 'COUNTER', 0, 125000000000) ->addDataset('rpc_badclnt', 'COUNTER', 0, 125000000000); -$rrd_def_array['proc2'] = RrdDefinition::make() +$rrd_def_array['proc2'] = RrdDefinition::make() ->addDataset('proc2_null', 'COUNTER', 0, 125000000000) ->addDataset('proc2_getattr', 'COUNTER', 0, 125000000000) ->addDataset('proc2_setattr', 'COUNTER', 0, 125000000000) @@ -88,7 +89,7 @@ ->addDataset('proc2_readdir', 'COUNTER', 0, 125000000000) ->addDataset('proc2_fsstat', 'COUNTER', 0, 125000000000); -$rrd_def_array['proc3'] = RrdDefinition::make() +$rrd_def_array['proc3'] = RrdDefinition::make() ->addDataset('proc3_null', 'COUNTER', 0, 125000000000) ->addDataset('proc3_getattr', 'COUNTER', 0, 125000000000) ->addDataset('proc3_setattr', 'COUNTER', 0, 125000000000) @@ -112,11 +113,11 @@ ->addDataset('proc3_pathconf', 'COUNTER', 0, 125000000000) ->addDataset('proc3_commit', 'COUNTER', 0, 125000000000); -$rrd_def_array['proc4'] = RrdDefinition::make() +$rrd_def_array['proc4'] = RrdDefinition::make() ->addDataset('proc4_null', 'COUNTER', 0, 125000000000) ->addDataset('proc4_compound', 'COUNTER', 0, 125000000000); -$rrd_def_array['proc4ops'] = RrdDefinition::make() +$rrd_def_array['proc4ops'] = RrdDefinition::make() ->addDataset('v4_op0-unused', 'COUNTER', 0, 125000000000) ->addDataset('v4_op1-unused', 'COUNTER', 0, 125000000000) ->addDataset('v4_op2-future', 'COUNTER', 0, 125000000000) @@ -221,46 +222,42 @@ $lines = explode("\n", $nfsstats); $default_fields = array(); -foreach ($lines as $line) -{ +foreach ($lines as $line) { $line_values = explode(" ", $line); $line_id = array_shift($line_values); - switch ($line_id) - { - case 'rc': - case 'fh': - case 'io': - case 'th': - case 'ra': - case 'net': - case 'rpc': - // combine keys + values, and then merge it in $fields array - $default_fields = array_merge($default_fields, array_combine($keys_nfs_server[$line_id], $line_values)); - break; - case 'proc2': - case 'proc3': - case 'proc4': - case 'proc4ops': - // note : proc2 is dropped for kernels 3.10.0+ (centos 7+) - // note : proc4ops has changed a few times, and getting the keys is difficult - // I only use the version which reports 59 value's (centos 6) + switch ($line_id) { + case 'rc': + case 'fh': + case 'io': + case 'th': + case 'ra': + case 'net': + case 'rpc': + // combine keys + values, and then merge it in $fields array + $default_fields = array_merge($default_fields, array_combine($keys_nfs_server[$line_id], $line_values)); + break; + case 'proc2': + case 'proc3': + case 'proc4': + case 'proc4ops': + // note : proc2 is dropped for kernels 3.10.0+ (centos 7+) + // note : proc4ops has changed a few times, and getting the keys is difficult + // I only use the version which reports 59 value's (centos 6) - // the first value of the proc* is the amount of fields that will follow; - // we check this, and if its incorrect, do not polute the chart with wrong values - $value_count = array_shift($line_values); + // the first value of the proc* is the amount of fields that will follow; + // we check this, and if its incorrect, do not polute the chart with wrong values + $value_count = array_shift($line_values); - if ($value_count == count($keys_nfs_server[$line_id])) { - - $fields = array_combine($keys_nfs_server[$line_id], $line_values); + if ($value_count == count($keys_nfs_server[$line_id])) { + $fields = array_combine($keys_nfs_server[$line_id], $line_values); - // create or push data to rrd - $tags = array('name' => $name, 'app_id' => $app['app_id'], 'rrd_name' => $rrd_name[$line_id], 'rrd_def' => $rrd_def_array[$line_id]); + // create or push data to rrd + $tags = array('name' => $name, 'app_id' => $app['app_id'], 'rrd_name' => $rrd_name[$line_id], 'rrd_def' => $rrd_def_array[$line_id]); - data_update($device, 'app', $tags, $fields); - - } - break; + data_update($device, 'app', $tags, $fields); + } + break; } } From ee20afa84ea2b9b74dcdf484c213d04c4e96b246 Mon Sep 17 00:00:00 2001 From: svennd Date: Fri, 14 Apr 2017 16:25:36 +0200 Subject: [PATCH 13/16] file handle chart --- .../graphs/application/nfs-server_fh.inc.php | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 html/includes/graphs/application/nfs-server_fh.inc.php diff --git a/html/includes/graphs/application/nfs-server_fh.inc.php b/html/includes/graphs/application/nfs-server_fh.inc.php new file mode 100644 index 000000000000..f6de684ad3cb --- /dev/null +++ b/html/includes/graphs/application/nfs-server_fh.inc.php @@ -0,0 +1,37 @@ + array('descr' => 'fh_lookup'), + 'fh_anon' => array('descr' => 'fh_anon'), + 'fh_ncachedir' => array('descr' => 'fh_ncachedir'), + 'fh_ncachenondir' => array('descr' => 'fh_ncachenondir'), + 'fh_stale' => array('descr' => 'fh_stale'), +); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $var) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $var['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $config['graph_colours'][$colours][$i]; + $i++; + } +} else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_v3_multiline.inc.php'; + From 7f401abbf2ef464e7abbf34f0f2ef1e4dccc8052 Mon Sep 17 00:00:00 2001 From: svennd Date: Sun, 16 Apr 2017 18:47:40 +0200 Subject: [PATCH 14/16] fixed style + added documentation --- doc/Extensions/Applications.md | 14 +++++++++++++- .../graphs/application/nfs-server_fh.inc.php | 1 - 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/doc/Extensions/Applications.md b/doc/Extensions/Applications.md index dfa119a9c8db..530d929b172f 100644 --- a/doc/Extensions/Applications.md +++ b/doc/Extensions/Applications.md @@ -35,7 +35,7 @@ Different applications support a variety of ways collect data: by direct connect 1. [Unbound](#unbound) - Agent 1. [UPS-nut](#ups-nut) - SNMP extend 1. [UPS-apcups](#ups-apcups) - SNMP extend - +1. [NFS-server](#nfs-server) - SNMP extend ### Apache Either use SNMP extend or use the agent. @@ -698,3 +698,15 @@ extend ups-apcups /etc/snmp/ups-apcups.sh 4. Restart snmpd on your host 5. On the device page in Librenms, edit your host and check the `UPS apcups` under the Applications tab. + +##### NFS-server +Export the NFS stats from as server. + +##### SNMP Extend +1. Edit your snmpd.conf file (usually /etc/snmp/snmpd.conf) and add : +``` +extend nfs-server /bin/cat /proc/net/rpc/nfsd +``` +note : find out where cat is located using : `which cat` + +2. reload snmpd service to activate the configuration diff --git a/html/includes/graphs/application/nfs-server_fh.inc.php b/html/includes/graphs/application/nfs-server_fh.inc.php index f6de684ad3cb..d2507e1e0e0d 100644 --- a/html/includes/graphs/application/nfs-server_fh.inc.php +++ b/html/includes/graphs/application/nfs-server_fh.inc.php @@ -34,4 +34,3 @@ } require 'includes/graphs/generic_v3_multiline.inc.php'; - From ed2379efa27ce9a532a364c83293d9d72a214454 Mon Sep 17 00:00:00 2001 From: svennd Date: Sun, 16 Apr 2017 20:18:52 +0200 Subject: [PATCH 15/16] applied review tasks by murrant, thx murrant! --- html/pages/device/apps/nfs-server.inc.php | 31 +++++++++++-------- .../polling/applications/nfs-server.inc.php | 2 +- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/html/pages/device/apps/nfs-server.inc.php b/html/pages/device/apps/nfs-server.inc.php index 3df26c345f8e..d99622dfbaf4 100644 --- a/html/pages/device/apps/nfs-server.inc.php +++ b/html/pages/device/apps/nfs-server.inc.php @@ -2,21 +2,26 @@ global $config; +// stat => array(text, rrd) $graphs = array( - 'nfs-server_stats_v2' => 'NFS v2 Statistics', - 'nfs-server_stats' => 'NFS v3 Statistics', - 'nfs-server_stats_v4' => 'NFS v4 Statistics', - 'nfs-server_v4ops' => 'NFS v4ops Statistics', - 'nfs-server_io' => 'IO', - 'nfs-server_fh' => 'File handler', - 'nfs-server_rc' => 'Reply cache', - 'nfs-server_ra' => 'Read ahead cache', - 'nfs-server_net' => 'Network stats', - 'nfs-server_rpc' => 'RPC Stats', - + 'nfs-server_net' => array('Network stats', 'default'), + 'nfs-server_rpc' => array('RPC Stats', 'default'), + 'nfs-server_stats' => array('NFS v3 Statistics', 'proc3'), + 'nfs-server_v4ops' => array('NFS v4ops Statistics', 'proc4ops'), + 'nfs-server_io' => array('IO', 'default'), + 'nfs-server_fh' => array('File handler', 'default') , + 'nfs-server_rc' => array('Reply cache', 'default'), + 'nfs-server_ra' => array('Read ahead cache', 'default'), + 'nfs-server_stats_v4' => array('NFS v4 Statistics', 'proc4'), + 'nfs-server_stats_v2' => array('NFS v2 Statistics', 'proc2'), ); -foreach ($graphs as $key => $text) { +foreach ($graphs as $key => $info) { + // check if they exist + if (!rrdtool_check_rrd_exists(rrd_name($device['hostname'], 'app-nfs-server-'. $info[1] . '-'. $app['app_id']))) { + continue; + } + $graph_type = $key; $graph_array['height'] = '100'; $graph_array['width'] = '215'; @@ -26,7 +31,7 @@ echo '
-

'.$text.'

+

' . $info[0] . '

'; diff --git a/includes/polling/applications/nfs-server.inc.php b/includes/polling/applications/nfs-server.inc.php index 8c0a66e93b61..efd91e9f4a3b 100644 --- a/includes/polling/applications/nfs-server.inc.php +++ b/includes/polling/applications/nfs-server.inc.php @@ -8,7 +8,7 @@ echo ' ' . $name; -$nfsstats = snmp_walk($device, $oid, '-Oqv', 'NET-SNMP-EXTEND-MIB'); +$nfsstats = snmp_get($device, $oid, '-Oqv', 'NET-SNMP-EXTEND-MIB'); update_application($app, $nfsstats); From 60a06abbcfb6753a0690eb2eda0c135d145cb729 Mon Sep 17 00:00:00 2001 From: svennd Date: Tue, 18 Apr 2017 15:31:21 +0200 Subject: [PATCH 16/16] applied laf's review, also added tabs in the view to reduce the amount of graphs per page --- doc/Extensions/Applications.md | 25 +++--- .../graphs/application/nfs-server_fh.inc.php | 22 ++++- .../graphs/application/nfs-server_io.inc.php | 35 +++++++- .../graphs/application/nfs-server_net.inc.php | 22 ++++- .../nfs-server_net_tcp_conns.inc.php | 16 +++- .../graphs/application/nfs-server_ra.inc.php | 19 ++++- .../graphs/application/nfs-server_rc.inc.php | 20 ++++- .../graphs/application/nfs-server_rpc.inc.php | 20 ++++- .../application/nfs-server_stats.inc.php | 20 ++++- .../application/nfs-server_stats_v2.inc.php | 20 ++++- .../application/nfs-server_stats_v4.inc.php | 20 ++++- .../application/nfs-server_v4ops.inc.php | 20 ++++- html/pages/device/apps/nfs-server.inc.php | 80 +++++++++++++++++-- .../polling/applications/nfs-server.inc.php | 16 +++- 14 files changed, 308 insertions(+), 47 deletions(-) diff --git a/doc/Extensions/Applications.md b/doc/Extensions/Applications.md index 530d929b172f..f71bcb943766 100644 --- a/doc/Extensions/Applications.md +++ b/doc/Extensions/Applications.md @@ -18,6 +18,7 @@ Different applications support a variety of ways collect data: by direct connect 1. [Munin](#munin) - Agent 1. [MySQL](#mysql) - SNMP extend, Agent 1. [NGINX](#nginx) - Agent +1. [NFS-server](#nfs-server) - SNMP extend 1. [NTP Client](#ntp-client) - SNMP extend 1. [NTP Server](#ntp-server) - SNMP extend 1. [Nvidia GPU](#nvidia-gpu) - SNMP extend @@ -35,7 +36,6 @@ Different applications support a variety of ways collect data: by direct connect 1. [Unbound](#unbound) - Agent 1. [UPS-nut](#ups-nut) - SNMP extend 1. [UPS-apcups](#ups-apcups) - SNMP extend -1. [NFS-server](#nfs-server) - SNMP extend ### Apache Either use SNMP extend or use the agent. @@ -333,6 +333,17 @@ extend nginx /etc/snmp/nginx-stats ##### Agent [Install the agent](Agent-Setup.md) on this device if it isn't already and copy the `nginx` script to `/usr/lib/check_mk_agent/local/` +##### NFS-server +Export the NFS stats from as server. + +##### SNMP Extend +1. Edit your snmpd.conf file (usually /etc/snmp/snmpd.conf) and add : +``` +extend nfs-server /bin/cat /proc/net/rpc/nfsd +``` +note : find out where cat is located using : `which cat` + +2. reload snmpd service to activate the configuration ### NTP Client A shell script that gets stats from ntp client. @@ -698,15 +709,3 @@ extend ups-apcups /etc/snmp/ups-apcups.sh 4. Restart snmpd on your host 5. On the device page in Librenms, edit your host and check the `UPS apcups` under the Applications tab. - -##### NFS-server -Export the NFS stats from as server. - -##### SNMP Extend -1. Edit your snmpd.conf file (usually /etc/snmp/snmpd.conf) and add : -``` -extend nfs-server /bin/cat /proc/net/rpc/nfsd -``` -note : find out where cat is located using : `which cat` - -2. reload snmpd service to activate the configuration diff --git a/html/includes/graphs/application/nfs-server_fh.inc.php b/html/includes/graphs/application/nfs-server_fh.inc.php index d2507e1e0e0d..5c256fafc106 100644 --- a/html/includes/graphs/application/nfs-server_fh.inc.php +++ b/html/includes/graphs/application/nfs-server_fh.inc.php @@ -1,4 +1,18 @@ +*/ + require 'includes/graphs/common.inc.php'; $scale_min = 0; $colours = 'mixed'; @@ -10,18 +24,20 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; + +$rrd_filename = rrd_name($device['hostname'], array('app', 'nfs-server-default', $app['app_id'])); + $array = array( 'fh_lookup' => array('descr' => 'fh_lookup'), 'fh_anon' => array('descr' => 'fh_anon'), 'fh_ncachedir' => array('descr' => 'fh_ncachedir'), 'fh_ncachenondir' => array('descr' => 'fh_ncachenondir'), - 'fh_stale' => array('descr' => 'fh_stale'), + 'fh_stale' => array('descr' => 'fh_stale'), // only var that should show something ); $i = 0; -if (is_file($rrd_filename)) { +if (rrdtool_check_rrd_exists($rrd_filename)) { foreach ($array as $ds => $var) { $rrd_list[$i]['filename'] = $rrd_filename; $rrd_list[$i]['descr'] = $var['descr']; diff --git a/html/includes/graphs/application/nfs-server_io.inc.php b/html/includes/graphs/application/nfs-server_io.inc.php index e179eca1ac03..4e59a9723317 100644 --- a/html/includes/graphs/application/nfs-server_io.inc.php +++ b/html/includes/graphs/application/nfs-server_io.inc.php @@ -1,4 +1,18 @@ +*/ + require 'includes/graphs/common.inc.php'; $scale_min = 0; $colours = 'mixed'; @@ -10,7 +24,9 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; + +$rrd_filename = rrd_name($device['hostname'], array('app', 'nfs-server-default', $app['app_id'])); + $array = array( 'io_read' => array('descr' => 'read','colour' => '2B9220',), 'io_write' => array('descr' => 'write','colour' => 'B0262D',), @@ -18,7 +34,7 @@ $i = 0; -if (is_file($rrd_filename)) { +if (rrdtool_check_rrd_exists($rrd_filename)) { foreach ($array as $ds => $var) { $rrd_list[$i]['filename'] = $rrd_filename; $rrd_list[$i]['descr'] = $var['descr']; @@ -31,3 +47,18 @@ } require 'includes/graphs/generic_v3_multiline.inc.php'; + + +/* +This would create a graph with reads above and write belows; +I can't find out how to adapt the legend. If you wish to swap graphs, +uncomment all the above untill +*/ + require 'includes/graphs/common.inc.php'; $scale_min = 0; $colours = 'mixed'; @@ -10,17 +24,17 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; + +$rrd_filename = rrd_name($device['hostname'], array('app', 'nfs-server-default', $app['app_id'])); + $array = array( - // 'net_all' => array('descr' => 'total','colour' => '000000',), this is udp+tcp 'net_udp' => array('descr' => 'udp','colour' => 'AA3F39',), 'net_tcp' => array('descr' => 'tcp','colour' => '2C8437',), - // 'net_tcpconn' => array('descr' => 'tcp conn','colour' => '576996',), this is tcp connections ); $i = 0; -if (is_file($rrd_filename)) { +if (rrdtool_check_rrd_exists($rrd_filename)) { foreach ($array as $ds => $var) { $rrd_list[$i]['filename'] = $rrd_filename; $rrd_list[$i]['descr'] = $var['descr']; diff --git a/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php b/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php index f945afea79f6..5a7d9ed34019 100644 --- a/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php +++ b/html/includes/graphs/application/nfs-server_net_tcp_conns.inc.php @@ -1,4 +1,17 @@ +*/ require 'includes/graphs/common.inc.php'; @@ -9,6 +22,7 @@ $colour_area_max = 'FFEE99'; $graph_max = 10000; $unit_text = 'net tcp connections'; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; + +$rrd_filename = rrd_name($device['hostname'], array('app', 'nfs-server-default', $app['app_id'])); require 'includes/graphs/generic_simplex.inc.php'; diff --git a/html/includes/graphs/application/nfs-server_ra.inc.php b/html/includes/graphs/application/nfs-server_ra.inc.php index 432c6b340c54..53b979782222 100644 --- a/html/includes/graphs/application/nfs-server_ra.inc.php +++ b/html/includes/graphs/application/nfs-server_ra.inc.php @@ -1,4 +1,18 @@ +*/ + require 'includes/graphs/common.inc.php'; $scale_min = 0; $colours = 'mixed'; @@ -10,7 +24,8 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; + +$rrd_filename = rrd_name($device['hostname'], array('app', 'nfs-server-default', $app['app_id'])); $array = array( 'ra_range01' => array('descr' => '0%-10%'), @@ -28,7 +43,7 @@ $i = 0; -if (is_file($rrd_filename)) { +if (rrdtool_check_rrd_exists($rrd_filename)) { foreach ($array as $ds => $var) { $rrd_list[$i]['filename'] = $rrd_filename; $rrd_list[$i]['descr'] = $var['descr']; diff --git a/html/includes/graphs/application/nfs-server_rc.inc.php b/html/includes/graphs/application/nfs-server_rc.inc.php index 503e069018ad..3e2510744182 100644 --- a/html/includes/graphs/application/nfs-server_rc.inc.php +++ b/html/includes/graphs/application/nfs-server_rc.inc.php @@ -1,4 +1,18 @@ +*/ + require 'includes/graphs/common.inc.php'; $scale_min = 0; $unit_text = 'Reply cache'; @@ -9,7 +23,9 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; + +$rrd_filename = rrd_name($device['hostname'], array('app', 'nfs-server-default', $app['app_id'])); + $array = array( 'rc_hits' => array('descr' => 'hits','colour' => 'B0262D'), // this is bad : retransmitting (red) 'rc_misses' => array('descr' => 'misses','colour' => 'B36326'), // requires caching @@ -18,7 +34,7 @@ $i = 0; -if (is_file($rrd_filename)) { +if (rrdtool_check_rrd_exists($rrd_filename)) { foreach ($array as $ds => $var) { $rrd_list[$i]['filename'] = $rrd_filename; $rrd_list[$i]['descr'] = $var['descr']; diff --git a/html/includes/graphs/application/nfs-server_rpc.inc.php b/html/includes/graphs/application/nfs-server_rpc.inc.php index 9b55725959d8..2aba5fbe1ba6 100644 --- a/html/includes/graphs/application/nfs-server_rpc.inc.php +++ b/html/includes/graphs/application/nfs-server_rpc.inc.php @@ -1,4 +1,18 @@ +*/ + require 'includes/graphs/common.inc.php'; $scale_min = 0; $colours = 'mixed'; @@ -10,7 +24,9 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-default-'.$app['app_id'].'.rrd'; + +$rrd_filename = rrd_name($device['hostname'], array('app', 'nfs-server-default', $app['app_id'])); + $array = array( 'rpc_calls' => array('descr' => 'calls','colour' => '2C8437',), // green : good //'rpc_badcalls' => array('descr' => 'bad calls','colour' => '600604',), # this is a sum of nbadfmt, badauth and badclnt @@ -21,7 +37,7 @@ $i = 0; -if (is_file($rrd_filename)) { +if (rrdtool_check_rrd_exists($rrd_filename)) { foreach ($array as $ds => $var) { $rrd_list[$i]['filename'] = $rrd_filename; $rrd_list[$i]['descr'] = $var['descr']; diff --git a/html/includes/graphs/application/nfs-server_stats.inc.php b/html/includes/graphs/application/nfs-server_stats.inc.php index 03ddb3dee812..6e3a6d9efdbd 100644 --- a/html/includes/graphs/application/nfs-server_stats.inc.php +++ b/html/includes/graphs/application/nfs-server_stats.inc.php @@ -1,4 +1,18 @@ +*/ + require 'includes/graphs/common.inc.php'; $scale_min = 0; $colours = 'mixed'; @@ -10,7 +24,9 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-proc3-'.$app['app_id'].'.rrd'; + +$rrd_filename = rrd_name($device['hostname'], array('app', 'nfs-server-proc3', $app['app_id'])); + $array = array( 'proc3_null' => array('descr' => 'Null'), 'proc3_getattr' => array('descr' => 'Get attributes'), @@ -38,7 +54,7 @@ $i = 0; -if (is_file($rrd_filename)) { +if (rrdtool_check_rrd_exists($rrd_filename)) { foreach ($array as $ds => $var) { $rrd_list[$i]['filename'] = $rrd_filename; $rrd_list[$i]['descr'] = $var['descr']; diff --git a/html/includes/graphs/application/nfs-server_stats_v2.inc.php b/html/includes/graphs/application/nfs-server_stats_v2.inc.php index 8a94613137dd..dbf4d45a97ca 100644 --- a/html/includes/graphs/application/nfs-server_stats_v2.inc.php +++ b/html/includes/graphs/application/nfs-server_stats_v2.inc.php @@ -1,4 +1,18 @@ +*/ + require 'includes/graphs/common.inc.php'; $scale_min = 0; $colours = 'mixed'; @@ -10,7 +24,9 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-proc2-'.$app['app_id'].'.rrd'; + +$rrd_filename = rrd_name($device['hostname'], array('app', 'nfs-server-proc2', $app['app_id'])); + $array = array( 'proc2_null' => array('descr' => 'Null'), 'proc2_getattr' => array('descr' => 'Get attributes'), @@ -34,7 +50,7 @@ $i = 0; -if (is_file($rrd_filename)) { +if (rrdtool_check_rrd_exists($rrd_filename)) { foreach ($array as $ds => $var) { $rrd_list[$i]['filename'] = $rrd_filename; $rrd_list[$i]['descr'] = $var['descr']; diff --git a/html/includes/graphs/application/nfs-server_stats_v4.inc.php b/html/includes/graphs/application/nfs-server_stats_v4.inc.php index e2d035ced4f3..1daa03d8288e 100644 --- a/html/includes/graphs/application/nfs-server_stats_v4.inc.php +++ b/html/includes/graphs/application/nfs-server_stats_v4.inc.php @@ -1,4 +1,18 @@ +*/ + require 'includes/graphs/common.inc.php'; $scale_min = 0; $colours = 'mixed'; @@ -10,7 +24,9 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-proc4-'.$app['app_id'].'.rrd'; + +$rrd_filename = rrd_name($device['hostname'], array('app', 'nfs-server-proc4', $app['app_id'])); + $array = array( 'proc4_null' => array('descr' => 'Null','colour' => '630606'), // these should be very low 'proc4_compound' => array('descr' => 'Compound','colour' => '50C150') // basically this are 1 or more ops @@ -18,7 +34,7 @@ $i = 0; -if (is_file($rrd_filename)) { +if (rrdtool_check_rrd_exists($rrd_filename)) { foreach ($array as $ds => $var) { $rrd_list[$i]['filename'] = $rrd_filename; $rrd_list[$i]['descr'] = $var['descr']; diff --git a/html/includes/graphs/application/nfs-server_v4ops.inc.php b/html/includes/graphs/application/nfs-server_v4ops.inc.php index d81979efa317..658fffc55247 100644 --- a/html/includes/graphs/application/nfs-server_v4ops.inc.php +++ b/html/includes/graphs/application/nfs-server_v4ops.inc.php @@ -1,4 +1,18 @@ +*/ + require 'includes/graphs/common.inc.php'; $scale_min = 0; $colours = 'mixed'; @@ -10,7 +24,9 @@ $printtotal = 0; $addarea = 1; $transparency = 33; -$rrd_filename = $config['rrd_dir'].'/'.$device['hostname'].'/app-nfs-server-proc4ops-'.$app['app_id'].'.rrd'; + +$rrd_filename = rrd_name($device['hostname'], array('app', 'nfs-server-proc4ops', $app['app_id'])); + $array = array( // 'v4_op0-unused' => array('descr' => 'v4_op0-unused'), // 'v4_op1-unused' => array('descr' => 'v4_op1-unused'), @@ -75,7 +91,7 @@ $i = 0; -if (is_file($rrd_filename)) { +if (rrdtool_check_rrd_exists($rrd_filename)) { foreach ($array as $ds => $var) { $rrd_list[$i]['filename'] = $rrd_filename; $rrd_list[$i]['descr'] = $var['descr']; diff --git a/html/pages/device/apps/nfs-server.inc.php b/html/pages/device/apps/nfs-server.inc.php index d99622dfbaf4..bfc1a1dc1ebc 100644 --- a/html/pages/device/apps/nfs-server.inc.php +++ b/html/pages/device/apps/nfs-server.inc.php @@ -1,27 +1,91 @@ +*/ global $config; +print_optionbar_start(); + +echo "".nicecase($app['app_type']).' » '; + +$app_sections = array( + 'default' => 'NFS', + 'proc2' => 'NFS v2', + 'proc3' => 'NFS v3', + 'proc4' => 'NFS v4', +); + +unset($sep); + +foreach ($app_sections as $app_section => $app_section_text) { + // remove entries that have no rrd associated + // commonly proc2 will be invisible + $var_rrd = rrd_name($device['hostname'], 'app-nfs-server-'. $app_section . '-'. $app['app_id']); + if (!rrdtool_check_rrd_exists($var_rrd)) { + continue; + } + + echo $sep; + + if (!$vars['app_section']) { + $vars['app_section'] = $app_section; + } + + if ($vars['app_section'] == $app_section) { + echo ""; + } + + echo generate_link($app_section_text, $vars, array('app_section' => $app_section)); + if ($vars['app_section'] == $app_section) { + echo ''; + } + + $sep = ' | '; +} + +print_optionbar_end(); + +unset($graphs); + // stat => array(text, rrd) -$graphs = array( +$graphs['default'] = array( 'nfs-server_net' => array('Network stats', 'default'), 'nfs-server_rpc' => array('RPC Stats', 'default'), - 'nfs-server_stats' => array('NFS v3 Statistics', 'proc3'), - 'nfs-server_v4ops' => array('NFS v4ops Statistics', 'proc4ops'), 'nfs-server_io' => array('IO', 'default'), 'nfs-server_fh' => array('File handler', 'default') , 'nfs-server_rc' => array('Reply cache', 'default'), - 'nfs-server_ra' => array('Read ahead cache', 'default'), + 'nfs-server_ra' => array('Read ahead cache', 'default') +); + +$graphs['proc2'] = array( + 'nfs-server_stats_v2' => array('NFS v2 Statistics', 'proc2') +); + +$graphs['proc3'] = array( + 'nfs-server_stats' => array('NFS v3 Statistics', 'proc3') +); + +$graphs['proc4'] = array( 'nfs-server_stats_v4' => array('NFS v4 Statistics', 'proc4'), - 'nfs-server_stats_v2' => array('NFS v2 Statistics', 'proc2'), + 'nfs-server_v4ops' => array('NFS v4ops Statistics', 'proc4ops') ); -foreach ($graphs as $key => $info) { +foreach ($graphs[$vars['app_section']] as $key => $info) { // check if they exist if (!rrdtool_check_rrd_exists(rrd_name($device['hostname'], 'app-nfs-server-'. $info[1] . '-'. $app['app_id']))) { continue; } - + $graph_type = $key; $graph_array['height'] = '100'; $graph_array['width'] = '215'; diff --git a/includes/polling/applications/nfs-server.inc.php b/includes/polling/applications/nfs-server.inc.php index efd91e9f4a3b..a92f545e036f 100644 --- a/includes/polling/applications/nfs-server.inc.php +++ b/includes/polling/applications/nfs-server.inc.php @@ -1,5 +1,17 @@ +*/ use LibreNMS\RRD\RrdDefinition; @@ -8,7 +20,7 @@ echo ' ' . $name; -$nfsstats = snmp_get($device, $oid, '-Oqv', 'NET-SNMP-EXTEND-MIB'); +$nfsstats = snmp_get($device, $oid, '-Oqv'); update_application($app, $nfsstats);