feature: Added ZFS support for FreeBSD (#7938)

* add the ZFS graphs

* And now the ZFS non-graph stuff.

Still need to move it over to using JSON.

* Now uses JSON.

* use stripslashes as SNMPD loves to slash up the JSON

* Document ZFS.

* very minor formatting cleanup

* minor formatting cleanup and remove a bit of code from when I was mucking around debugging it all
This commit is contained in:
VVelox
2017-12-30 05:42:51 -06:00
committed by Neil Lathwood
parent 0e13e77c5f
commit eaf70e96f6
18 changed files with 858 additions and 1 deletions

View File

@@ -283,6 +283,19 @@ $graphs['freeradius'] = array(
'queue',
);
$graphs['zfs'] = array(
'arc_misc',
'arc_size',
'arc_size_per',
'arc_size_breakdown',
'arc_efficiency',
'arc_cache_hits_by_list',
'arc_cache_hits_by_type',
'arc_cache_misses_by_type',
'arc_cache_hits',
'arc_cache_miss',
);
print_optionbar_start();
echo "<span style='font-weight: bold;'>Apps</span> &#187; ";

View File

@@ -0,0 +1,83 @@
<?php
global $config;
$pools=get_zfs_pools($device['device_id']);
$link_array = array(
'page' => 'device',
'device' => $device['device_id'],
'tab' => 'apps',
'app' => 'zfs',
);
print_optionbar_start();
echo generate_link('ARC', $link_array);
echo '| Pools:';
$pool_int=0;
while (isset($pools[$pool_int])) {
$pool=$pools[$pool_int];
$label=$pool;
if ($vars['pool'] == $pool) {
$label='>>'.$pool.'<<';
}
$pool_int++;
$append='';
if (isset($pools[$pool_int])) {
$append=', ';
}
echo generate_link($label, $link_array, array('pool'=>$pool)).$append;
}
print_optionbar_end();
if (!isset($vars['pool'])) {
$graphs = array(
'zfs_arc_misc' => 'ARC misc',
'zfs_arc_size' => 'ARC size in bytes',
'zfs_arc_size_per' => 'ARC size, percent of max size',
'zfs_arc_size_breakdown' => 'ARC size breakdown',
'zfs_arc_efficiency' => 'ARC efficiency',
'zfs_arc_cache_hits_by_list' => 'ARC cache hits by list',
'zfs_arc_cache_hits_by_type' => 'ARC cache hits by type',
'zfs_arc_cache_misses_by_type' => 'ARC cache misses by type',
'zfs_arc_cache_hits' => 'ARC cache hits',
'zfs_arc_cache_miss' => 'ARC cache misses',
);
} else {
$graphs = array(
'zfs_pool_space'=>'Pool Space',
'zfs_pool_cap'=>'Pool Capcity',
'zfs_pool_frag'=>'Pool Fragmentation',
);
}
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;
if (isset($vars['pool'])) {
$graph_array['pool']=$vars['pool'];
}
echo '<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">'.$text.'</h3>
</div>
<div class="panel-body">
<div class="row">';
include 'includes/print-graphrow.inc.php';
echo '</div>';
echo '</div>';
echo '</div>';
}