From a3a508d56993f932b227e083e7ade4d8deb0af02 Mon Sep 17 00:00:00 2001 From: laf Date: Thu, 16 Jun 2016 11:52:43 +0100 Subject: [PATCH 1/8] Added/Updated requirements for InfluxDB --- doc/Extensions/InfluxDB.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Extensions/InfluxDB.md b/doc/Extensions/InfluxDB.md index 4147486942..78e5739321 100644 --- a/doc/Extensions/InfluxDB.md +++ b/doc/Extensions/InfluxDB.md @@ -6,8 +6,9 @@ made to InfluxDB itself then we cannot guarantee that your data will be ok so en risk! ### Requirements - - InfluxDB 0.94 + - InfluxDB >= 0.94 - Grafana + - PHP 5.5 for InfluxDB-PHP The setup of the above is completely out of scope here and we aren't really able to provide any help with this side of things. From b43253b16b348fab2bfac9f601ccbdb0d33a098b Mon Sep 17 00:00:00 2001 From: laf Date: Thu, 16 Jun 2016 15:57:14 +0100 Subject: [PATCH 2/8] Updated distributed polling docs to be a bit clearer and include full config examples --- doc/Extensions/Distributed-Poller.md | 177 +++++++++++++++++++-------- 1 file changed, 126 insertions(+), 51 deletions(-) diff --git a/doc/Extensions/Distributed-Poller.md b/doc/Extensions/Distributed-Poller.md index a951642ecd..c4f344ce7b 100644 --- a/doc/Extensions/Distributed-Poller.md +++ b/doc/Extensions/Distributed-Poller.md @@ -1,26 +1,22 @@ # Distributed Poller LibreNMS has the ability to distribute polling of devices to other machines. -These machines can be in a different physical location and therefore minimize network latencies for colocations. +These machines can be in a different physical location and therefore minimize network latency for devices that are a considerable +distance away or are behind NAT firewalls. -Devices can also be grouped together into a `poller_group` to pin these devices to a single or a group of designated pollers. +Devices can be grouped together into a `poller_group` to pin these devices to a single or a group of designated pollers. -~~All pollers need to share their RRD-folder, for example via NFS or a combination of NFS and rrdcached.~~ +> All pollers need to share their RRD-folder, for example via NFS or a combination of NFS and rrdcached. -> This is no longer a strict requirement with the use of rrdtool 1.5 and above. If you are NOT running 1.5 then you will still -need to share the RRD-folder. +It is a requirement that all pollers can access the central memcached to communicate with each other. -It is also required that all pollers can access the central memcached to communicate with each other. +By default, all hosts are shared and have the `poller_group = 0`. To pin a device to a poller, set it to a value greater than 0 and set the same value in the poller's config with `$config['distributed_poller_group']`. One can also specify a comma separated string of poller groups in $config['distributed_poller_group']. The poller will then poll devices from any of the groups listed. If new devices get added from the poller they will be assigned to the first poller group in the list unless the group is specified when adding the device. -In order to enable distributed polling, set `$config['distributed_poller'] = true` and your memcached details into `$config['distributed_poller_memcached_host']` and `$config['distributed_poller_memcached_port']`. -By default, all hosts are shared and have the `poller_group = 0`. To pin a device to a poller, set it to a value greater than 0 and set the same value in the poller's config with `$config['distributed_poller_group']`. -Usually the poller's name is equal to the machine's hostname, if you want to change it set `$config['distributed_poller_name']`. -One can also specify a comma separated string of poller groups in $config['distributed_poller_group']. The poller will then poll devices from any of the groups listed. If new devices get added from the poller they will be assigned to the first poller group in the list unless the group is specified when adding the device. +A standard configuration for a distrinuted poller would look like: -## Configuration ```php // Distributed Poller-Settings -$config['distributed_poller'] = false; +$config['distributed_poller'] = true; $config['distributed_poller_name'] = file_get_contents('/proc/sys/kernel/hostname'); $config['distributed_poller_group'] = 0; $config['distributed_poller_memcached_host'] = 'example.net'; @@ -32,39 +28,28 @@ Below is an example setup based on a real deployment which at the time of writin ![Example Setup](http://docs.librenms.org/img/librenms-distributed-diagram.png) -###Architecture +### Architecture How you setup the distribution is entirely up to you, you can choose to host the majority of the required services on a single virtual machine or server and then a poller to actually query the devices being monitored all the way through to having a dedicated server for each of the individual roles. Below are notes on what you need to consider both from the software layer but also connectivity. -####Web / API Layer +#### Web / API Layer This is typically Apache but we have setup guides for both Nginx and Lighttpd which should work perfectly fine. There is nothing unique about the role this service is providing except that if you are adding devices from this layer then the web service will need to be able to connect to the end device via SNMP and perform an ICMP test. It is advisable to run RRDCached within this setup so that you don't need to share the rrd folder via a remote file share such as NFS. The web service can then generate rrd graphs via RRDCached. If RRDCached isn't an option then you can mount the rrd directory to read the RRD files directly. -We would recommend that you run some form of php caching application such as PHP XCache +#### Database Server +MySQL / MariaDB - At the moment these are the only database servers that are supported, work is being done to ensure MySQL Strict mode is also supported but this should be considered to be incomplete still and therefor disabled. -The MySQL server should be contactable from this layer on port 3306 unless it's changed. +The pollers, web and API layers should all be able to access the database server directly. -####Database Server -MySQL - At the moment this is the only database server that is supported, work is being done to ensure MySQL Strict mode is also supported but this should be considered to be incomplete still. - -The pollers, web and API layers should all be able to access the database server directly. It would be possible to configure MySQL multi master but that is outside the scope of this document. - -####RRD Storage +#### RRD Storage Central storage should be provided so all RRD files can be read from and written to in one location. As suggested above, it's recommended that RRD Cached is configured and used. -For this example, we are running RRDCached to allow all pollers and web/api servers to read/write to the rrd files ~~with the rrd directory also exported by NFS for simple access and maintenance.~~ +For this example, we are running RRDCached to allow all pollers and web/api servers to read/write to the rrd files with the rrd directory also exported by NFS for simple access and maintenance. -Sharing rrd files via something like NFS is no longer required if you run rrdtool 1.5 or greater. If you don't - please share your rrd folder as before. If you run rrdtool -1.5 or greater then add this config to your pollers: +#### Memcache +Memcache is required for the distributed pollers to be able to register to a central location and record what devices are polled. Memcache can run from any of the servers so long as it is accessible by all pollers. -```php -$config['rrdtool_version'] = 1.5; -``` - -####Memcache -Memcache is required for the distributed pollers to be able to register to a central location and record what devices are polled. Memcache can run from any of the kit so long as it is accessible by all pollers. - -####Pollers +#### Pollers Pollers can be installed and run from anywhere, the only requirements are: They can access the Memcache instance @@ -77,31 +62,121 @@ This will provide the ability to have a single poller behind a NAT firewall moni Another benefit to this is that you can provide N+x pollers, i.e if you know that you require three pollers to process all devices within 300 seconds then adding a 4th poller will mean that should any one single poller fail then the remaining three will complete polling in time. You could also use this to take a poller out of service for maintenance, i.e OS updates and software updates. -It is extremely advisable to either run a central recursive dns server such as pdns-recursor and have all of your pollers use this or install a recursive dns server on each poller - the volume of DNS requests on large installs can be significant. +It is extremely advisable to either run a central recursive dns server such as pdns-recursor and have all of your pollers use this or install a recursive dns server on each poller - the volume of DNS requests on large installs can be significant and will slow polling down enough to cause issues with a large number of devices. -####Discovery +#### Discovery It's not necessary to run discovery services on all pollers. In fact, you should only run one discovery process per poller group. Designate a single poller to run discovery (or a separate server if required). -####Config sample -Memcache: - - - This doesn't require any special config. The example setup is running "-m 64 -p 11211 -l " - -RRDCached: - - - You will need to tune RRDCached to suite your environment. - - The following is used in this example setup "-l 0:42217 -j /var/lib/rrdcached/journal/ -F -b /opt/librenms/rrd -B -w 1800 -z 900 -p /var/run/rrdcached.pid" +#### Config sample +The following config is taken from a live setup which consists of a Web server, DB server, RRDCached server and 3 pollers. +Web Server: +Running Apache and an install of LibreNMS in /opt/librenms + - config.php ```php -$config['rrdcached'] = "127.0.0.1:42217"; -$config['rrd_dir'] = "/opt/librenms/rrd"; -$config['rrdcached_dir'] = ""; +$config['distributed_poller'] = true; +$config['rrdcached'] = "example.com:42217"; +$config['rrdcached_dir'] = "."; ``` -For rrdtool 1.5 or greater then you can enable support for rrdcached to create the rrd files: +Database Server: +Running Memcache and MariaDB + - Memcache -```php -$config['rrdtool_version'] = 1.5; +Ubuntu (/etc/memcached.conf) +```conf +-d +-m 64 +-p 11211 +-u memcache +-l ip.ip.ip.ip ``` -$config['rrdcached_dir'] Is only needed if you are using tcp connections for rrd cached and needs only to be set if you want to store rrd files within a sub directory of your rrdcached base directory. +RRDCached Server: +Running RRDCached + - RRDCached + +Ubuntu (/etc/default/rrdcached) +```conf +OPTS="-l 0:42217" +OPTS="$OPTS -j /var/lib/rrdcached/journal/ -F" +OPTS="$OPTS -b /opt/librenms/rrd -B" +OPTS="$OPTS -w 1800 -z 900" +``` + +Poller 1: +Running an install of LibreNMS in /opt/librenms + +`config.php` +```php +$config['distributed_poller_name'] = file_get_contents('/etc/hostname'); +$config['distributed_poller_group'] = '0'; +$config['distributed_poller_memcached_host'] = "example.com"; +$config['distributed_poller_memcached_port'] = 11211; +$config['distributed_poller_host'] = "example.com"; +$config['distributed_poller_port'] = 11211; +$config['distributed_poller'] = true; +$config['rrdcached'] = "example.com:42217"; +$config['rrdcached_dir'] = "."; +$config['update'] = 0; +``` + +`/etc/cron.d/librenms` +Runs discovery and polling for group 0, daily.sh to deal with notifications and DB cleanup and alerts. +```conf +33 */6 * * * librenms /opt/librenms/discovery.php -h all >> /dev/null 2>&1 +*/5 * * * * librenms /opt/librenms/discovery.php -h new >> /dev/null 2>&1 +*/5 * * * * librenms /opt/librenms/poller-wrapper.py 24 >> /opt/librenms/logs/wrapper.log +15 0 * * * librenms /opt/librenms/daily.sh >> /dev/null 2>&1 +* * * * * librenms /opt/librenms/alerts.php >> /dev/null 2>&1 +``` + +Poller 2: +Running an install of LibreNMS in /opt/librenms + +`config.php` +```php +$config['distributed_poller_name'] = file_get_contents('/etc/hostname'); +$config['distributed_poller_group'] = '0'; +$config['distributed_poller_memcached_host'] = "example.com"; +$config['distributed_poller_memcached_port'] = 11211; +$config['distributed_poller_host'] = "example.com"; +$config['distributed_poller_port'] = 11211; +$config['distributed_poller'] = true; +$config['rrdcached'] = "example.com:42217"; +$config['rrdcached_dir'] = "."; +$config['update'] = 0; +``` + +`/etc/cron.d/librenms` +Runs billing as well as polling for group 0. +```conf +*/5 * * * * librenms /opt/librenms/poller-wrapper.py 24 >> /opt/librenms/logs/wrapper.log +*/5 * * * * librenms /opt/librenms/poll-billing.php >> /dev/null 2>&1 +01 * * * * librenms /opt/librenms/billing-calculate.php >> /dev/null 2>&1 +``` + +Poller 3: +Running an install of LibreNMS in /opt/librenms + +`config.php` +```php +$config['distributed_poller_name'] = file_get_contents('/etc/hostname'); +$config['distributed_poller_group'] = '2,3'; +$config['distributed_poller_memcached_host'] = "example.com"; +$config['distributed_poller_memcached_port'] = 11211; +$config['distributed_poller_host'] = "example.com"; +$config['distributed_poller_port'] = 11211; +$config['distributed_poller'] = true; +$config['rrdcached'] = "example.com:42217"; +$config['rrdcached_dir'] = "."; +$config['update'] = 0; +``` + +`/etc/cron.d/librenms` +Runs discovery and polling for groups 2 and 3. +```conf +33 */6 * * * librenms /opt/librenms/discovery.php -h all >> /dev/null 2>&1 +*/5 * * * * librenms /opt/librenms/discovery.php -h new >> /dev/null 2>&1 +*/5 * * * * librenms /opt/librenms/poller-wrapper.py 16 >> /opt/librenms/logs/wrapper.log +``` From 2ca9fb6b7dba6dfd839d81610094c71e35b8d6dc Mon Sep 17 00:00:00 2001 From: laf Date: Thu, 16 Jun 2016 16:04:58 +0100 Subject: [PATCH 3/8] Removed deprecated config options for email alerting --- doc/Extensions/Email-Alerting.md | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/doc/Extensions/Email-Alerting.md b/doc/Extensions/Email-Alerting.md index 55a2f0a5f5..ed0431e95d 100644 --- a/doc/Extensions/Email-Alerting.md +++ b/doc/Extensions/Email-Alerting.md @@ -2,29 +2,3 @@ #### Please see [The new alerting docs](http://docs.librenms.org/Extensions/Alerting/#transports-email) -> None of these configuration options will work on builds older than the 1st of August 2015. - - -~~Currently, the email alerts needs to be set up in the config. If you want to enable it, paste this in your config and change it:~~ - -```php -// Mailer backend Settings -$config['email_backend'] = 'mail'; // Mail backend. Allowed: "mail" (PHP's built-in), "sendmail", "smtp". -$config['email_from'] = NULL; // Mail from. Default: "ProjectName" -$config['email_user'] = $config['project_id']; -$config['email_sendmail_path'] = '/usr/sbin/sendmail'; // The location of the sendmail program. -$config['email_smtp_host'] = 'localhost'; // Outgoing SMTP server name. -$config['email_smtp_port'] = 25; // The port to connect. -$config['email_smtp_timeout'] = 10; // SMTP connection timeout in seconds. -$config['email_smtp_secure'] = NULL; // Enable encryption. Use 'tls' or 'ssl' -$config['email_smtp_auth'] = FALSE; // Whether or not to use SMTP authentication. -$config['email_smtp_username'] = NULL; // SMTP username. -$config['email_smtp_password'] = NULL; // Password for SMTP authentication. - -// Alerting Settings -$config['alerts']['email']['default'] = 'sendto@somewhere.com'; // Default alert recipient -$config['alerts']['email']['default_only'] = FALSE; // Only use default recipient -$config['alerts']['email']['enable'] = TRUE; // Enable email alerts -$config['alerts']['bgp']['whitelist'] = NULL; // Populate as an array() with ASNs to alert on. -$config['alerts']['port']['ifdown'] = FALSE; // Generate alerts for ports that go down -``` From cb0ebeb25aacbbee0977a42c8f16e394af578f0d Mon Sep 17 00:00:00 2001 From: laf Date: Thu, 16 Jun 2016 16:20:05 +0100 Subject: [PATCH 4/8] Updated faqs --- doc/Support/FAQ.md | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/doc/Support/FAQ.md b/doc/Support/FAQ.md index 602ac697b3..a77ec18497 100644 --- a/doc/Support/FAQ.md +++ b/doc/Support/FAQ.md @@ -13,7 +13,9 @@ - [How do I debug the poller process?](#faq12) - [Why do I get a lot apache or rrdtool zombies in my process list?](#faq14) - [Why do I see traffic spikes in my graphs?](#faq15) + - [Why do I see gaps in my graphs?](#faq17) - [How do I change the IP / hostname of a device?](#faq16) + - [Things aren't working correctly?](#faq18) ### Developing - [How do I add support for a new OS?](#faq8) @@ -72,10 +74,7 @@ If the page you are trying to load has a substantial amount of data in it then i #### Why do I not see any graphs? -This is usually due to there being blank spaces outside of the `` php tags within config.php. Remove these and retry. -It's also worth removing the final `?>` at the end of config.php as this is not required. -Another reason why it might not be working is if you disabled functions needed by LibreNMS, which include `allow_url_fopen` -and `exec,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,popen`. +The easiest way to check if all is well is to run `./validate.php` as root from within your install directory. This should give you info on why things aren't working. #### How do I debug pages not loading correctly? @@ -105,6 +104,16 @@ Before this all rrd files were set to 100G max values, now you can enable suppor rrdtool tune will change the max value when the interface speed is detected as being changed (min value will be set for anything 10M or over) or when you run the included script (scripts/tune_port.php). +#### Why do I see gaps in my graphs? + +This is most commonly due to the poller not being able to complete it's run within 300 seconds. Check which devices are causing this by going to /poll-log/ within the Web interface. + +When you find the device(s) which are taking the longest you can then look at the Polling module graph under Graphs -> Poller -> Poller Modules Performance. Take a look at what modules are taking the longest and disabled un used modules. + +If you poll a large number of devices / ports then it's recommended to run a local recurisve dns server such as pdns-recursor. + +Running RRDCached is also highly advised in larger installs but has benefits no matter the size. + #### How do I change the IP / hostname of a device? There is a host rename tool called renamehost.php in your librenms root directory. When renaming you are also changing the device's IP / hostname address for monitoring. @@ -113,6 +122,14 @@ Usage: ./renamehost.php ``` +#### Things aren't working correctly? + +Run `./validate.php` as root from within your install. + +Re-run `./validate.php` once you've resolved any issues raised. + +You have an odd issue - we'd suggest you join our irc channel to discuss. + #### How do I add support for a new OS? The easiest way to show you how to do that is to link to an existing pull request that has been merged in on [GitHub](https://github.com/librenms/librenms/pull/352/files) From a7ea2374de787417c52f51f50200de85875185b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Rosiak?= Date: Thu, 16 Jun 2016 19:13:18 +0200 Subject: [PATCH 5/8] Sophos Support Redo --- includes/discovery/os/linux.inc.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/includes/discovery/os/linux.inc.php b/includes/discovery/os/linux.inc.php index c91849d1ab..562fd68ba2 100644 --- a/includes/discovery/os/linux.inc.php +++ b/includes/discovery/os/linux.inc.php @@ -69,9 +69,9 @@ if (!$os) { elseif (stristr($sysObjectId, 'cumulusMib') || strstr($sysObjectId, '.1.3.6.1.4.1.40310')) { $os = 'cumulus'; } -// elseif (strstr($sysObjectId, '.1.3.6.1.4.1.8072.3.2.10')) { -// $os = 'sophos'; -// } + elseif (strstr($sysDescr, 'g56fa85e') || strstr($sysDescr, 'gc80f187')) { + $os = 'sophos'; + } else { // Check for Synology DSM $hrSystemInitialLoadParameters = trim(snmp_get($device, 'HOST-RESOURCES-MIB::hrSystemInitialLoadParameters.0', '-Osqnv')); From 6f2badb2063b297726896ef7034187e1405e28a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Rosiak?= Date: Thu, 16 Jun 2016 20:26:43 +0200 Subject: [PATCH 6/8] Fix logo User complained about the logo and the top/bottom border. --- html/images/os/sophos.png | Bin 19805 -> 1433 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/html/images/os/sophos.png b/html/images/os/sophos.png index 30618cbd01b3d3b30b509eacd069900984208ea5..f71bf16b6cdc2f33e66d15797b130b3bee228475 100644 GIT binary patch delta 1427 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 Date: Fri, 17 Jun 2016 00:22:40 +0100 Subject: [PATCH 7/8] Fix for php5.3 in sentry3 discovery file --- includes/discovery/os/sentry3.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/discovery/os/sentry3.inc.php b/includes/discovery/os/sentry3.inc.php index 6b6e614c0f..295d42c945 100644 --- a/includes/discovery/os/sentry3.inc.php +++ b/includes/discovery/os/sentry3.inc.php @@ -6,7 +6,7 @@ if (!$os) { // ServerTech doesn't have a way to distinguish between sentry3 and sentry4 devices // Hopefully, we can use the version string to figure it out $version = trim(snmp_get($device, 'Sentry3-MIB::serverTech.4.1.1.1.3.0', '-Osqnv')); - $version = explode(" ", $version)[1]; + $version = explode(" ", $version, 1); $version = intval($version); // It appears that version 8 and up is good for sentry4 From 866d87bde8607399b86f07f5fb01235a78f60cf2 Mon Sep 17 00:00:00 2001 From: laf Date: Fri, 17 Jun 2016 09:01:57 +0100 Subject: [PATCH 8/8] Update --- includes/discovery/os/sentry3.inc.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/discovery/os/sentry3.inc.php b/includes/discovery/os/sentry3.inc.php index 295d42c945..9e8b183fb3 100644 --- a/includes/discovery/os/sentry3.inc.php +++ b/includes/discovery/os/sentry3.inc.php @@ -6,8 +6,8 @@ if (!$os) { // ServerTech doesn't have a way to distinguish between sentry3 and sentry4 devices // Hopefully, we can use the version string to figure it out $version = trim(snmp_get($device, 'Sentry3-MIB::serverTech.4.1.1.1.3.0', '-Osqnv')); - $version = explode(" ", $version, 1); - $version = intval($version); + $version = explode(" ", $version); + $version = intval($version[1]); // It appears that version 8 and up is good for sentry4 if ($version >= 8) {