- How do I install LibreNMS?
- How do I add a device?
- How do I get help?
- What are the supported OSes for installing LibreNMS on?
- Do you have a demo available?
- Why do I get blank pages sometimes in the WebUI?
- Why do I not see any graphs?
- How do I debug pages not loading correctly?
- How do I debug the discovery process?
- How do I debug the poller process?
- Why do I get a lot apache or rrdtool zombies in my process list?
- Why do I see traffic spikes in my graphs?
- Why do I see gaps in my graphs?
- How do I change the IP / hostname of a device?
- My device doesn't finish polling within 300 seconds
- Things aren't working correctly?
- What do the values mean in my graphs?
- Why does a device show as a warning?
- Why do I not see all interfaces in the Overall traffic graph for a device?
- How do I move my LibreNMS install to another server?
- Why is my EdgeRouter device not detected?
- Why are some of my disks not showing?
- Why are my disks reporting an incorrect size?
- How do I add support for a new OS?
- What information do you need to add a new OS?
- What can I do to help?
- How can I test another users branch?
This is currently well documented within the doc folder of the installation files.
Please see the following doc
You have two options for adding a new device into LibreNMS.
- Using the command line via ssh you can add a new device by changing to the directory of your LibreNMS install and typing (be sure to put the correct details).
./addhost.php [community] [v1|v2c] [port] [udp|udp6|tcp|tcp6]
Please note that if the community contains special characters such as
$then you will need to wrap it in
- Using the web interface, go to Devices and then Add Device. Enter the details required for the device that you want to add and then click 'Add Host'.
We have a few methods for you to get in touch to ask for help.
IRC Freenode ##librenms
Supported is quite a strong word :) The 'officially' supported distros are:
- Ubuntu / Debian
- Red Hat / CentOS
However we will always aim to help wherever possible so if you are running a distro that isn't one of the above then give it a try anyway and if you need help then jump on the irc channel.
We do indeed, you can find access to the demo here
The first thing to do is to add /debug=yes/ to the end of the URI (I.e /devices/debug=yes/).
If the page you are trying to load has a substantial amount of data in it then it could be that the php memory limit needs to be increased in php.ini and then your web service reloaded.
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.
One other reason could be a restricted snmpd.conf file or snmp view which limits the data sent back. If you use net-snmp then we suggest using the (included snmpd.conf)[https://raw.githubusercontent.com/librenms/librenms/master/snmpd.conf.example] file.
A debug system is in place which enables you to see the output from php errors, warnings and notices along with the MySQL queries that have been run for that page.
To enable the debug option, add /debug=yes/ to the end of any URI (I.e /devices/debug=yes/) or ?debug=yes if you are debugging a graph directly.
You will then have a two options in the footer of the website - Show SQL Debug and Show PHP Debug. These will both popup that pages debug window for you to view. If the page itself has generated a fatal error then this will be displayed directly on the page.
Please see the Discovery Support document for further details.
Please see the Poller Support document for further details.
If this is related to your web service for LibreNMS then this has been tracked down to an issue within php which the developers aren't fixing. We have implemented a work around which means you shouldn't be seeing this. If you are, please report this in issue 443.
This occurs either when a counter resets or the device sends back bogus data making it look like a counter reset. We have enabled support for setting a maximum value for rrd files for ports.
Before this all rrd files were set to 100G max values, now you can enable support to limit this to the actual port speed.
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) - see RRDTune doc
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.
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. Usage:
./renamehost.php <old hostname> <new hostname>
We have a few things you can try:
- Disable unnecessary polling modules under edit device.
- Set a max repeater value within the snmp settings for a device. What to set this to is tricky, you really should run an snmpbulkwalk with -Cr10 through -Cr50 to see what works best. 50 is usually a good choice if the device can cope.
./validate.php as root from within your install.
./validate.php once you've resolved any issues raised.
You have an odd issue - we'd suggest you join our irc channel to discuss.
The values you see are reported as metric values. Thanks to a post on Reddit here are those values:
10^-18 a - atto 10^-15 f - femto 10^-12 p - pico 10^-9 n - nano 10^-6 u - micro 10^-3 m - milli 0 (no unit) 10^3 k - kilo 10^6 M - mega 10^9 G - giga 10^12 T - tera 10^15 P - peta
This is indicating that the device has rebooted within the last 24 hours (by default). If you want to adjust this
threshold then you can do so by setting
$config['uptime_warning'] in config.php. The value must be in seconds.
By default numerous interface types and interface descriptions are excluded from this graph. The excluded defailts are:
$config['device_traffic_iftype'] = '/loopback/'; $config['device_traffic_iftype'] = '/tunnel/'; $config['device_traffic_iftype'] = '/virtual/'; $config['device_traffic_iftype'] = '/mpls/'; $config['device_traffic_iftype'] = '/ieee8023adLag/'; $config['device_traffic_iftype'] = '/l2vlan/'; $config['device_traffic_iftype'] = '/ppp/'; $config['device_traffic_descr'] = '/loopback/'; $config['device_traffic_descr'] = '/vlan/'; $config['device_traffic_descr'] = '/tunnel/'; $config['device_traffic_descr'] = '/bond/'; $config['device_traffic_descr'] = '/null/'; $config['device_traffic_descr'] = '/dummy/';
If you would like to re-include l2vlan interfaces for instance, you first need to
unset the config array and set your options:
unset($config['device_traffic_iftype']); $config['device_traffic_iftype'] = '/loopback/'; $config['device_traffic_iftype'] = '/tunnel/'; $config['device_traffic_iftype'] = '/virtual/'; $config['device_traffic_iftype'] = '/mpls/'; $config['device_traffic_iftype'] = '/ieee8023adLag/'; $config['device_traffic_iftype'] = '/ppp/';
If you are moving from one CPU architecture to another then you will need to dump the rrd files and re-create them. If you are in
this scenario then you can use Dan Brown's migration scripts.
If you are just moving to another server with the same CPU architecture then the following steps should be all that's needed:
- Install LibreNMS as per our normal documentation, you don't need to run through the web installer or building the sql schema. - Stop cron by commenting out all lines in `/etc/cron.d/librenms` - Dump the MySQL database `librenms` and import this into your new server. - Copy the `rrd/` folder to the new server. - Copy the `config.php` file to the new server. - Renable cron by uncommenting all lines in `/etc/cron.d/librenms`
If you have
service snmp description set in your config then this will be why, please remove this. For some reason Ubnt have decided setting this
value should override the sysDescr value returned which breaks our detection.
If you don't have that set then this may be then due to an update of EdgeOS or a new device type, please create an issue.
If you are monitoring a linux server then net-snmp doesn't always expose all disks via hrStorage (HOST-RESOURCES-MIB). We have additional support which will retrieve disks via dskTable (UCD-SNMP-MIB).
To expose these disks you need to add additional config to your snmpd.conf file. For example, to expose
/dev/sda1 which may be mounted as
/storage you can specify:
Restart snmpd and LibreNMS should populate the additional disk after a fresh discovery.
There is a known issue for net-snmp, which causes it to report incorrect disk size and disk usage when the size of the disk (or raid) are larger then 16TB, a workaround has been implemented but is not active on Centos 6.8 by default due to the fact that this workaround breaks official SNMP specs, and as such could cause unexpected behaviour in other SNMP tools. You can activate the workaround by adding to /etc/snmp/snmpd.conf :
Please see Supporting a new OS
Under the device, click the gear and select Capture. Please provide the output of Discovery, Poller, and Snmpwalk as separate non-expiring pastebin.com links.
You can also use the command line to obtain the information. Especially, if snmpwalk results in a large amount of data.
Replace the relevant information in these commands such as HOSTNAME and COMMUNITY. Use
snmpwalk instead of
snmpbulkwalk for v1 devices.
./discovery.php -h HOSTNAME -d ./poller.php -h HOSTNAME -r -f -d snmpbulkwalk -OUneb -v2c -c COMMUNITY HOSTNAME .
If possible please also provide what the OS name should be if it doesn't exist already.
Thanks for asking, sometimes it's not quite so obvious and everyone can contribute something different. So here are some ways you can help LibreNMS improve.
- Code. This is a big thing. We want this community to grow by the software developing and evolving to cater for users needs. The biggest area that people can help make this happen is by providing code support. This doesn't necessarily mean contributing code for discovering a new device:
- Web UI, a new look and feel has been adopted but we are not finished by any stretch of the imagination. Make suggestions, find and fix bugs, update the design / layout.
- Poller / Discovery code. Improving it (we think a lot can be done to speed things up), adding new device support and updating old ones.
- The LibreNMS main website, this is hosted on Git Hub like the main repo and we accept use contributions here as well :)
- Hardware. We don't physically need it but if we are to add device support, it's made a whole lot easier with access to the kit via snmp.
- If you've got mibs, they are handy as well :)
- If you know the vendor and can get permission to use logos that's also great.
- Bugs. Found one? We want to know about it. Most bugs are fixed after being spotted and reported by someone, I'd love to say we are amazing developers and will fix all bugs before you spot them but that's just not true.
- Feature requests. Can't code / won't code. No worries, chuck a feature request into Git Hub with enough detail and someone will take a look. A lot of the time this might be what interests someone, they need the same feature or they just have time. Please be patient, everyone who contributes does so in their own time.
- Be nice, this is the foundation of this project. We expect everyone to be nice. People will fall out, people will disagree but please do it so in a respectable way.
- Ask questions. Sometimes just by asking questions you prompt deeper conversations that can lead us to somewhere amazing so please never be afraid to ask a question.
LibreNMS can and is developed by anyone, this means someone may be working on a new feature or support for a device that you want. It can be helpful for others to test these new features, using Git, this is made easy.
Firstly ensure that your current branch is in good state:
If you see
nothing to commit, working directory clean then let's go for it :)
Let's say that you want to test a users (f0o) new development branch (issue-1337) then you can do the following:
git remote add f0o https://github.com/f0o/librenms.git git remote update f0o git checkout issue-1337
Once you are done testing, you can easily switch back to the master branch:
git checkout master
If you want to pull any new updates provided by f0o's branch then whilst you are still in it, do the following:
git pull f0o issue-1337