diff --git a/html/includes/functions.inc.php b/html/includes/functions.inc.php index 5993c2acb2..5e8413f7e6 100644 --- a/html/includes/functions.inc.php +++ b/html/includes/functions.inc.php @@ -67,6 +67,9 @@ function nicecase($item) { case 'nfs-stats': return 'NFS Stats'; + case 'nfs-v3-stats': + return 'NFS v3 Stats'; + default: return ucfirst($item); } diff --git a/html/includes/graphs/application/nfs-fh.inc.php b/html/includes/graphs/application/nfs-fh.inc.php new file mode 100644 index 0000000000..76eed56fed --- /dev/null +++ b/html/includes/graphs/application/nfs-fh.inc.php @@ -0,0 +1,37 @@ + array('descr' => 'lookup','colour' => '136421',), + 'fh_anon' => array('descr' => 'anon','colour' => 'B2C945',), + 'fh_ncachedir' => array('descr' => 'ncachedir','colour' => '778D0D',), + 'fh_ncachenondir' => array('descr' => 'ncachenondir','colour' => '536400',), + 'fh_stale' => array('descr' => 'stale','colour' => '832119',), +); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $vars) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $vars['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $vars['colour']; + $i++; + } +} +else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_multi_line_exact_numbers.inc.php'; diff --git a/html/includes/graphs/application/nfs-io.inc.php b/html/includes/graphs/application/nfs-io.inc.php new file mode 100644 index 0000000000..e6778d55ce --- /dev/null +++ b/html/includes/graphs/application/nfs-io.inc.php @@ -0,0 +1,34 @@ + array('descr' => 'read','colour' => '2B9220',), + 'io_write' => array('descr' => 'write','colour' => 'B0262D',), +); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $vars) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $vars['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $vars['colour']; + $i++; + } +} +else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_multi_line_exact_numbers.inc.php'; diff --git a/html/includes/graphs/application/nfs-net.inc.php b/html/includes/graphs/application/nfs-net.inc.php new file mode 100644 index 0000000000..70b17cad62 --- /dev/null +++ b/html/includes/graphs/application/nfs-net.inc.php @@ -0,0 +1,36 @@ + array('descr' => 'total','colour' => '000000',), + 'net_udp' => array('descr' => 'udp','colour' => 'AA3F39',), + 'net_tcp' => array('descr' => 'tcp','colour' => '2C8437',), + 'net_tcpconn' => array('descr' => 'tcp conn','colour' => '576996',), +); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $vars) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $vars['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $vars['colour']; + $i++; + } +} +else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_multi_line_exact_numbers.inc.php'; diff --git a/html/includes/graphs/application/nfs-ra.inc.php b/html/includes/graphs/application/nfs-ra.inc.php new file mode 100644 index 0000000000..a6503e07b6 --- /dev/null +++ b/html/includes/graphs/application/nfs-ra.inc.php @@ -0,0 +1,44 @@ + array('descr' => 'size','colour' => '091B40',), + 'ra_range01' => array('descr' => '0-10','colour' => '8293B3',), + 'ra_range02' => array('descr' => '10-20','colour' => '566B95',), + 'ra_range03' => array('descr' => '20-30','colour' => '1B315D',), + 'ra_range04' => array('descr' => '30-40','colour' => '091B40',), + 'ra_range05' => array('descr' => '40-50','colour' => '296F6A',), + 'ra_range06' => array('descr' => '50-60','colour' => '498984',), + 'ra_range07' => array('descr' => '60-70','colour' => '125651',), + 'ra_range08' => array('descr' => '70-80','colour' => '023B37',), + 'ra_range09' => array('descr' => '80-90','colour' => '14623A',), + 'ra_range10' => array('descr' => '90-100','colour' => '034423',), + 'ra_notfound' => array('descr' => 'not found','colour' => '590315',), +); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $vars) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $vars['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $vars['colour']; + $i++; + } +} +else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_multi_line_exact_numbers.inc.php'; diff --git a/html/includes/graphs/application/nfs-rc.inc.php b/html/includes/graphs/application/nfs-rc.inc.php new file mode 100644 index 0000000000..ba0bdcf2f7 --- /dev/null +++ b/html/includes/graphs/application/nfs-rc.inc.php @@ -0,0 +1,35 @@ + array('descr' => 'hits','colour' => '2B9220',), + 'rc_misses' => array('descr' => 'misses','colour' => 'B36326',), + 'rc_nocache' => array('descr' => 'nocache','colour' => 'B0262D',), +); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $vars) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $vars['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $vars['colour']; + $i++; + } +} +else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_multi_line_exact_numbers.inc.php'; diff --git a/html/includes/graphs/application/nfs-rpc.inc.php b/html/includes/graphs/application/nfs-rpc.inc.php new file mode 100644 index 0000000000..4b766e70fc --- /dev/null +++ b/html/includes/graphs/application/nfs-rpc.inc.php @@ -0,0 +1,37 @@ + array('descr' => 'calls','colour' => '000000',), + 'rpc_badcalls' => array('descr' => 'bad calls','colour' => '600604',), + 'rpc_badfmt' => array('descr' => 'bad fmt','colour' => '8C201D',), + 'rpc_badauth' => array('descr' => 'bad auth','colour' => 'DF7A77',), + 'rpc_badclnt' => array('descr' => 'bad clnt','colour' => 'FFB3B1',), +); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $vars) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $vars['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $vars['colour']; + $i++; + } +} +else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_multi_line_exact_numbers.inc.php'; diff --git a/html/includes/graphs/application/nfs-v3-stats.inc.php b/html/includes/graphs/application/nfs-v3-stats.inc.php new file mode 100644 index 0000000000..5ab9f7a412 --- /dev/null +++ b/html/includes/graphs/application/nfs-v3-stats.inc.php @@ -0,0 +1,54 @@ + array('descr' => 'Null','colour' => '630606',), + 'proc3_getattr' => array('descr' => 'Get attributes','colour' => '50C150',), + 'proc3_setattr' => array('descr' => 'Set attributes','colour' => '4D65A2',), + 'proc3_lookup' => array('descr' => 'Lookup','colour' => '8B64A1',), + 'proc3_access' => array('descr' => 'Access','colour' => 'AAAA39',), + 'proc3_read' => array('descr' => 'Read','colour' => '308A30',), + 'proc3_write' => array('descr' => 'Write','colour' => '457A9A',), + 'proc3_create' => array('descr' => 'Create','colour' => '690D87',), + 'proc3_mkdir' => array('descr' => 'Make dir','colour' => '3A3478',), + 'proc3_mknod' => array('descr' => 'Make nod','colour' => '512E74',), + 'proc3_link' => array('descr' => 'Link','colour' => '072A3F',), + 'proc3_remove' => array('descr' => 'Remove','colour' => 'F16464',), + 'proc3_rmdir' => array('descr' => 'Remove dir','colour' => '57162D',), + 'proc3_rename' => array('descr' => 'Rename','colour' => 'A40B62',), + 'proc3_readlink' => array('descr' => 'Read link','colour' => '557917',), + 'proc3_readdir' => array('descr' => 'Read dir','colour' => 'A3C666',), + 'proc3_symlink' => array('descr' => 'Symlink','colour' => '85C490',), + 'proc3_readdirplus' => array('descr' => 'Read dir plus','colour' => 'F1F164',), + 'proc3_fsstat' => array('descr' => 'FS stat','colour' => 'F1F191',), + 'proc3_fsinfo' => array('descr' => 'FS info','colour' => '6E2770',), + 'proc3_pathconf' => array('descr' => 'Pathconf','colour' => '993555',), + 'proc3_commit' => array('descr' => 'Commit','colour' => '463176',), + ); + +$i = 0; + +if (is_file($rrd_filename)) { + foreach ($array as $ds => $vars) { + $rrd_list[$i]['filename'] = $rrd_filename; + $rrd_list[$i]['descr'] = $vars['descr']; + $rrd_list[$i]['ds'] = $ds; + $rrd_list[$i]['colour'] = $vars['colour']; + $i++; + } +} +else { + echo "file missing: $rrd_filename"; +} + +require 'includes/graphs/generic_multi_line_exact_numbers.inc.php'; diff --git a/html/includes/graphs/generic_v3_multiline.inc.php b/html/includes/graphs/generic_v3_multiline.inc.php new file mode 100644 index 0000000000..92773ba01d --- /dev/null +++ b/html/includes/graphs/generic_v3_multiline.inc.php @@ -0,0 +1,121 @@ + '500') { + $descr_len = $bigdescrlen; +} else { + $descr_len = $smalldescrlen; +} + +if ($printtotal === 1) { + $descr_len += '2'; + $unitlen += '2'; +} + +$unit_text = str_pad(truncate($unit_text, $unitlen), $unitlen); + +if ($width > '500') { + $rrd_options .= " COMMENT:'".substr(str_pad($unit_text, ($descr_len + 10)), 0, ($descr_len + 10))."Now Min Max Avg\l'"; + if($printtotal === 1) { + $rrd_options .= " COMMENT:'Total '"; + } + $rrd_options .= " COMMENT:'\l'"; +} else { + $rrd_options .= " COMMENT:'".substr(str_pad($unit_text, ($descr_len + 10)), 0, ($descr_len + 10))."Now Min Max Avg\l'"; +} + +foreach ($rrd_list as $rrd) { + if ($rrd['colour']) { + $colour = $rrd['colour']; + } + else { + if (!$config['graph_colours'][$colours][$colour_iter]) { + $colour_iter = 0; + } + + $colour = $config['graph_colours'][$colours][$colour_iter]; + $colour_iter++; + } + + $ds = $rrd['ds']; + $filename = $rrd['filename']; + + $descr = rrdtool_escape($rrd['descr'], $descr_len); + $id = 'ds'.$i; + + $rrd_options .= ' DEF:'.$rrd['ds'].$i.'='.$rrd['filename'].':'.$rrd['ds'].':AVERAGE '; + + if ($simple_rrd) { + $rrd_options .= ' CDEF:'.$rrd['ds'].$i.'min='.$rrd['ds'].$i.' '; + $rrd_options .= ' CDEF:'.$rrd['ds'].$i.'max='.$rrd['ds'].$i.' '; + } + else { + $rrd_options .= ' DEF:'.$rrd['ds'].$i.'min='.$rrd['filename'].':'.$rrd['ds'].':MIN '; + $rrd_options .= ' DEF:'.$rrd['ds'].$i.'max='.$rrd['filename'].':'.$rrd['ds'].':MAX '; + } + + if ($_GET['previous']) { + $rrd_options .= ' DEF:'.$i.'X='.$rrd['filename'].':'.$rrd['ds'].':AVERAGE:start='.$prev_from.':end='.$from; + $rrd_options .= ' SHIFT:'.$i."X:$period"; + $thingX .= $seperatorX.$i.'X,UN,0,'.$i.'X,IF'; + $plusesX .= $plusX; + $seperatorX = ','; + $plusX = ',+'; + } + + if ($printtotal === 1) { + $rrd_options .= ' VDEF:tot'.$rrd['ds'].$i.'='.$rrd['ds'].$i.',TOTAL'; + } + + $g_defname = $rrd['ds']; + if (is_numeric($multiplier)) { + $g_defname = $rrd['ds'].'_cdef'; + $rrd_options .= ' CDEF:'.$g_defname.$i.'='.$rrd['ds'].$i.','.$multiplier.',*'; + $rrd_options .= ' CDEF:'.$g_defname.$i.'min='.$rrd['ds'].$i.'min,'.$multiplier.',*'; + $rrd_options .= ' CDEF:'.$g_defname.$i.'max='.$rrd['ds'].$i.'max,'.$multiplier.',*'; + } else if (is_numeric($divider)) { + $g_defname = $rrd['ds'].'_cdef'; + $rrd_options .= ' CDEF:'.$g_defname.$i.'='.$rrd['ds'].$i.','.$divider.',/'; + $rrd_options .= ' CDEF:'.$g_defname.$i.'min='.$rrd['ds'].$i.'min,'.$divider.',/'; + $rrd_options .= ' CDEF:'.$g_defname.$i.'max='.$rrd['ds'].$i.'max,'.$divider.',/'; + } + + if (isset($text_orig) && $text_orig) { + $t_defname = $rrd['ds']; + } else { + $t_defname = $g_defname; + } + + if ($i && ($dostack === 1)) { + $stack = ':STACK'; + } + + $rrd_options .= ' LINE2:'.$g_defname.$i.'#'.$colour.":'".$descr."'$stack"; + if ($addarea === 1) + { + $descr = ":"; + $rrd_options .= ' AREA:'.$g_defname.$i.'#'.$colour.$transparency.":'".$descr."'$stack"; + } + $rrd_options .= ' GPRINT:'.$t_defname.$i.':LAST:%8.0lf%s GPRINT:'.$t_defname.$i.'min:MIN:%8.0lf%s'; + $rrd_options .= ' GPRINT:'.$t_defname.$i.'max:MAX:%8.0lf%s GPRINT:'.$t_defname.$i.":AVERAGE:'%8.0lf%s\\n'"; + + if ($printtotal === 1) { + $rrd_options .= ' GPRINT:tot'.$rrd['ds'].$i.":%6.2lf%s'".rrdtool_escape($total_units)."'"; + } + + $rrd_options .= " COMMENT:'\\n'"; +}//end foreach + +if ($_GET['previous'] == 'yes') { + if (is_numeric($multiplier)) { + $rrd_options .= ' CDEF:X='.$thingX.$plusesX.','.$multiplier.',*'; + } + else if (is_numeric($divider)) { + $rrd_options .= ' CDEF:X='.$thingX.$plusesX.','.$divider.',/'; + } + else { + $rrd_options .= ' CDEF:X='.$thingX.$plusesX; + } + $rrd_options .= ' HRULE:0#555555'; +} + diff --git a/html/pages/device/apps/nfs-v3-stats.inc.php b/html/pages/device/apps/nfs-v3-stats.inc.php new file mode 100644 index 0000000000..853e50cbac --- /dev/null +++ b/html/pages/device/apps/nfs-v3-stats.inc.php @@ -0,0 +1,35 @@ + 'NFS v3 Statistics', + 'nfs-io' => 'IO', + 'nfs-fh' => 'File handler', + 'nfs-rc' => 'Reply cache', + 'nfs-ra' => 'Read ahead cache', + 'nfs-net' => 'Network stats', + 'nfs-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 '