From 41bf70dac9f0a7887516bf64ac5652534a9bd078 Mon Sep 17 00:00:00 2001 From: VVelox Date: Thu, 2 Mar 2017 09:03:45 -0600 Subject: [PATCH] feature: Updated Nfsen integration support (#6003) * add single pool based poller for php-fpm * add the page for php-fpm * add graph for php-fpm * I agree to the conditions of the Contributor Agreement contained in doc/General/Contributing.md. * use named OID as suggest by @laf * document PHP-FPM monitoring * link it in the index * clean up the named oid * add how to grab the script in question * add f2b poller * add f2b app page * add f2b graph * add fail2ban notes * minor formatting cleanup * ...more formatting cleanup * rename it so it can be called via the app page * Revert "rename it so it can be called via the app page" This reverts commit 0bde88a03840138fa28b75606e3cd269ce023f67. * *rename it so it can be called via the apps page *setup the apps page to call it * renamed the graph * now include fail2ban in the apps properly * correct the wget command so it does not stomp on phpfpm-sp * update the fail2ban poller for the newest fail2ban script and now build multiple RRDs * update for now graphing firewalled and banned * update fail2ban docs to match the newest snmpd extend method * search automatically for jails and graph them * graphs the currently banned for a fail2ban jail * change the tital of the graph for the total banned to make it more descriptive * Add a explanation of the two variables in the total graph. * misc. white space cleans ups * misc. white space cleanup * minor white space cleanup * correct descr lenght * correct descr lenght * Update fail2ban.inc.php * Use rrd_name properly * note the cache file bits * make caching optional and note why * Update to new RrdDefinition class * And the use statement ;/ * Messed the second rrd_def * correct two minor errors that did not seem to be causing issues * don't use $vars as per pull #5994 * don't use $vars as per pull #5994 * fix jails graphs * Remove loops and temp variables * whitespace * Change graph so we don't get fractions * add the common nfsen channel include * add nfsen channel flows graph * add nfsen channel packet graph * add nfsen channel traffic graph * update nfsen for channel support * the nfsen general page * add the nfsen channel page * update the docs on nfsen to be more clear about configuring it * white space cleanup * white space cleanup * misc code cleanup * now consistently uses all the same quotes * minor code cleanups * Update nfsen_channel_common.inc.php * minor white space cleanup --- doc/Extensions/NFSen.md | 21 +++++++- .../device/nfsen_channel_common.inc.php | 44 ++++++++++++++++ .../graphs/device/nfsen_channel_flows.inc.php | 5 ++ .../device/nfsen_channel_packets.inc.php | 6 +++ .../device/nfsen_channel_traffic.inc.php | 6 +++ html/pages/device/nfsen.inc.php | 52 +++++++++++++++---- html/pages/device/nfsen/channel.inc.php | 22 ++++++++ html/pages/device/nfsen/general.inc.php | 14 +++++ 8 files changed, 159 insertions(+), 11 deletions(-) create mode 100644 html/includes/graphs/device/nfsen_channel_common.inc.php create mode 100644 html/includes/graphs/device/nfsen_channel_flows.inc.php create mode 100644 html/includes/graphs/device/nfsen_channel_packets.inc.php create mode 100644 html/includes/graphs/device/nfsen_channel_traffic.inc.php create mode 100644 html/pages/device/nfsen/channel.inc.php create mode 100644 html/pages/device/nfsen/general.inc.php diff --git a/doc/Extensions/NFSen.md b/doc/Extensions/NFSen.md index 19ee26d160..e1f1dd19cf 100644 --- a/doc/Extensions/NFSen.md +++ b/doc/Extensions/NFSen.md @@ -9,8 +9,9 @@ The following is the configuration that can be used: ```php $config['nfsen_enable'] = 1; -$config['nfsen_split_char'] = "_"; -$config['nfsen_rrds'] = "/var/nfsen/profiles-stat/live/"; +$config['nfsen_split_char'] = '_'; +$config['nfsen_rrds'][] = '/var/nfsen/profiles-stat/live/'; +$config['nfsen_rrds'][] = '/var/nfsen/profiles-stat'; $config['nfsen_suffix'] = "_yourdomain_com"; ``` @@ -24,9 +25,25 @@ $config['nfsen_rrds'][] = '/var/nfsen/profiles-stat/sitea/'; $config['nfsen_rrds'][] = '/var/nfsen/profiles-stat/siteb/'; ``` +Although for most setups, it will look like below, with the profiles-stat/live directory being where it stores the general RRDs for data sources. + +```php +$config['nfsen_rrds'][] = '/var/nfsen/profiles-stat/live'; +``` + `$config['nfsen_split_char']` This value tells us what to replace the full stops `.` in the devices hostname with. `$config['nfsen_suffix']` This value will be removed from the domain name and can be useful if your rrd files are something like `host1.rrd` but your device hostname is `domain.host1.rrd`. You can then set $config['nfsen_suffix'] = 'domain'; +If you wish to render info for configure channels for a device, you need add the various profile-stat directories your system uses, which for most systems will be as below. + +```php +$config['nfsen_rrds'][] = '/var/nfsen/profiles-stat'; +``` + +When adding sources to nfsen.conf, it is important to use the hostname that matches what is configured in LibreNMS. + +When creating profiles under nfsen, be sure to use the hostname so it matches the name in LibreNMS. That is where channel data will be pulled from. + You should a new tab for the device called Nfsen. diff --git a/html/includes/graphs/device/nfsen_channel_common.inc.php b/html/includes/graphs/device/nfsen_channel_common.inc.php new file mode 100644 index 0000000000..8ae1be9300 --- /dev/null +++ b/html/includes/graphs/device/nfsen_channel_common.inc.php @@ -0,0 +1,44 @@ + $rrd_filename, + 'descr' => $flowtype, + 'ds' => $dsprefix.$flowtype + ); + } + d_echo($rrd_list); + } +} + +require 'includes/graphs/generic_multi_simplex_seperated.inc.php'; diff --git a/html/includes/graphs/device/nfsen_channel_flows.inc.php b/html/includes/graphs/device/nfsen_channel_flows.inc.php new file mode 100644 index 0000000000..cfa2d351ef --- /dev/null +++ b/html/includes/graphs/device/nfsen_channel_flows.inc.php @@ -0,0 +1,5 @@ + 'nfsen_flows', - 'Packets' => 'nfsen_packets', - 'Traffic' => 'nfsen_traffic', - ); +print_optionbar_start(); -foreach ($datas as $name => $type) { - $graph_title = $name; - $graph_type = 'device_'.$type; +$link_array = array( + 'page' => 'device', + 'device' => $device['device_id'], + 'tab' => 'nfsen', + ); - include 'includes/print-device-graph.php'; +echo generate_link('General', $link_array, array('nfsen' => 'general')); + +$printedChannel=false; +$nfsenHostname=str_replace('.', $config['nfsen_split_char'], $device['hostname']); +foreach ($config['nfsen_rrds'] as $nfsenDir) { + $hostDir=$nfsenDir.'/'.$nfsenHostname.'/'; + if (is_dir($hostDir)) { + $nfsenRRDchannelGlob=$hostDir.'*.rrd'; + foreach (glob($nfsenRRDchannelGlob) as $nfsenRRD) { + $channel = str_replace(array($hostDir, '.rrd'), '', $nfsenRRD); + + if (!$printedChannel) { + echo '|Channels:'; + $printedChannel=true; + } else { + echo ','; + } + + if ($vars['channel'] == $channel) { + $channelFilter=$hostDir.$channel.'-filter.txt'; + } + + echo generate_link($channel, $link_array, array('nfsen' => 'channel', 'channel' => $channel)); + } + } +} + +print_optionbar_end(); + +if (!$vars['nfsen']) { + $vars['nfsen'] = 'general'; +} + +if (is_file('pages/device/nfsen/'.mres($vars['nfsen']).'.inc.php')) { + include 'pages/device/nfsen/'.mres($vars['nfsen']).'.inc.php'; +} else { + include 'pages/device/nfsen/general.inc.php'; } $pagetitle[] = 'Netflow'; diff --git a/html/pages/device/nfsen/channel.inc.php b/html/pages/device/nfsen/channel.inc.php new file mode 100644 index 0000000000..dde7a58d58 --- /dev/null +++ b/html/pages/device/nfsen/channel.inc.php @@ -0,0 +1,22 @@ + 'nfsen_channel_flows', + 'Packets' => 'nfsen_channel_packets', + 'Traffic' => 'nfsen_channel_traffic', + ); + +if (isset($channelFilter)&&file_exists($channelFilter)) { + $chanelFilterContents=file_get_contents($channelFilter); + print_optionbar_start(); + print $vars['channel'].' Filter: '.$chanelFilterContents; + print_optionbar_end(); +} + +foreach ($datas as $name => $type) { + $graph_title = $name; + $graph_type = 'device_'.$type; + $graph_array['channel']=$vars['channel']; + + include 'includes/print-device-graph.php'; +} diff --git a/html/pages/device/nfsen/general.inc.php b/html/pages/device/nfsen/general.inc.php new file mode 100644 index 0000000000..f8c7c1bcec --- /dev/null +++ b/html/pages/device/nfsen/general.inc.php @@ -0,0 +1,14 @@ + 'nfsen_flows', + 'Packets' => 'nfsen_packets', + 'Traffic' => 'nfsen_traffic', + ); + +foreach ($datas as $name => $type) { + $graph_title = $name; + $graph_type = 'device_'.$type; + + include 'includes/print-device-graph.php'; +}