LibreNMS is an auto-discovering PHP/MySQL/SNMP based network monitoring system

Overview

Test Status

Introduction

LibreNMS is an auto-discovering PHP/MySQL/SNMP based network monitoring which includes support for a wide range of network hardware and operating systems including Cisco, Linux, FreeBSD, Juniper, Brocade, Foundry, HP and many more.

We intend LibreNMS to be a viable project and community that:

  • encourages contribution,
  • focuses on the needs of its users, and
  • offers a welcoming, friendly environment for everyone.

The Debian Social Contract will be the basis of our priority system, and mutual respect is the basis of our behavior towards others.

Documentation

Documentation can be found in the doc directory or docs.librenms.org, including instructions for installing and contributing.

Participating

You can participate in the project by:

VM image

You can try LibreNMS by downloading a VM image. Currently, a Ubuntu-based image is supplied and has been tested with VirtualBox.

Download one of the VirtualBox images we have available, documentation is provided which details login credentials and setup details.

License

Copyright (C) 2006-2012 Adam Armstrong [email protected]

Copyright (C) 2013-2021 by individual LibreNMS contributors

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

LICENSE.txt contains a copy of the full GPLv3 licensing conditions.

The following additional license conditions apply to LibreNMS (a GPL exception):

As a special exception, you have permission to link or otherwise combine LibreNMS with the included copies of the following third-party software, and distribute modified versions, as long as you follow the requirements of the GNU GPL v3 in regard to all of the remaining software (comprising LibreNMS).

Please see Acknowledgements

Backers

Support us with a monthly donation and help us continue our activities. [Become a backer]

Sponsors

Become a sponsor and get your logo on our README on GitHub with a link to your site. [Become a sponsor]

Comments
  • New python service

    New python service

    Currently has a file handle leak (and will eventually run out of handles) related to the self update process.

    Either need to fix that or rip out self-update and leave that up to cron or something.

    DO NOT DELETE THIS TEXT

    Please note

    Please read this information carefully. You can run ./scripts/pre-commit.php to check your code before submitting.

    Testers

    If you would like to test this pull request then please run: ./scripts/github-apply <pr_id>, i.e ./scripts/github-apply 5926

    Feature 
    opened by murrant 133
  • Added 3 Phase APC UPS Support issue #2733 & #5504

    Added 3 Phase APC UPS Support issue #2733 & #5504

    DO NOT DELETE THIS TEXT

    Please note

    Please read this information carefully. You can run ./scripts/pre-commit.php to check your code before submitting.

    • [x] Have you signed the Contributors agreement - please do NOT submit a pull request unless you have (signing the agreement in the same pull request is fine). Your commit message for signing the agreement must appear as per the docs.
    • [x] Have you followed our code guidelines?
    Merge in 48 hours 
    opened by NerdBlender 102
  • feature: Host dependencies

    feature: Host dependencies

    DO NOT DELETE THIS TEXT

    Please note

    Please read this information carefully. You can run ./scripts/pre-commit.php to check your code before submitting.

    Testers

    If you would like to test this pull request then please run: ./scripts/github-apply <pr_id>, i.e ./scripts/github-apply 5926

    I felt obliged to produce this code :) . It obviously needs vigorous testing, I'll ask it on the forum thread. I really wouldn't want to break the alerts!

    Feature 
    opened by aldemira 76
  • feature: fdb tables

    feature: fdb tables

    The code is heavily based on the implementation of the ARP tables and the following thread: #1196

    At the moment, this implementation of FDB tables is for IOS and Comware OS'. I put this within the discovery module - either run all modules in ./discovery.php, or use '-m fdb-tables'

    Can we discuss whether we want it in the poller module instead? I was thinking it could be added into the poller module, however, manage it with cron so that it doesn't call it as often as the main poller.

    Also suggestions/discussion about the code design or UI would be great.

    Screenshot: screenshot

    DO NOT DELETE THIS TEXT

    Please note

    Please read this information carefully. You can run ./scripts/pre-commit.php to check your code before submitting.

    Testers

    If you would like to test this pull request then please run: ./scripts/github-apply <pr_id>, i.e ./scripts/github-apply 5926

    opened by enzozafra 66
  • Inconsistent port/interface graphs for unix systems

    Inconsistent port/interface graphs for unix systems

    Hi,

    Librenms use currently ifIndex to identify each port through snmp. On unix system, the ifIndex can change after a reboot. For example, if an interface has been removed or if the creation order has been changed. So this creates some inconsistent graphs. On unix system, we should use ifName instead.

    The modification is quite easy during polling and discovering. If the os_group is 'unix', the ports can be fetched using ifName instead of ifIndex. Here is a prototype :

    https://github.com/phlb/librenms/commit/3321dacf591ed436f8a55cc055a08fbbf378ede1

    The problem is that the name of the rrd files for ports/interfaces use the ifIndex number. Given that this number can change for a port on unix systems, I see 2 solutions :

    • use ifName instead of ifIndex to name the rrd file for each port on unix systems
    • use port_id instead of ifIndex to name the rrd file for each port on every systems

    Both solutions need to rename some rrd files.

    I plan to work on this but I prefer that we choose a solution before...

    Thanks,

    Bug :spider: Design 
    opened by phlb 65
  • Poll FDB tables and allow searching for MAC addresses

    Poll FDB tables and allow searching for MAC addresses

    Poll/store FDB/CAM tables from devices (mainly layer2 switching devices) and allow for searching of MAC addresses within the CAM tables.

    Example: snmpbulkwalk -v2c -c 'COMMUNITY'@VLAN DEVICE -M mibs/ -m BRIDGE-MIB dot1dTpFdbTable -OqsX

    dot1dTpFdbAddress[0:50:56:89:77:62] 0:50:56:89:77:62 dot1dTpFdbAddress[24:e9:b3:ae:e6:16] 24:e9:b3:ae:e6:16 dot1dTpFdbPort[0:50:56:89:77:62] 50 dot1dTpFdbPort[24:e9:b3:ae:e6:16] 50 dot1dTpFdbStatus[0:50:56:89:77:62] learned dot1dTpFdbStatus[24:e9:b3:ae:e6:16] learned

    Feature Polling Discovery 
    opened by xenith 60
  • poller-service with all locking in Python

    poller-service with all locking in Python

    This update to poller-service allows it to function with the php changes as reverted in #1836.

    To facilitate all locking within python, poller-service now opens a unique mysql connection per thread. Since there are no php changes this should have no effect on anyone who is not runnning poller-service.

    Polling Discovery 
    opened by clinta 57
  • Poller Service

    Poller Service

    This is a re-write of poller-wrapper.py, designed to run as a continuous service rather than a cron job. It works on a best effort basis, using the configured number of threads to poll devices with the oldest data first polling each device no more requently than the user configured poller_service_poll_frequency (default 5 minutes).

    It utilizes mysql GET_LOCK to ensure that a device is only being polled by one poller at a time allowing distributed polling without memcached.

    Configuration parameters are described in doc/Extensions/Poller-Service.md.

    I'm currently testing this in an environment with just over 200 devices, and two pollers configured to attempt to poll each device every 60 seconds with up to 32 threads, retrying down devices every 15 seconds.

    I plan to continue testing and monitoring the service over the next week and am opening this PR to request comments or feedback from anyone else willing to test.

    If you would like to test this, add a new remote and checkout the poller-service branch.

    cd /opt/librenms
    git remote add clinta https://github.com/clinta/librenms.git
    git remote update clinta
    git checkout poller-service
    

    The default configuration is listed below and can be adjusted in config.php. A more detailed description of the configuration options is in doc/Extensions/Poller-Service.md.

    // Poller-Service settings
    $config['poller_service_loglevel']                       = "INFO";
    $config['poller_service_workers']                        = 16;
    $config['poller_service_poll_frequency']                 = 300;
    $config['poller_service_discover_frequency']             = 21600;
    $config['poller_service_down_retry']                     = 60;
    

    If you are using Ubuntu, or another distribution that uses Upstart, copy /opt/librenms/poller-service.conf to /etc/init/poller-service.conf and run start poller-service to start the service.

    Polling 
    opened by clinta 56
  • InfluxDB support

    InfluxDB support

    This is extremely alpha at present - see the doc for more details.

    I've not added the library used to Makefile as it needs compiling with composer to create the necessary files used here.

    Core 
    opened by laf 54
  • Coriant Network Hardware Page.

    Coriant Network Hardware Page.

    DO NOT DELETE THIS TEXT

    Please note

    Please read this information carefully. You can run ./scripts/pre-commit.php to check your code before submitting.

    • [X] Have you signed the Contributors agreement - please do NOT submit a pull request unless you have (signing the agreement in the same pull request is fine). Your commit message for signing the agreement must appear as per the docs.
    • [X] Have you followed our code guidelines?

    Testers

    If you would like to test this pull request then please run: ./scripts/github-apply <pr_id>, i.e ./scripts/github-apply 5926

    Coriant TNMS support

    This will add a new page that allow Coriant Hardware to be seen and get the right status.

    Schema 
    opened by xbeaudouin 53
  • Support for new device Fiberstore Switches

    Support for new device Fiberstore Switches

    Please do not post bugs or ask questions

    For help and support you can use our Discord server or our community site.

    Please confirm each of the sections below by putting an x in the box like [x].

    • [X] Please provide ALL info asked for here.
    • [X] Please provide as much detail as possible.
    • [X] Please do NOT post more than 10 lines of debug information here, use a pastebin service or GitHub Gists.

    Love librenms? Please consider supporting our collective: 👉 https://t.libren.ms/donations

    Hi, Please add support for Fiberstore switches this one is a S5850-48T4Q right now its added as a generic device and missing sensors.

    discovery.php output - https://p.libren.ms/view/a4134bad poller.php output - https://p.libren.ms/view/da1a55b4 snmpwalk output - Gets a crash from database with command provided in FAQ

    Device :desktop_computer: 
    opened by sp1rr3 51
  • Alert log shows only most recent fault info

    Alert log shows only most recent fault info

    The problem

    Different ports on this device flapped, however Alert log only shows the most recent Alert's fault info.

    image

    Output of ./validate.php

    [librenms@librenms ~]$ ./validate.php 
    ===========================================
    Component | Version
    --------- | -------
    LibreNMS  | 22.12.0 (2022-12-28T18:26:21+00:00)
    DB Schema | 2022_08_15_084507_add_rrd_type_to_wireless_sensors_table (248)
    PHP       | 8.1.11
    Python    | 3.6.8
    Database  | MariaDB 10.3.35-MariaDB
    RRDTool   | 1.7.0
    SNMP      | 5.8
    ===========================================
    
    [OK]    Composer Version: 2.5.1
    [OK]    Dependencies up-to-date.
    [OK]    Database connection successful
    [OK]    Database Schema is current
    [OK]    SQL Server meets minimum requirements
    [OK]    lower_case_table_names is enabled
    [OK]    MySQL engine is optimal
    [OK]    
    [OK]    Database schema correct
    [OK]    MySQl and PHP time match
    [OK]    Distributed Polling setting is enabled globally
    [OK]    Connected to rrdcached
    [OK]    Active pollers found
    [OK]    Dispatcher Service is enabled
    [OK]    Locks are functional
    [OK]    Python wrapper cron entry is not present
    [OK]    Redis is functional
    [OK]    rrdtool version ok
    [OK]    Connected to rrdcached
    

    What was the last working version of LibreNMS?

    No response

    Anything in the logs that might be useful for us?

    No response

    opened by electrocret 0
  • Eaton matrix wattage fix

    Eaton matrix wattage fix

    Divisor was set incorrectly on the Eaton Matrix wattage; it shouldn't have been divided by 10. Not sure how its existed this long without being caught...

    DO NOT DELETE THE UNDERLYING TEXT

    Please note

    Please read this information carefully. You can run ./lnms dev:check to check your code before submitting.

    • [X] Have you followed our code guidelines?
    • [X] If my Pull Request does some changes/fixes/enhancements in the WebUI, I have inserted a screenshot of it.
    • [X] If my Pull Request makes discovery/polling/yaml changes, I have added/updated test data.

    Testers

    If you would like to test this pull request then please run: ./scripts/github-apply <pr_id>, i.e ./scripts/github-apply 5926 After you are done testing, you can remove the changes with ./scripts/github-remove. If there are schema changes, you can ask on discord how to revert.

    Device :desktop_computer: 
    opened by peelman 0
  • Eaton PDU g3 ESWB20 no current voltage,  temperature, humidity

    Eaton PDU g3 ESWB20 no current voltage, temperature, humidity

    The problem

    Hello,

    Thanks a lot for your great work. We have few eaton PDU g3, which are up to date.

    We don't see any current voltage. And i have to create custom OID to get temp and humidty values

    Let me know, if you need more information. it's my first participation to librenms project.

    Regards ;)

    Output of ./validate.php

    ===========================================
    Component | Version
    --------- | -------
    LibreNMS  | 22.12.0-6-gcf3f69e67 (2023-01-02T14:47:17+01:00)
    DB Schema | 2022_08_15_084507_add_rrd_type_to_wireless_sensors_table (248)
    PHP       | 8.1.13
    Python    | 3.9.2
    Database  | MariaDB 10.6.11-MariaDB-1:10.6.11+maria~deb11
    RRDTool   | 1.7.2
    SNMP      | 5.9
    ===========================================
    
    [OK]    Composer Version: 2.5.1
    [OK]    Dependencies up-to-date.
    [OK]    Database connection successful
    [OK]    Database Schema is current
    [OK]    SQL Server meets minimum requirements
    [OK]    lower_case_table_names is enabled
    [OK]    MySQL engine is optimal
    [OK]
    [OK]    Database schema correct
    [OK]    MySQl and PHP time match
    [OK]    Distributed Polling setting is enabled globally
    [OK]    Connected to rrdcached
    [OK]    Active pollers found
    [OK]    Dispatcher Service is enabled
    [OK]    Locks are functional
    [OK]    Python wrapper cron entry is not present
    [OK]    Redis is functional
    [WARN]  IPv6 is disabled on your server, you will not be able to add IPv6 devices.
    [OK]    rrdtool version ok
    [OK]    Connected to rrdcached
    

    What was the last working version of LibreNMS?

    22.12.0

    Device info

    Eaton PDU G3

    Discovery output

    discovery.txt

    Poller output

    poller.txt

    opened by MartinMDS 0
  • Can't change device

    Can't change device "type" and "disabled" field via API

    The problem

    Dear all,

    I use a Python script with the requests library to add / delete / modify devices in LibreNMS with NetBox data as foundation. This works except for this use case:

    • Add a new device (works),
    • modify the new device's fields with the following JSON input:
    {
        "field": ["type", "location_id", "override_sysLocation", "disabled"],
        "data": ["network", 1234, 1, 1]
    }
    

    The last step works in so far as there's no error coming from the LibreNMS API and both location_id and override_sysLocation are set as expected. However, setting type and disabled doesn't work, type remains "" and disabled remains 0. I can't finde any hint in the documentation why this shouldn't work.

    Output of ./validate.php

    ===========================================
    Component | Version
    --------- | -------
    LibreNMS  | 22.12.0-6-gcf3f69e67 (2023-01-02T14:47:17+01:00)
    DB Schema | 2022_08_15_084507_add_rrd_type_to_wireless_sensors_table (248)
    PHP       | 8.1.2-1ubuntu2.9
    Python    | 3.10.6
    Database  | MariaDB 10.6.11-MariaDB-0ubuntu0.22.04.1
    RRDTool   | 1.7.2
    SNMP      | 5.9.1
    ===========================================
    
    [OK]    Composer Version: 2.5.1
    [OK]    Dependencies up-to-date.
    [OK]    Database connection successful
    [OK]    Database Schema is current
    [OK]    SQL Server meets minimum requirements
    [OK]    lower_case_table_names is enabled
    [OK]    MySQL engine is optimal
    [OK]
    [OK]    Database schema correct
    [OK]    MySQl and PHP time match
    [OK]    Active pollers found
    [OK]    Dispatcher Service not detected
    [OK]    Locks are functional
    [FAIL]  Some poller nodes have not checked in recently
    	Inactive Nodes:
    	 ubuntu-template22
    [OK]    Redis is unavailable
    [OK]    rrdtool version ok
    [OK]    Connected to rrdcached
    

    What was the last working version of LibreNMS?

    22.12.0

    Anything in the logs that might be useful for us?

    There're no logs that show anything useful. As mentioned, API call doesn't yield any errors.
    
    opened by cs-1 1
  • Add more docker stats

    Add more docker stats

    This pull requests add extra stats for docker. This includes

    • container uptime
    • container size
    • container filesystem
    • Totals per status

    DO NOT DELETE THE UNDERLYING TEXT

    Please note

    Please read this information carefully. You can run ./lnms dev:check to check your code before submitting.

    • [x] Have you followed our code guidelines?
    • [ ] If my Pull Request does some changes/fixes/enhancements in the WebUI, I have inserted a screenshot of it.
    • [x] If my Pull Request makes discovery/polling/yaml changes, I have added/updated test data.

    Testers

    If you would like to test this pull request then please run: ./scripts/github-apply <pr_id>, i.e ./scripts/github-apply 5926 After you are done testing, you can remove the changes with ./scripts/github-remove. If there are schema changes, you can ask on discord how to revert.

    Applications :floppy_disk: 
    opened by hvanoch 2
  • Add Universal Input Output support for APC

    Add Universal Input Output support for APC

    Circa 2009, with the Network Management Card version 2 (NMC2), APC moved environmental reporting to universalInputOutput (.1.3.6.1.4.1.318.1.1.25), superseding the iemConfig (.1.3.6.1.4.1.318.1.1.10.2.2) and iemStatus (.1.3.6.1.4.1.318.1.1.10.2.3) tables. The legacy iem tables were maintained for backward compatibility. With the introduction of the Network Management Cards version 3, the legacy iem tables are no longer maintained.

    This PR adds support for universalInputOutput, covering both the NMC2 and NMC3.

    DO NOT DELETE THE UNDERLYING TEXT

    Please note

    Please read this information carefully. You can run ./lnms dev:check to check your code before submitting.

    • [ x] Have you followed our code guidelines?
    • [ ] If my Pull Request does some changes/fixes/enhancements in the WebUI, I have inserted a screenshot of it.
    • [ x] If my Pull Request makes discovery/polling/yaml changes, I have added/updated test data.

    Testers

    If you would like to test this pull request then please run: ./scripts/github-apply <pr_id>, i.e ./scripts/github-apply 5926 After you are done testing, you can remove the changes with ./scripts/github-remove. If there are schema changes, you can ask on discord how to revert.

    Device :desktop_computer: Needs Tests :unicorn: 
    opened by dennypage 5
Releases(22.12.0)
Owner
LibreNMS Project
Fully featured network monitoring system that provides a wealth of features and device support
LibreNMS Project
A Computer Vision based speed monitoring system.

A Computer Vision based speed monitoring system. This project is developed as the submission for Smart City Hackathon 2021

Veeramanohar 1 Jun 15, 2022
A Zabbix 5.4 module to group items under Monitoring -> Latest data per Tag as it used to be with Application grouping in previous versions of Zabbix

zabbix-module-latest-data Written according to Zabbix official documentation https://www.zabbix.com/documentation/current/manual/modules A Zabbix 5.4

BGmot 18 Dec 6, 2022
A MySQL-PHP based hotel reservation system

hotel-reservation-system A MySQL-PHP based hotel reservation system We have created a Hotel Reservation system, which can be used by the Hotel clients

null 3 Dec 8, 2021
MainWP Child Plugin Auto Downloader.

This plugin checks to see if the MainWP Child plugin is installed and activated; If not, it will download it and install it.

Keith Crain 10 Sep 26, 2022
Open Source Social Network (OSSN) is a social networking software written in PHP.

Open Source Social Network (OSSN) is a social networking software written in PHP. It allows you to make a social networking website and helps your members build social relationships, with people who share similar professional or personal interests. It is available in 17 international languages.

Open Source Social Network 923 Jan 6, 2023
Online chatting application through a logical decentralized blockchain network that stores chat information and hashing keys implemented using AJAX, JQuery, PHP, SQL, CSS, and HTML

Online chatting application through a logical decentralized blockchain network that stores chat information and hashing keys implemented using AJAX, JQuery, PHP, SQL, CSS, and HTML. The blockchain stores a previous hash value, current hash value, time, chat data, and a special key(nonce) used for encryption in each block (node).

Dave Sharma 1 Jan 4, 2022
Create Your Own Broadcast Network With AVideo Platform Open-Source. OAVP OVP

Audio Video Platform AVideo is a term that means absolutely nothing, or anything video. Since it doesn't mean anything the brand simply is identifiabl

World Wide Broadcast Network 1.7k Jan 8, 2023
Apollo-compatible automatic persisted queries, to improve GraphQL network performance.

Automatic Persisted Queries for Magento 2 Apollo-compatible automatic persisted queries, to improve GraphQL network performance.

Daniel Sloof 14 Sep 10, 2022
the network of free stuff

home Free Net get free stuff give away free stuff ask for help help people out tell a story about free net hear a story about free net replicate and s

Trash Robot 1 Oct 31, 2021
Project Website Social Network Laravel, Vue3

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Old Wolf 1 Nov 4, 2021
Social media network with laravel

Social Network Tech Includes Front End: Post CSS Tailwind CSS v3 Back End: Laravel v8 PHP v8 MySQL v8 Asset Bundling: Laravel Mix Features How to use

Noval 3 Apr 20, 2022
Interface Network is an application about social media

Interface Network is an application about social media

Noval 3 Apr 20, 2022
Social Network - Social Media App

Social Network Social Network - Social Media App. Demo Features Auth System (Login, Register, Forgot Password, Password Reset & Email Verification) Us

Noval 2 Jan 18, 2022
Cruuzr is a social network with a target demographic of motor vehicle enthusiasts.

Cruuzr Social Network Cruuzr is a social network with a target demographic of motor enthusiasts. The website was designed using bootstrap to allow for

Orson Hannath 1 Apr 5, 2022
Open Source Voucher Management System is a web application for manage voucher. used PHP with Laravel Framework and use MySQL for Database.

Voucher Management System is a web application for manage voucher. You can create and manage your voucher. Voucher Management System is used PHP with Laravel Framework and use MySQL for Database.

Artha Nugraha Jonar 34 Sep 17, 2022
Hotel Management System using MySQL, Php, Ajax, Jquery and HTML

Hotel-Management-System-Ajax-PHP-Mysql A hotel management system in which clients can perform operations such as booking a room and event. It is possi

vengadesh ks 2 Jun 6, 2022
Examination system using PHP and mysql

online-examination-systen-in-php Online Examination System Today Online Examination System has become a fast growing examination method because of its

Ashutosh Mohanty 9 Apr 14, 2022
Online-examination-System in PHP and Mysql using XAMPP server

online-examination-systen-in-php Online Examination System Today Online Examination System has become a fast growing examination method because of its

Web_Warriors 1 Nov 28, 2021
Created simple login system and chat type website using mysql database along with php and html , css and javascript.

Created simple login system and chat type website using mysql database along with php and html , css and javascript.

null 1 Jan 6, 2022