mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
add ZFS L2 support (#15095)
* add alerts for ZFS * add initial l2 bits to the poller for zfs * more minor tweaks to the ZFS poller * more zfs bits * add new ZFS graphs * begin adding L2 stuff * add linux_zfs-v3 bits * update zfs app page * style fix * update the data for the zfs legacy test * test update for zfs v1 * fix some zfs tests * more zfs v3 test cleanup * another zfs v3 test data fix * more zfs v3 test data cleanup * more test tweaks
This commit is contained in:
@@ -2905,32 +2905,22 @@ b.) "public_key_to_arbitrary_name" - A dictionary to convert between the publick
|
||||
|
||||
### SNMP Extend
|
||||
|
||||
`zfs-linux` requires python3 >=python3.5.
|
||||
|
||||
The installation steps are:
|
||||
|
||||
1. Copy the polling script to the desired host (the host must be added
|
||||
to LibreNMS devices)
|
||||
2. Make the script executable
|
||||
3. Edit snmpd.conf to include ZFS stats
|
||||
|
||||
#### FreeBSD
|
||||
1: Install the depends.
|
||||
```
|
||||
wget https://github.com/librenms/librenms-agent/raw/master/snmp/zfs-freebsd -O /etc/snmp/zfs-freebsd
|
||||
chmod +x /etc/snmp/zfs-freebsd
|
||||
echo "extend zfs /etc/snmp/zfs-freebsd" >> /etc/snmp/snmpd.conf
|
||||
### FreeBSD
|
||||
pkg install p5-JSON p5-MIME-Base64 p5-Gzip-Faster
|
||||
### Debian
|
||||
apt-get install -y cpanminus zlib1g-dev
|
||||
cpanm Mime::Base64 JSON Gzip::Faster
|
||||
```
|
||||
|
||||
#### Linux
|
||||
2: Fetch the script in question and make it executable.
|
||||
```
|
||||
wget https://github.com/librenms/librenms-agent/raw/master/snmp/zfs-linux -O /etc/snmp/zfs-linux
|
||||
chmod +x /etc/snmp/zfs-linux
|
||||
echo "extend zfs /usr/bin/sudo /etc/snmp/zfs-linux" >> /etc/snmp/snmpd.conf
|
||||
wget https://github.com/librenms/librenms-agent/raw/master/snmp/zfs -O /etc/snmp/zfs
|
||||
chmod +x /etc/snmp/zfs
|
||||
```
|
||||
|
||||
Edit your sudo users (usually `visudo`) and add at the bottom:
|
||||
3: Add the following to snmpd.conf and restart snmpd.
|
||||
```
|
||||
snmp ALL=(ALL) NOPASSWD: /etc/snmp/zfs-linux
|
||||
extend zfs /etc/snmp/zfs
|
||||
```
|
||||
|
||||
Now restart snmpd and you're all set.
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Instances/Second';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 Abort Lowmem';
|
||||
$ds = 'l2_abort_lowmem';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Accesses/Second';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 Accesses';
|
||||
$ds = 'l2_access_total';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Bytes';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 Asize';
|
||||
$ds = 'l2_asize';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Bytes';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 BufC D A Size';
|
||||
$ds = 'l2_bufc_d_asize';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Bytes';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 BufC M Asize';
|
||||
$ds = 'l2_bufc_m_asize';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Ratio';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 Data To Meta';
|
||||
$ds = 'l2_d_to_m_ratio';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Errors/Second';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 Errors';
|
||||
$ds = 'l2_errors';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Bytes';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 HDR Size';
|
||||
$ds = 'l2_hdr_size';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Bytes';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 Log Blk Asize';
|
||||
$ds = 'l2_log_blk_asize';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Bytes';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 MFU Asize';
|
||||
$ds = 'l2_mfu_asize';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Bytes';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 MRU Asize';
|
||||
$ds = 'l2_mru_asize';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Bytes';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 Prefetch Asize';
|
||||
$ds = 'l2_prefetch_asize';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Bytes';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 Rebuild Asize';
|
||||
$ds = 'l2_rb_asize';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Bytes';
|
||||
$colours = 'psychedelic';
|
||||
$dostack = 0;
|
||||
$printtotal = 0;
|
||||
$addarea = 1;
|
||||
$transparency = 15;
|
||||
|
||||
$rrd_filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
$rrd_list = [];
|
||||
if (Rrd::checkRrdExists($rrd_filename)) {
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'L2 Write',
|
||||
'ds' => 'l2_write_bytes',
|
||||
];
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'L2 Read',
|
||||
'ds' => 'l2_read_bytes',
|
||||
];
|
||||
} else {
|
||||
d_echo('RRD "' . $rrd_filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_multi_line.inc.php';
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Bytes';
|
||||
$colours = 'psychedelic';
|
||||
$descr = 'L2 Size';
|
||||
$ds = 'l2_size';
|
||||
|
||||
$filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
$name = 'zfs';
|
||||
$unit_text = 'Bytes';
|
||||
$colours = 'psychedelic';
|
||||
$dostack = 0;
|
||||
$printtotal = 0;
|
||||
$addarea = 1;
|
||||
$transparency = 15;
|
||||
|
||||
$rrd_filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id, '_____group2']);
|
||||
|
||||
$rrd_list = [];
|
||||
if (Rrd::checkRrdExists($rrd_filename)) {
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'A Size',
|
||||
'ds' => 'l2_asize',
|
||||
];
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'BufC D Asize',
|
||||
'ds' => 'l2_bufc_d_asize',
|
||||
];
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'BufC M Asize',
|
||||
'ds' => 'l2_bufc_m_asize',
|
||||
];
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'Log Blk Asize',
|
||||
'ds' => 'l2_log_blk_asize',
|
||||
];
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'MFU Asize',
|
||||
'ds' => 'l2_mfu_asize',
|
||||
];
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'MRU Asize',
|
||||
'ds' => 'l2_mru_asize',
|
||||
];
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'Prefetch Asize',
|
||||
'ds' => 'l2_prefetch_asize',
|
||||
];
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'Rebuild Asize',
|
||||
'ds' => 'l2_rb_asize',
|
||||
];
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'Log Blk Avg Asize',
|
||||
'ds' => 'l2_log_blk_avg_as',
|
||||
];
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'HDR Size',
|
||||
'ds' => 'l2_hdr_size',
|
||||
];
|
||||
} else {
|
||||
d_echo('RRD "' . $rrd_filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_multi_line.inc.php';
|
||||
@@ -10,7 +10,8 @@ $link_array = [
|
||||
print_optionbar_start();
|
||||
|
||||
echo generate_link('ARC', $link_array);
|
||||
echo '| Pools:';
|
||||
echo ' | ' . generate_link('L2', $link_array, ['zfs_page'=>'l2']);
|
||||
echo ' | Pools: ';
|
||||
|
||||
$pools = $app->data['pools'] ?? [];
|
||||
sort($pools);
|
||||
@@ -28,7 +29,33 @@ foreach ($pools as $index => $pool) {
|
||||
|
||||
print_optionbar_end();
|
||||
|
||||
if (! isset($vars['pool'])) {
|
||||
if (isset($vars['pool'])) {
|
||||
$graphs = [
|
||||
'zfs_pool_space'=>'Pool Space',
|
||||
'zfs_pool_cap'=>'Pool Capacity',
|
||||
'zfs_pool_frag'=>'Pool Fragmentation',
|
||||
];
|
||||
} elseif (isset($vars['zfs_page']) && $vars['zfs_page'] == 'l2') {
|
||||
$graphs = [
|
||||
'zfs_l2_size' => 'L2 size in bytes',
|
||||
'zfs_l2_rw_bytes' => 'L2 Read And Writes Bytes Per Second',
|
||||
'zfs_l2_d_to_m_ratio' => 'L2 Data To Meta Ratio',
|
||||
'zfs_l2_access_total' => 'L2 Total Hits And Misses Per Second',
|
||||
'zfs_l2_errors' => 'L2 Errors Per Second',
|
||||
'zfs_l2_errors' => 'L2 Error Types Per Second',
|
||||
'zfs_l2_sizes' => 'L2 Sizes',
|
||||
'zfs_l2_asize' => 'L2 Asize',
|
||||
'zfs_l2_bufc_d_asize' => 'L2 BufC Data Asize',
|
||||
'zfs_l2_bufc_m_asize' => 'L2 BufC Metadata Asize',
|
||||
'zfs_l2_hdr_size' => 'L2 HDR Size',
|
||||
'zfs_l2_log_blk_asize' => 'L2 Log Blk Asize',
|
||||
'zfs_l2_mfu_asize' => 'L2 MFU Asize',
|
||||
'zfs_l2_mru_asize' => 'L2 MRU Asize',
|
||||
'zfs_l2_prefetch_asize' => 'L2 Prefetch Asize',
|
||||
'zfs_l2_rb_asize' => 'L2 Rebuild Asize',
|
||||
'zfs_l2_abort_lowmem' => 'L2 Abort Lowmem Per Second',
|
||||
];
|
||||
} else {
|
||||
$graphs = [
|
||||
'zfs_arc_misc' => 'ARC misc',
|
||||
'zfs_arc_size' => 'ARC size in bytes',
|
||||
@@ -41,12 +68,6 @@ if (! isset($vars['pool'])) {
|
||||
'zfs_arc_cache_hits' => 'ARC cache hits',
|
||||
'zfs_arc_cache_miss' => 'ARC cache misses',
|
||||
];
|
||||
} else {
|
||||
$graphs = [
|
||||
'zfs_pool_space'=>'Pool Space',
|
||||
'zfs_pool_cap'=>'Pool Capacity',
|
||||
'zfs_pool_frag'=>'Pool Fragmentation',
|
||||
];
|
||||
}
|
||||
|
||||
foreach ($graphs as $key => $text) {
|
||||
|
||||
@@ -135,6 +135,102 @@ $fields = [
|
||||
$tags = ['name' => $name, 'app_id' => $app->app_id, 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name];
|
||||
data_update($device, 'app', $tags, $fields);
|
||||
|
||||
// name choosen based on this is the second group of variables
|
||||
$rrd_name = ['app', $name, $app->app_id, '_____group2'];
|
||||
$rrd_def = RrdDefinition::make()
|
||||
->addDataset('l2_abort_lowmem', 'DERIVE', 0)
|
||||
->addDataset('l2_access_total', 'DERIVE', 0)
|
||||
->addDataset('l2_asize', 'GAUGE', 0)
|
||||
->addDataset('l2_bufc_d_asize', 'GAUGE', 0)
|
||||
->addDataset('l2_bufc_m_asize', 'GAUGE', 0)
|
||||
->addDataset('l2_cksum_bad', 'DERIVE', 0)
|
||||
->addDataset('l2_d_to_m_ratio', 'GAUGE', 0)
|
||||
->addDataset('l2_errors', 'DERIVE', 0)
|
||||
->addDataset('l2_evict_l1cached', 'DERIVE', 0)
|
||||
->addDataset('l2_evict_l_retry', 'DERIVE', 0)
|
||||
->addDataset('l2_evict_reading', 'DERIVE', 0)
|
||||
->addDataset('l2_feeds', 'DERIVE', 0)
|
||||
->addDataset('l2_free_on_write', 'DERIVE', 0)
|
||||
->addDataset('l2_hdr_size', 'GAUGE', 0)
|
||||
->addDataset('l2_hits', 'DERIVE', 0)
|
||||
->addDataset('l2_io_error', 'DERIVE', 0)
|
||||
->addDataset('l2_log_blk_asize', 'GAUGE', 0)
|
||||
->addDataset('l2_log_blk_avg_as', 'DERIVE', 0)
|
||||
->addDataset('l2_log_blk_count', 'DERIVE', 0)
|
||||
->addDataset('l2_log_blk_writes', 'DERIVE', 0)
|
||||
->addDataset('l2_mfu_asize', 'GAUGE', 0)
|
||||
->addDataset('l2_misses', 'DERIVE', 0)
|
||||
->addDataset('l2_mru_asize', 'GAUGE', 0)
|
||||
->addDataset('l2_prefetch_asize', 'GAUGE', 0)
|
||||
->addDataset('l2_read_bytes', 'DERIVE', 0)
|
||||
->addDataset('l2_rb_asize', 'GAUGE', 0)
|
||||
->addDataset('l2_rb_bufs', 'DERIVE', 0)
|
||||
->addDataset('l2_rb_bufs_prec', 'DERIVE', 0)
|
||||
->addDataset('l2_rb_csum_lb_err', 'DERIVE', 0)
|
||||
->addDataset('l2_rb_dh_err', 'DERIVE', 0)
|
||||
->addDataset('l2_rb_io_errors', 'DERIVE', 0)
|
||||
->addDataset('l2_rb_log_blks', 'DERIVE', 0)
|
||||
->addDataset('l2_rb_lowmem', 'DERIVE', 0)
|
||||
->addDataset('l2_rb_size', 'GAUGE', 0)
|
||||
->addDataset('l2_rb_success', 'DERIVE', 0)
|
||||
->addDataset('l2_rb_unsup', 'DERIVE', 0)
|
||||
->addDataset('l2_rw_clash', 'DERIVE', 0)
|
||||
->addDataset('l2_size', 'GAUGE', 0)
|
||||
->addDataset('l2_write_bytes', 'DERIVE', 0)
|
||||
->addDataset('l2_writes_done', 'DERIVE', 0)
|
||||
->addDataset('l2_writes_error', 'DERIVE', 0)
|
||||
->addDataset('l2_writes_l_retry', 'DERIVE', 0)
|
||||
->addDataset('l2_writes_sent', 'DERIVE', 0);
|
||||
|
||||
$fields = [
|
||||
'l2_abort_lowmem' => $zfs['l2_abort_lowmem'],
|
||||
'l2_access_total' => $zfs['l2_access_total'],
|
||||
'l2_asize' => $zfs['l2_asize'],
|
||||
'l2_bufc_d_asize' => $zfs['l2_bufc_data_asize'],
|
||||
'l2_bufc_m_asize' => $zfs['l2_bufc_metadata_asize'],
|
||||
'l2_cksum_bad' => $zfs['l2_cksum_bad'],
|
||||
'l2_d_to_m_ratio' => $zfs['l2_data_to_meta_ratio'],
|
||||
'l2_errors' => $zfs['l2_errors'],
|
||||
'l2_evict_l1cached' => $zfs['l2_evict_l1cached'],
|
||||
'l2_evict_l_retry' => $zfs['l2_evict_lock_retry'],
|
||||
'l2_evict_reading' => $zfs['l2_evict_reading'],
|
||||
'l2_feeds' => $zfs['l2_feeds'],
|
||||
'l2_free_on_write' => $zfs['l2_free_on_write'],
|
||||
'l2_hdr_size' => $zfs['l2_hdr_size'],
|
||||
'l2_hits' => $zfs['l2_hits'],
|
||||
'l2_io_error' => $zfs['l2_io_error'],
|
||||
'l2_log_blk_asize' => $zfs['l2_log_blk_asize'],
|
||||
'l2_log_blk_avg_as' => $zfs['l2_log_blk_avg_asize'],
|
||||
'l2_log_blk_count' => $zfs['l2_log_blk_count'],
|
||||
'l2_log_blk_writes' => $zfs['l2_log_blk_writes'],
|
||||
'l2_mfu_asize' => $zfs['l2_mfu_asize'],
|
||||
'l2_misses' => $zfs['l2_misses'],
|
||||
'l2_mru_asize' => $zfs['l2_mru_asize'],
|
||||
'l2_prefetch_asize' => $zfs['l2_prefetch_asize'],
|
||||
'l2_read_bytes' => $zfs['l2_read_bytes'],
|
||||
'l2_rb_asize' => $zfs['l2_rebuild_asize'],
|
||||
'l2_rb_bufs' => $zfs['l2_rebuild_bufs'],
|
||||
'l2_rb_bufs_prec' => $zfs['l2_rebuild_bufs_precached'],
|
||||
'l2_rb_csum_lb_err' => $zfs['l2_rebuild_cksum_lb_errors'],
|
||||
'l2_rb_dh_err' => $zfs['l2_rebuild_dh_errors'],
|
||||
'l2_rb_io_errors' => $zfs['l2_rebuild_io_errors'],
|
||||
'l2_rb_log_blks' => $zfs['l2_rebuild_log_blks'],
|
||||
'l2_rb_lowmem' => $zfs['l2_rebuild_lowmem'],
|
||||
'l2_rb_size' => $zfs['l2_rebuild_size'],
|
||||
'l2_rb_success' => $zfs['l2_rebuild_success'],
|
||||
'l2_rb_unsup' => $zfs['l2_rebuild_unsupported'],
|
||||
'l2_rw_clash' => $zfs['l2_rw_clash'],
|
||||
'l2_size' => $zfs['l2_size'],
|
||||
'l2_write_bytes' => $zfs['l2_write_bytes'],
|
||||
'l2_writes_done' => $zfs['l2_writes_done'],
|
||||
'l2_writes_error' => $zfs['l2_writes_error'],
|
||||
'l2_writes_l_retry' => $zfs['l2_writes_lock_retry'],
|
||||
'l2_writes_sent' => $zfs['l2_writes_sent'],
|
||||
];
|
||||
|
||||
$tags = ['name' => $name, 'app_id' => $app->app_id, 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name];
|
||||
data_update($device, 'app', $tags, $fields);
|
||||
|
||||
//
|
||||
// process additional info returned
|
||||
//
|
||||
@@ -174,6 +270,29 @@ foreach ($zfs['pools'] as $pool) {
|
||||
}
|
||||
}
|
||||
|
||||
// gets the pool health status
|
||||
$old_health = $app->data['health'] ?? 1;
|
||||
if (isset($zfs['health'])) {
|
||||
$health = $zfs['health'];
|
||||
if ($old_health != $zfs['health']) {
|
||||
if ($zfs['health'] == 1) {
|
||||
log_event('ZFS pool(s) now healthy', $device, 'application', 1);
|
||||
} else {
|
||||
log_event('ZFS pool(s) DEGRADED, FAULTED, UNAVAIL, REMOVED, or unknown', $device, 'application', 5);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$health = 1;
|
||||
}
|
||||
|
||||
// gets the l2 error status
|
||||
$old_l2_errors = $app->data['l2_errors'] ?? 0;
|
||||
if (isset($zfs['l2_errors'])) {
|
||||
if ($old_l2_errors != $zfs['l2_errors']) {
|
||||
log_event('ZFS L2 cache has experienced errors', $device, 'application', 5);
|
||||
}
|
||||
}
|
||||
|
||||
// check for added or removed pools
|
||||
$old_pools = $app->data['pools'] ?? [];
|
||||
$added_pools = array_diff($pools, $old_pools);
|
||||
@@ -181,11 +300,11 @@ $removed_pools = array_diff($old_pools, $pools);
|
||||
|
||||
// if we have any source pools, save and log
|
||||
if (count($added_pools) > 0 || count($removed_pools) > 0) {
|
||||
$app->data = ['pools' => $pools];
|
||||
$log_message = 'ZFS Pool Change:';
|
||||
$log_message .= count($added_pools) > 0 ? ' Added ' . implode(',', $added_pools) : '';
|
||||
$log_message .= count($removed_pools) > 0 ? ' Removed ' . implode(',', $added_pools) : '';
|
||||
log_event($log_message, $device, 'application');
|
||||
}
|
||||
$app->data = ['pools' => $pools, 'health' => $health, 'l2_errors' => $zfs['l2_errors']];
|
||||
|
||||
update_application($app, 'OK', $metrics);
|
||||
|
||||
@@ -593,6 +593,16 @@
|
||||
"name": "Systemd Services Failed > 0",
|
||||
"severity": "warning"
|
||||
},
|
||||
{
|
||||
"rule": "applications.app_type = \"zfs\" && application_metrics.metric = \"l2_errors\" && application_metrics.value >= \"1\"",
|
||||
"name": "ZFS L2 errors present",
|
||||
"severity": "critical"
|
||||
},
|
||||
{
|
||||
"rule": "applications.app_type = \"zfs\" && application_metrics.metric = \"health\" && application_metrics.value = \"0\"",
|
||||
"name": "ZFS has one or more pool DEGRADED, FAULTED, UNAVAIL, REMOVED, or other",
|
||||
"severity": "critical"
|
||||
},
|
||||
{
|
||||
"rule": "applications.app_type = \"linux_config_files\" && application_metrics.metric = \"number_of_confs\" && application_metrics.value > \"0\"",
|
||||
"name": "linux_config_files Configuration Files Out-Of-Sync > 0",
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"app_state_prev": "UNKNOWN",
|
||||
"app_status": "",
|
||||
"app_instance": "",
|
||||
"data": "{\"pools\":[\"arc\"]}"
|
||||
"data": "{\"pools\":[\"arc\"],\"health\":1,\"l2_errors\":null}"
|
||||
}
|
||||
],
|
||||
"application_metrics": [
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"app_state_prev": "UNKNOWN",
|
||||
"app_status": "",
|
||||
"app_instance": "",
|
||||
"data": "{\"pools\":[\"arc\"]}"
|
||||
"data": "{\"pools\":[\"arc\"],\"health\":1,\"l2_errors\":null}"
|
||||
}
|
||||
],
|
||||
"application_metrics": [
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"app_state_prev": "UNKNOWN",
|
||||
"app_status": "",
|
||||
"app_instance": "",
|
||||
"data": "{\"pools\":[\"arc\"]}"
|
||||
"data": "{\"pools\":[\"arc\"],\"health\":1,\"l2_errors\":null}"
|
||||
}
|
||||
],
|
||||
"application_metrics": [
|
||||
|
||||
@@ -0,0 +1,734 @@
|
||||
{
|
||||
"applications": {
|
||||
"discovery": {
|
||||
"applications": [
|
||||
{
|
||||
"app_type": "zfs",
|
||||
"app_state": "UNKNOWN",
|
||||
"discovered": 1,
|
||||
"app_state_prev": null,
|
||||
"app_status": "",
|
||||
"app_instance": "",
|
||||
"data": null
|
||||
}
|
||||
]
|
||||
},
|
||||
"poller": {
|
||||
"applications": [
|
||||
{
|
||||
"app_type": "zfs",
|
||||
"app_state": "OK",
|
||||
"discovered": 1,
|
||||
"app_state_prev": "UNKNOWN",
|
||||
"app_status": "",
|
||||
"app_instance": "",
|
||||
"data": "{\"pools\":[\"arc\"],\"health\":1,\"l2_errors\":0}"
|
||||
}
|
||||
],
|
||||
"application_metrics": [
|
||||
{
|
||||
"metric": "actual_hit_per",
|
||||
"value": 96.09917208021,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "anon_hits",
|
||||
"value": -2439949,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "anon_hits_per",
|
||||
"value": -0.21443943717893,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "arc_accesses_total",
|
||||
"value": 1183187927,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "arc_hits",
|
||||
"value": 1137826620,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "arc_misses",
|
||||
"value": 45361307,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "arc_size",
|
||||
"value": 1048270624,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "arc_size_per",
|
||||
"value": 3.1581346931151,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "cache_hits_per",
|
||||
"value": 96.166179018154,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "cache_miss_per",
|
||||
"value": 3.8338209818465,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "data_demand_per",
|
||||
"value": 95.461167284163,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "data_pre_per",
|
||||
"value": 8.2718806970289,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "degraded",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "deleted",
|
||||
"value": 42382148,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "demand_data_hits",
|
||||
"value": 1015682,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "demand_data_misses",
|
||||
"value": 48292,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "demand_data_total",
|
||||
"value": 1063974,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "demand_hits_per",
|
||||
"value": 0.089265093833013,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "demand_meta_hits",
|
||||
"value": 1133980912,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "demand_meta_misses",
|
||||
"value": 31377034,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "demand_misses_per",
|
||||
"value": 0.10646077724348,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "evict_l2_cached",
|
||||
"value": 227948678144,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "evict_l2_eligible",
|
||||
"value": 128654282240,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "evict_l2_eligible_mfu",
|
||||
"value": 28666240512,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "evict_l2_eligible_mru",
|
||||
"value": 99988041728,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "evict_l2_ineligible",
|
||||
"value": 94654349824,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "evict_l2_skip",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "evict_skip",
|
||||
"value": 133213142,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "faulted",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "freq_used_per",
|
||||
"value": 32.977470290171,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "health",
|
||||
"value": 1,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_abort_lowmem",
|
||||
"value": 2264908,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_access_total",
|
||||
"value": 45361287,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_asize",
|
||||
"value": 59218449920,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_bufc_data_asize",
|
||||
"value": 33123006976,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_bufc_metadata_asize",
|
||||
"value": 26095442944,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_cksum_bad",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_data_to_meta_ratio",
|
||||
"value": 374,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_errors",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_evict_l1cached",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_evict_lock_retry",
|
||||
"value": 1,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_evict_reading",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_feeds",
|
||||
"value": 27311,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_free_on_write",
|
||||
"value": 112,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_hdr_size",
|
||||
"value": 808407552,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_hits",
|
||||
"value": 30337921,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_io_error",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_log_blk_asize",
|
||||
"value": 120487424,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_log_blk_avg_asize",
|
||||
"value": 11287,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_log_blk_count",
|
||||
"value": 8863,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_log_blk_writes",
|
||||
"value": 586,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_mfu_asize",
|
||||
"value": 29688845824,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_misses",
|
||||
"value": 15023366,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_mru_asize",
|
||||
"value": 29442406400,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_prefetch_asize",
|
||||
"value": 87197696,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_read_bytes",
|
||||
"value": 26255805440,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_rebuild_asize",
|
||||
"value": 61671941120,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_rebuild_bufs",
|
||||
"value": 8478512,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_rebuild_bufs_precached",
|
||||
"value": 1510,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_rebuild_cksum_lb_errors",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_rebuild_dh_errors",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_rebuild_io_errors",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_rebuild_log_blks",
|
||||
"value": 8296,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_rebuild_lowmem",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_rebuild_size",
|
||||
"value": 162050568192,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_rebuild_success",
|
||||
"value": 1,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_rebuild_unsupported",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_rw_clash",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_size",
|
||||
"value": 159099220992,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_write_bytes",
|
||||
"value": 2453267968,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_writes_done",
|
||||
"value": 3537,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_writes_error",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_writes_lock_retry",
|
||||
"value": 5,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "l2_writes_sent",
|
||||
"value": 3537,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "meta_hits_per",
|
||||
"value": 99.662012829336,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "meta_misses_per",
|
||||
"value": 69.171362280192,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "mfu_ghost_hits",
|
||||
"value": 2064593,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "mfu_ghost_per",
|
||||
"value": 0.18145057987833,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "mfu_hits",
|
||||
"value": 859725964,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "mfu_per",
|
||||
"value": 75.558608744802,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "mfu_size",
|
||||
"value": 353131574,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "min_size_per",
|
||||
"value": 3.2260897504717,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "mru_ghost_hits",
|
||||
"value": 1168174,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "mru_ghost_per",
|
||||
"value": 0.10266713570122,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "mru_hits",
|
||||
"value": 277307838,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "mru_per",
|
||||
"value": 24.371712976798,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "mutex_skip",
|
||||
"value": 4047053,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "offline",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "online",
|
||||
"value": 1,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "p",
|
||||
"value": 717695178,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pool_arc_alloc",
|
||||
"value": 14344697704448,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pool_arc_cap",
|
||||
"value": 89,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pool_arc_dedup",
|
||||
"value": 1,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pool_arc_expandsz",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pool_arc_frag",
|
||||
"value": 55,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pool_arc_free",
|
||||
"value": 1598220898304,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pool_arc_size",
|
||||
"value": 15942918602752,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pre_data_hits",
|
||||
"value": 10073,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pre_data_misses",
|
||||
"value": 111701,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pre_data_total",
|
||||
"value": 121774,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pre_hits_per",
|
||||
"value": 0.00088528426237734,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pre_meta_hits",
|
||||
"value": 2819953,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pre_meta_hits_per",
|
||||
"value": 0.24783679256863,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pre_meta_misses",
|
||||
"value": 13824280,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pre_meta_misses_per",
|
||||
"value": 30.475929628747,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "pre_misses_per",
|
||||
"value": 0.24624731381748,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "real_hits",
|
||||
"value": 1137033802,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "rec_used_per",
|
||||
"value": 67.022529709829,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "recycle_miss",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "removed",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "target_size",
|
||||
"value": 1070826752,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "target_size_arat",
|
||||
"value": 0.032260897504717,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "target_size_max",
|
||||
"value": 33192714240,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "target_size_min",
|
||||
"value": 1070826752,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "target_size_per",
|
||||
"value": 3.2260897504717,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "unavail",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
},
|
||||
{
|
||||
"metric": "unknown",
|
||||
"value": 0,
|
||||
"value_prev": null,
|
||||
"app_type": "zfs"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user