feature: Add FreeBSD NFS Client/Server application support (#6008)

This commit is contained in:
VVelox
2017-03-03 08:48:46 -06:00
committed by Neil Lathwood
parent 6612cb029d
commit 354bd2144d
11 changed files with 809 additions and 0 deletions

View File

@@ -29,6 +29,8 @@ Different applications support a variety of ways collect data: by direct connect
1. [Munin](#munin) - Agent
1. [PHP-FPM](#php-fpm) - SNMP extend
1. [Fail2ban](#fail2ban) - SNMP extend
1. [FreeBSD NFS Server](#freebsd-nfs-server) - SNMP extend
1. [FreeBSD NFS Client](#freebsd-nfs-client) - SNMP extend
1. [Postgres](#postgres) - SNMP extend
1. [Postfix](#postfix) - SNMP extend
@@ -544,6 +546,40 @@ extend postgres /etc/snmp/postgres
8: On the device page in Librenms, edit your host and check `Postgres` under the Applications tab.
#### FreeBSD NFS Client
##### SNMP Extend
1: Copy the shell script, fbsdnfsserver, to the desired host (the host must be added to LibreNMS devices) (wget https://github.com/librenms/librenms-agent/raw/master/snmp/fbsdnfsclient -O /etc/snmp/fbsdnfsclient)
2: Make the script executable (chmod +x /etc/snmp/fbsdnfsclient)
3: Edit your snmpd.conf file and add:
```
extend fbsdnfsclient /etc/snmp/fbsdnfsclient
```
4: Restart snmpd on your host
5: On the device page in Librenms, edit your host and check `FreeBSD NFS Client` under the Applications tab.
#### FreeBSD NFS Server
##### SNMP Extend
1: Copy the shell script, fbsdnfsserver, to the desired host (the host must be added to LibreNMS devices) (wget https://github.com/librenms/librenms-agent/raw/master/snmp/fbsdnfsserver -O /etc/snmp/fbsdnfsserver)
2: Make the script executable (chmod +x /etc/snmp/fbsdnfsserver)
3: Edit your snmpd.conf file and add:
```
extend fbsdnfsserver /etc/snmp/fbsdnfsserver
```
4: Restart snmpd on your host
5: On the device page in Librenms, edit your host and check `FreeBSD NFS Server` under the Applications tab.
#### Postfix
##### SNMP Extend

View File

@@ -103,6 +103,12 @@ function nicecase($item)
case 'exim-stats':
return 'EXIM Stats';
case 'fbsd-nfs-client':
return 'FreeBSD NFS Client';
case 'fbsd-nfs-server':
return 'FreeBSD NFS Server';
case 'php-fpm':
return 'PHP-FPM';

View File

@@ -0,0 +1,120 @@
<?php
$name = 'fbsd-nfs-client';
$app_id = $app['app_id'];
$scale_min = 0;
$colours = 'mixed';
$unit_text = 'per second';
$unitlen = 10;
$bigdescrlen = 12;
$smalldescrlen = 12;
$dostack = 0;
$printtotal = 0;
$addarea = 1;
$transparency = 15;
$rrd_filename = rrd_name($device['hostname'], array('app', $name, $app_id));
if (is_file($rrd_filename)) {
$rrd_list = array(
array(
'filename' => $rrd_filename,
'descr' => 'attr hits',
'ds' => 'attrhits',
'colour' => '582a72'
),
array(
'filename' => $rrd_filename,
'descr' => 'attr misses',
'ds' => 'attrmisses',
'colour' => '28774f'
),
array(
'filename' => $rrd_filename,
'descr' => 'lkup hits',
'ds' => 'lkuphits',
'colour' => 'aa6c39'
),
array(
'filename' => $rrd_filename,
'descr' => 'lkup misses',
'ds' => 'lkupmisses',
'colour' => '88cc88'
),
array(
'filename' => $rrd_filename,
'descr' => 'bioR hits',
'ds' => 'biorhits',
'colour' => 'd46a6a'
),
array(
'filename' => $rrd_filename,
'descr' => 'bioR misses',
'ds' => 'biormisses',
'colour' => 'ffd1aa'
),
array(
'filename' => $rrd_filename,
'descr' => 'bioW hits',
'ds' => 'biowhits',
'colour' => '582a72'
),
array(
'filename' => $rrd_filename,
'descr' => 'bioW misses',
'ds' => 'biowmisses',
'colour' => 'aa8839'
),
array(
'filename' => $rrd_filename,
'descr' => 'biorRL hits',
'ds' => 'biorlhits',
'colour' => '28536c'
),
array(
'filename' => $rrd_filename,
'descr' => 'bioRL misses',
'ds' => 'biorlmisses',
'colour' => '880000'
),
array(
'filename' => $rrd_filename,
'descr' => 'bioD hits',
'ds' => 'biodhits',
'colour' => 'ff0000'
),
array(
'filename' => $rrd_filename,
'descr' => 'bioD misses',
'ds' => 'biodmisses',
'colour' => '285300'
),
array(
'filename' => $rrd_filename,
'descr' => 'dirE hits',
'ds' => 'direhits',
'colour' => '2800ff'
),
array(
'filename' => $rrd_filename,
'descr' => 'dirE misses',
'ds' => 'diremisses',
'colour' => '000080'
),
array(
'filename' => $rrd_filename,
'descr' => 'accs hits',
'ds' => 'accshits',
'colour' => '500000'
),
array(
'filename' => $rrd_filename,
'descr' => 'accs misses',
'ds' => 'accsmisses',
'colour' => 'aa6511'
)
);
} else {
echo "file missing: $rrd_filename";
}
require 'includes/graphs/generic_v3_multiline.inc.php';

View File

@@ -0,0 +1,54 @@
<?php
$name = 'fbsd-nfs-client';
$app_id = $app['app_id'];
$scale_min = 0;
$colours = 'mixed';
$unit_text = 'per second';
$unitlen = 10;
$bigdescrlen = 10;
$smalldescrlen = 10;
$dostack = 0;
$printtotal = 0;
$addarea = 1;
$transparency = 15;
$rrd_filename = rrd_name($device['hostname'], array('app', $name, $app_id));
if (is_file($rrd_filename)) {
$rrd_list = array(
array(
'filename' => $rrd_filename,
'descr' => 'timed out',
'ds' => 'timedout',
'colour' => '582a72'
),
array(
'filename' => $rrd_filename,
'descr' => 'invalid',
'ds' => 'invalid',
'colour' => 'ffd1aa'
),
array(
'filename' => $rrd_filename,
'descr' => 'x replies',
'ds' => 'xreplies',
'colour' => 'aa6c39'
),
array(
'filename' => $rrd_filename,
'descr' => 'retries',
'ds' => 'retries',
'colour' => '28536c'
),
array(
'filename' => $rrd_filename,
'descr' => 'requests',
'ds' => 'requests',
'colour' => 'ff11bb'
)
);
} else {
echo "file missing: $rrd_filename";
}
require 'includes/graphs/generic_v3_multiline.inc.php';

View File

@@ -0,0 +1,150 @@
<?php
$name = 'fbsd-nfs-client';
$app_id = $app['app_id'];
$scale_min = 0;
$colours = 'mixed';
$unit_text = 'per second';
$unitlen = 10;
$bigdescrlen = 10;
$smalldescrlen = 10;
$dostack = 0;
$printtotal = 0;
$addarea = 1;
$transparency = 15;
$rrd_filename = rrd_name($device['hostname'], array('app', $name, $app_id));
if (is_file($rrd_filename)) {
$rrd_list = array(
array(
'filename' => $rrd_filename,
'descr' => 'getattr',
'ds' => 'getattr',
'colour' => '582a72'
),
array(
'filename' => $rrd_filename,
'descr' => 'setattr',
'ds' => 'setattr',
'colour' => '28774f'
),
array(
'filename' => $rrd_filename,
'descr' => 'lookup',
'ds' => 'lookup',
'colour' => 'aa6c39'
),
array(
'filename' => $rrd_filename,
'descr' => 'readlink',
'ds' => 'readlink',
'colour' => '88cc88'
),
array(
'filename' => $rrd_filename,
'descr' => 'read',
'ds' => 'read',
'colour' => 'd46a6a'
),
array(
'filename' => $rrd_filename,
'descr' => 'write',
'ds' => 'write',
'colour' => 'ffd1aa'
),
array(
'filename' => $rrd_filename,
'descr' => 'create',
'ds' => 'create',
'colour' => '582a72'
),
array(
'filename' => $rrd_filename,
'descr' => 'remove',
'ds' => 'remove',
'colour' => 'aa8839'
),
array(
'filename' => $rrd_filename,
'descr' => 'rename',
'ds' => 'rename',
'colour' => '28536c'
),
array(
'filename' => $rrd_filename,
'descr' => 'link',
'ds' => 'link',
'colour' => '880000'
),
array(
'filename' => $rrd_filename,
'descr' => 'symlink',
'ds' => 'symlink',
'colour' => 'ff0000'
),
array(
'filename' => $rrd_filename,
'descr' => 'mkdir',
'ds' => 'mkdir',
'colour' => '285300'
),
array(
'filename' => $rrd_filename,
'descr' => 'rmdir',
'ds' => 'rmdir',
'colour' => '2800ff'
),
array(
'filename' => $rrd_filename,
'descr' => 'readdir',
'ds' => 'readdir',
'colour' => '000080'
),
array(
'filename' => $rrd_filename,
'descr' => 'rdirplus',
'ds' => 'rdirplus',
'colour' => '500000'
),
array(
'filename' => $rrd_filename,
'descr' => 'access',
'ds' => 'access',
'colour' => 'aa6511'
),
array(
'filename' => $rrd_filename,
'descr' => 'mknod',
'ds' => 'mknod',
'colour' => '98139c'
),
array(
'filename' => $rrd_filename,
'descr' => 'fsstat',
'ds' => 'fsstat',
'colour' => 'd853dc'
),
array(
'filename' => $rrd_filename,
'descr' => 'fsinfo',
'ds' => 'fsinfo',
'colour' => 'd853dc'
),
array(
'filename' => $rrd_filename,
'descr' => 'pathconf',
'ds' => 'pathconf',
'colour' => 'f8f36c'
),
array(
'filename' => $rrd_filename,
'descr' => 'commit',
'ds' => 'commit',
'colour' => 'ff536c'
)
);
} else {
echo "file missing: $rrd_filename";
}
require 'includes/graphs/generic_v3_multiline.inc.php';

View File

@@ -0,0 +1,48 @@
<?php
$name = 'fbsd-nfs-server';
$app_id = $app['app_id'];
$scale_min = 0;
$colours = 'mixed';
$unit_text = 'per second';
$unitlen = 10;
$bigdescrlen = 10;
$smalldescrlen = 10;
$dostack = 0;
$printtotal = 0;
$addarea = 1;
$transparency = 15;
$rrd_filename = rrd_name($device['hostname'], array('app', $name, $app_id));
if (is_file($rrd_filename)) {
$rrd_list = array(
array(
'filename' => $rrd_filename,
'descr' => 'inprog',
'ds' => 'inprog',
'colour' => '582a72'
),
array(
'filename' => $rrd_filename,
'descr' => 'idem',
'ds' => 'idem',
'colour' => 'ffd1aa'
),
array(
'filename' => $rrd_filename,
'descr' => 'nonidem',
'ds' => 'nonidem',
'colour' => 'aa6c39'
),
array(
'filename' => $rrd_filename,
'descr' => 'misses',
'ds' => 'misses',
'colour' => '28536c'
)
);
} else {
echo "file missing: $rrd_filename";
}
require 'includes/graphs/generic_v3_multiline.inc.php';

View File

@@ -0,0 +1,42 @@
<?php
$name = 'fbsd-nfs-server';
$app_id = $app['app_id'];
$scale_min = 0;
$colours = 'mixed';
$unit_text = 'per second';
$unitlen = 10;
$bigdescrlen = 10;
$smalldescrlen = 10;
$dostack = 0;
$printtotal = 0;
$addarea = 1;
$transparency = 15;
$rrd_filename = rrd_name($device['hostname'], array('app', $name, $app_id));
if (is_file($rrd_filename)) {
$rrd_list = array(
array(
'filename' => $rrd_filename,
'descr' => 'write ops',
'ds' => 'writeops',
'colour' => 'aa6c39'
),
array(
'filename' => $rrd_filename,
'descr' => 'write rpc',
'ds' => 'writerpc',
'colour' => '582a72'
),
array(
'filename' => $rrd_filename,
'descr' => 'ops saved',
'ds' => 'opsaved',
'colour' => '28536c'
)
);
} else {
echo "file missing: $rrd_filename";
}
require 'includes/graphs/generic_v3_multiline.inc.php';

View File

@@ -0,0 +1,150 @@
<?php
$name = 'fbsd-nfs-server';
$app_id = $app['app_id'];
$scale_min = 0;
$colours = 'mixed';
$unit_text = 'per second';
$unitlen = 10;
$bigdescrlen = 10;
$smalldescrlen = 10;
$dostack = 0;
$printtotal = 0;
$addarea = 1;
$transparency = 15;
$rrd_filename = rrd_name($device['hostname'], array('app', $name, $app_id));
if (is_file($rrd_filename)) {
$rrd_list = array(
array(
'filename' => $rrd_filename,
'descr' => 'getattr',
'ds' => 'getattr',
'colour' => '582a72'
),
array(
'filename' => $rrd_filename,
'descr' => 'setattr',
'ds' => 'setattr',
'colour' => '28774f'
),
array(
'filename' => $rrd_filename,
'descr' => 'lookup',
'ds' => 'lookup',
'colour' => 'aa6c39'
),
array(
'filename' => $rrd_filename,
'descr' => 'readlink',
'ds' => 'readlink',
'colour' => '88cc88'
),
array(
'filename' => $rrd_filename,
'descr' => 'read',
'ds' => 'read',
'colour' => 'd46a6a'
),
array(
'filename' => $rrd_filename,
'descr' => 'write',
'ds' => 'write',
'colour' => 'ffd1aa'
),
array(
'filename' => $rrd_filename,
'descr' => 'create',
'ds' => 'create',
'colour' => '582a72'
),
array(
'filename' => $rrd_filename,
'descr' => 'remove',
'ds' => 'remove',
'colour' => 'aa8839'
),
array(
'filename' => $rrd_filename,
'descr' => 'rename',
'ds' => 'rename',
'colour' => '28536c'
),
array(
'filename' => $rrd_filename,
'descr' => 'link',
'ds' => 'link',
'colour' => '880000'
),
array(
'filename' => $rrd_filename,
'descr' => 'symlink',
'ds' => 'symlink',
'colour' => 'ff0000'
),
array(
'filename' => $rrd_filename,
'descr' => 'mkdir',
'ds' => 'mkdir',
'colour' => '285300'
),
array(
'filename' => $rrd_filename,
'descr' => 'rmdir',
'ds' => 'rmdir',
'colour' => '2800ff'
),
array(
'filename' => $rrd_filename,
'descr' => 'readdir',
'ds' => 'readdir',
'colour' => '000080'
),
array(
'filename' => $rrd_filename,
'descr' => 'rdirplus',
'ds' => 'rdirplus',
'colour' => '500000'
),
array(
'filename' => $rrd_filename,
'descr' => 'access',
'ds' => 'access',
'colour' => 'aa6511'
),
array(
'filename' => $rrd_filename,
'descr' => 'mknod',
'ds' => 'mknod',
'colour' => '98139c'
),
array(
'filename' => $rrd_filename,
'descr' => 'fsstat',
'ds' => 'fsstat',
'colour' => 'd853dc'
),
array(
'filename' => $rrd_filename,
'descr' => 'fsinfo',
'ds' => 'fsinfo',
'colour' => 'd853dc'
),
array(
'filename' => $rrd_filename,
'descr' => 'pathconf',
'ds' => 'pathconf',
'colour' => 'f8f36c'
),
array(
'filename' => $rrd_filename,
'descr' => 'commit',
'ds' => 'commit',
'colour' => 'ff536c'
)
);
} else {
echo "file missing: $rrd_filename";
}
require 'includes/graphs/generic_v3_multiline.inc.php';

View File

@@ -158,6 +158,18 @@ $graphs['php-fpm'] = array(
'stats'
);
$graphs['fbsd-nfs-server'] = array(
'stats',
'cache',
'gathering',
);
$graphs['fbsd-nfs-client'] = array(
'stats',
'cache',
'rpc',
);
print_optionbar_start();
echo "<span style='font-weight: bold;'>Apps</span> &#187; ";

View File

@@ -0,0 +1,108 @@
<?php
$name = 'fbsd-nfs-client';
$app_id = $app['app_id'];
use LibreNMS\RRD\RrdDefinition;
$options = '-o qv';
$mib = 'NET-SNMP-EXTEND-MIB';
$oid = 'nsExtendOutLine.13.102.98.115.100.110.102.115.99.108.105.101.110.116';
$nfsclient = snmp_walk($device, $oid, $options, $mib);
list($getattr, $setattr, $lookup, $readlink, $read, $write, $create, $remove, $rename, $link, $symlink, $mkdir, $rmdir,
$readdir, $rdirplus, $access, $mknod, $fsstat, $fsinfo, $pathconf, $commit, $timedout, $invalid, $xreplies, $retries,
$requests, $attrhits, $attrmisses, $lkuphits, $lkupmisses, $biorhits, $biormisses, $biowhits, $biowmisses, $biorlhits,
$biorlmisses, $biodhits, $biodmisses, $direhits, $diremisses, $accshits, $accsmisses) = explode("\n", $nfsclient);
$rrd_name = array('app', $name, $app_id);
$rrd_def = RrdDefinition::make()
->addDataset('getattr', 'derive', 0)
->addDataset('setattr', 'derive', 0)
->addDataset('lookup', 'derive', 0)
->addDataset('readlink', 'derive', 0)
->addDataset('read', 'derive', 0)
->addDataset('write', 'derive', 0)
->addDataset('create', 'derive', 0)
->addDataset('remove', 'derive', 0)
->addDataset('rename', 'derive', 0)
->addDataset('link', 'derive', 0)
->addDataset('symlink', 'derive', 0)
->addDataset('mkdir', 'derive', 0)
->addDataset('rmdir', 'derive', 0)
->addDataset('readdir', 'derive', 0)
->addDataset('rdirplus', 'derive', 0)
->addDataset('access', 'derive', 0)
->addDataset('mknod', 'derive', 0)
->addDataset('fsstat', 'derive', 0)
->addDataset('fsinfo', 'derive', 0)
->addDataset('pathconf', 'derive', 0)
->addDataset('commit', 'derive', 0)
->addDataset('timedout', 'derive', 0)
->addDataset('invalid', 'derive', 0)
->addDataset('xreplies', 'derive', 0)
->addDataset('retries', 'derive', 0)
->addDataset('requests', 'derive', 0)
->addDataset('attrhits', 'derive', 0)
->addDataset('attrmisses', 'derive', 0)
->addDataset('lkuphits', 'derive', 0)
->addDataset('lkupmisses', 'derive', 0)
->addDataset('biorhits', 'derive', 0)
->addDataset('biormisses', 'derive', 0)
->addDataset('biowhits', 'derive', 0)
->addDataset('biowmisses', 'derive', 0)
->addDataset('biorlhits', 'derive', 0)
->addDataset('biorlmisses', 'derive', 0)
->addDataset('biodhits', 'derive', 0)
->addDataset('biodmisses', 'derive', 0)
->addDataset('direhits', 'derive', 0)
->addDataset('diremisses', 'derive', 0)
->addDataset('accshits', 'derive', 0)
->addDataset('accsmisses', 'derive', 0);
$fields = array(
'getattr' => $getattr,
'setattr' => $setattr,
'lookup' => $lookup,
'readlink' => $readlink,
'read' => $read,
'write' => $write,
'create' => $create,
'remove' => $remove,
'rename' => $rename,
'link' => $link,
'symlink' => $symlink,
'mkdir' => $mkdir,
'rmdir' => $rmdir,
'readdir' => $readdir,
'rdirplus' => $rdirplus,
'access' => $access,
'mknod' => $mknod,
'fsstat' => $fsstat,
'fsinfo' => $fsinfo,
'pathconf' => $pathconf,
'commit' => $commit,
'timedout' => $timedout,
'invalid' => $invalid,
'xreplies' => $xreplies,
'retries' => $retries,
'requests' => $requests,
'attrhits' => $attrhits,
'attrmisses' => $attrmisses,
'lkuphits' => $lkuphits,
'lkupmisses' => $lkupmisses,
'biorhits' => $biorhits,
'biormisses' => $biormisses,
'biowhits' => $biowhits,
'biowmisses' => $biowmisses,
'biorlhits' => $biorlhits,
'biorlmisses' => $biorlmisses,
'biodhits' => $biodhits,
'biodmisses' => $biodmisses,
'direhits' => $direhits,
'diremisses' => $diremisses,
'accshits' => $accshits,
'accsmisses' => $accsmisses,
);
$tags = array('name' => $name, 'app_id' => $app_id, 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name);
data_update($device, 'app', $tags, $fields);

View File

@@ -0,0 +1,83 @@
<?php
use LibreNMS\RRD\RrdDefinition;
$name = 'fbsd-nfs-server';
$app_id = $app['app_id'];
$options = '-o qv';
$mib = 'NET-SNMP-EXTEND-MIB';
$oid = 'nsExtendOutLine.13.102.98.115.100.110.102.115.115.101.114.118.101.114';
$nfsserver = snmp_walk($device, $oid, $options, $mib);
list($getattr, $setattr, $lookup, $readlink, $read, $write, $create, $remove, $rename, $link, $symlink,
$mkdir, $rmdir, $readdir, $rdirplus, $access, $mknod, $fsstat, $fsinfo, $pathconf, $commit, $retfailed,
$faults, $inprog, $idem, $nonidem, $misses, $writeops, $writerpc, $opsaved) = explode("\n", $nfsserver);
$rrd_name = array('app', $name, $app_id);
$rrd_def = RrdDefinition::make()
->addDataset('getattr', 'derive', 0)
->addDataset('setattr', 'derive', 0)
->addDataset('lookup', 'derive', 0)
->addDataset('readlink', 'derive', 0)
->addDataset('read', 'derive', 0)
->addDataset('write', 'derive', 0)
->addDataset('create', 'derive', 0)
->addDataset('remove', 'derive', 0)
->addDataset('rename', 'derive', 0)
->addDataset('link', 'derive', 0)
->addDataset('symlink', 'derive', 0)
->addDataset('mkdir', 'derive', 0)
->addDataset('rmdir', 'derive', 0)
->addDataset('readdir', 'derive', 0)
->addDataset('rdirplus', 'derive', 0)
->addDataset('access', 'derive', 0)
->addDataset('mknod', 'derive', 0)
->addDataset('fsstat', 'derive', 0)
->addDataset('fsinfo', 'derive', 0)
->addDataset('pathconf', 'derive', 0)
->addDataset('commit', 'derive', 0)
->addDataset('retfailed', 'derive', 0)
->addDataset('faults', 'derive', 0)
->addDataset('inprog', 'derive', 0)
->addDataset('idem', 'derive', 0)
->addDataset('nonidem', 'derive', 0)
->addDataset('misses', 'derive', 0)
->addDataset('writeops', 'derive', 0)
->addDataset('writerpc', 'derive', 0)
->addDataset('opsaved', 'derive', 0);
$fields = array(
'getattr' => $getattr,
'setattr' => $setattr,
'lookup' => $lookup,
'readlink' => $readlink,
'read' => $read,
'write' => $write,
'create' => $create,
'remove' => $remove,
'rename' => $rename,
'link' => $link,
'symlink' => $symlink,
'mkdir' => $mkdir,
'rmdir' => $rmdir,
'readdir' => $readdir,
'rdirplus' => $rdirplus,
'access' => $access,
'mknod' => $mknod,
'fsstat' => $fsstat,
'fsinfo' => $fsinfo,
'pathconf' => $pathconf,
'commit' => $commit,
'retfailed' => $retfailed,
'faults' => $faults,
'inprog' => $inprog,
'idem' => $idem,
'nonidem' => $nonidem,
'misses' => $misses,
'writeops' => $writeops,
'writerpc' => $writerpc,
'opsaved' => $opsaved,
);
$tags = array('name' => $name, 'app_id' => $app_id, 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name);
data_update($device, 'app', $tags, $fields);