mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
feature: Adds support for enabling / disabling modules per OS (#4963)
* fixes #4946 first try, should be checked first only discovery first * add OS modules status indication * add debug output add os poller module support * fix some whitespaces * fix missing semicolon * fix some whitespaces * Modify the modules page It now shows unset for unset device settings. Also, `$os_module_status = $config['os'][$device['os']]['poller_modules'][$module];` doesn't work like you would expect. Fix that behavior. * Fix mangled tabs * optimize debug output add docs * text highlighting * Streamline docs #1 * Update docs * Spell out Global, OS, Device.
This commit is contained in:
@@ -88,6 +88,20 @@ $config['discovery_modules']['services'] = 1;
|
||||
$config['discovery_modules']['charge'] = 1;
|
||||
```
|
||||
|
||||
#### OS based Discovery config
|
||||
|
||||
You can enable or disable modules for a specific OS by add corresponding line in `includes/definitions.inc.php`
|
||||
OS based settings have preference over global. Device based settings have preference over all others
|
||||
|
||||
Discover performance improvement can be achieved by deactivating all modules that are not supported by specific OS.
|
||||
|
||||
E.g. to deactivate spanning tree but activate discovery-arp module for linux OS
|
||||
|
||||
```php
|
||||
$config['os']['linux']['discovery_modules']['stp'] = 0;
|
||||
$config['os']['linux']['discovery_modules']['discovery-arp'] = 1;
|
||||
```
|
||||
|
||||
#### Discovery modules
|
||||
|
||||
`os`: Os detection. This module will pick up the OS of the device.
|
||||
|
@@ -76,6 +76,20 @@ $config['poller_modules']['cisco-asa-firewall'] = 1;
|
||||
$config['poller_modules']['mib'] = 0;
|
||||
```
|
||||
|
||||
#### OS based Poller config
|
||||
|
||||
You can enable or disable modules for a specific OS by add corresponding line in `includes/definitions.inc.php`
|
||||
OS based settings have preference over global. Device based settings have preference over all others
|
||||
|
||||
Poller performance improvement can be achieved by deactivating all modules that are not supported by specific OS.
|
||||
|
||||
E.g. to deactivate spanning tree but activate unix-agent module for linux OS
|
||||
|
||||
```php
|
||||
$config['os']['linux']['poller_modules']['stp'] = 0;
|
||||
$config['os']['linux']['poller_modules']['unix-agent'] = 1;
|
||||
```
|
||||
|
||||
#### Poller modules
|
||||
|
||||
`unix-agent`: Enable the check_mk agent for external support for applications.
|
||||
|
@@ -13,6 +13,7 @@
|
||||
<tr>
|
||||
<th>Module</th>
|
||||
<th>Global</th>
|
||||
<th>OS</th>
|
||||
<th>Device</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
@@ -33,6 +34,22 @@ foreach ($poller_modules as $module => $module_status) {
|
||||
echo('<span class="text-danger">Disabled</span>');
|
||||
}
|
||||
|
||||
echo('
|
||||
</td>
|
||||
<td>');
|
||||
|
||||
if (isset($config['os'][$device['os']]['poller_modules'][$module])) {
|
||||
if ($config['os'][$device['os']]['poller_modules'][$module]) {
|
||||
echo('<span class="text-success">Enabled</span>');
|
||||
$module_status = 1;
|
||||
} else {
|
||||
echo('<span class="text-danger">Disabled</span>');
|
||||
$module_status = 0;
|
||||
}
|
||||
} else {
|
||||
echo('<span>Unset</span>');
|
||||
}
|
||||
|
||||
echo('
|
||||
</td>
|
||||
<td>
|
||||
@@ -47,11 +64,10 @@ foreach ($poller_modules as $module => $module_status) {
|
||||
$module_checked = '';
|
||||
}
|
||||
} else {
|
||||
echo('<span id="poller-module-'.$module.'">Unset</span>');
|
||||
if ($module_status == 1) {
|
||||
echo('<span id="poller-module-'.$module.'"class="text-success">Enabled</span>');
|
||||
$module_checked = 'checked';
|
||||
} else {
|
||||
echo('<span id="poller-module-'.$module.'"class="text-danger">Disabled</span>');
|
||||
$module_checked = '';
|
||||
}
|
||||
}
|
||||
@@ -78,6 +94,7 @@ foreach ($poller_modules as $module => $module_status) {
|
||||
<tr>
|
||||
<th>Module</th>
|
||||
<th>Global</th>
|
||||
<th>OS</th>
|
||||
<th>Device</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
@@ -101,6 +118,22 @@ foreach ($discovery_modules as $module => $module_status) {
|
||||
echo('<span class="text-danger">Disabled</span>');
|
||||
}
|
||||
|
||||
echo('
|
||||
</td>
|
||||
<td>');
|
||||
|
||||
if (isset($config['os'][$device['os']]['discovery_modules'][$module])) {
|
||||
if ($config['os'][$device['os']]['discovery_modules'][$module]) {
|
||||
echo('<span class="text-success">Enabled</span>');
|
||||
$module_status = 1;
|
||||
} else {
|
||||
echo('<span class="text-danger">Disabled</span>');
|
||||
$module_status = 0;
|
||||
}
|
||||
} else {
|
||||
echo('<span>Unset</span>');
|
||||
}
|
||||
|
||||
echo('
|
||||
</td>
|
||||
<td>');
|
||||
@@ -114,11 +147,10 @@ foreach ($discovery_modules as $module => $module_status) {
|
||||
$module_checked = '';
|
||||
}
|
||||
} else {
|
||||
echo('<span id="discovery-module-'.$module.'">Unset</span>');
|
||||
if ($module_status == 1) {
|
||||
echo('<span id="discovery-module-'.$module.'" class="text-success">Enabled</span>');
|
||||
$module_checked = 'checked';
|
||||
} else {
|
||||
echo('<span id="discovery-module-'.$module.'" class="text-danger">Disabled</span>');
|
||||
$module_checked = '';
|
||||
}
|
||||
}
|
||||
|
@@ -135,9 +135,16 @@ function discover_device($device, $options = null)
|
||||
}
|
||||
}
|
||||
foreach ($config['discovery_modules'] as $module => $module_status) {
|
||||
if ($force_module === true || $attribs['discover_' . $module] || ( $module_status && !isset($attribs['discover_' . $module]))) {
|
||||
$os_module_status = $config['os'][$device['os']]['discovery_modules'][$module];
|
||||
d_echo("Modules status: Global" . (isset($module_status) ? ($module_status ? '+ ' : '- ') : ' '));
|
||||
d_echo("OS" . (isset($os_module_status) ? ($os_module_status ? '+ ' : '- ') : ' '));
|
||||
d_echo("Device" . (isset($attribs['discover_' . $module]) ? ($attribs['discover_' . $module] ? '+ ' : '- ') : ' '));
|
||||
if ($force_module === true ||
|
||||
$attribs['discover_' . $module] ||
|
||||
($os_module_status && !isset($attribs['discover_' . $module])) ||
|
||||
($module_status && !isset($os_module_status) && !isset($attribs['discover_' . $module]))) {
|
||||
$module_start = microtime(true);
|
||||
echo "#### Load disco module $module ####\n";
|
||||
echo "\n#### Load disco module $module ####\n";
|
||||
include "includes/discovery/$module.inc.php";
|
||||
$module_time = microtime(true) - $module_start;
|
||||
$module_time = substr($module_time, 0, 5);
|
||||
@@ -145,6 +152,8 @@ function discover_device($device, $options = null)
|
||||
echo "#### Unload disco module $module ####\n\n";
|
||||
} elseif (isset($attribs['discover_' . $module]) && $attribs['discover_' . $module] == '0') {
|
||||
echo "Module [ $module ] disabled on host.\n\n";
|
||||
} elseif (isset($os_module_status) && $os_module_status == '0') {
|
||||
echo "Module [ $module ] disabled on os.\n\n";
|
||||
} else {
|
||||
echo "Module [ $module ] disabled globally.\n\n";
|
||||
}
|
||||
|
@@ -247,7 +247,14 @@ function poll_device($device, $options)
|
||||
}
|
||||
}
|
||||
foreach ($config['poller_modules'] as $module => $module_status) {
|
||||
if ($force_module === true || $attribs['poll_'.$module] || ( $module_status && !isset($attribs['poll_'.$module]))) {
|
||||
$os_module_status = $config['os'][$device['os']]['poller_modules'][$module];
|
||||
d_echo("Modules status: Global" . (isset($module_status) ? ($module_status ? '+ ' : '- ') : ' '));
|
||||
d_echo("OS" . (isset($os_module_status) ? ($os_module_status ? '+ ' : '- ') : ' '));
|
||||
d_echo("Device" . (isset($attribs['poll_' . $module]) ? ($attribs['poll_' . $module] ? '+ ' : '- ') : ' '));
|
||||
if ($force_module === true ||
|
||||
$attribs['poll_'.$module] ||
|
||||
($os_module_status && !isset($attribs['poll_'.$module])) ||
|
||||
($module_status && !isset($os_module_status) && !isset($attribs['poll_' . $module]))) {
|
||||
$module_start = 0;
|
||||
$module_time = 0;
|
||||
$module_start = microtime(true);
|
||||
@@ -274,9 +281,11 @@ function poll_device($device, $options)
|
||||
unlink($oldrrd);
|
||||
}
|
||||
} elseif (isset($attribs['poll_'.$module]) && $attribs['poll_'.$module] == '0') {
|
||||
echo "Module [ $module ] disabled on host.\n";
|
||||
echo "Module [ $module ] disabled on host.\n\n";
|
||||
} elseif (isset($os_module_status) && $os_module_status == '0') {
|
||||
echo "Module [ $module ] disabled on os.\n\n";
|
||||
} else {
|
||||
echo "Module [ $module ] disabled globally.\n";
|
||||
echo "Module [ $module ] disabled globally.\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user