LibreNMS Network Manager Configuration

Seattle Community Networks uses SNMP to monitor network nodes. LibreNMS is used for Network Management, Dashboard generation and Alerting.

LibreNMS Manager Installation:

Install LibreNMS Install and Configure LibreNMS on Ubuntu with nginx

Network-Specific Configuration:

Change active user to librenms: sudo su - librenms

Edit /opt/librenms/config.php:

<?php

$config['user'] = 'librenms';
$config['base_url'] = "/";
$config['snmp']['community'] = array('<SNMP COMMUNITY STRING>');
$config['auth_mechanism'] = "mysql"; # default, other options: ldap, http-auth
$config['nets'][] = "10.0.0.0/24"; # Replace with your Management Network Subdomain
$config['rrd_purge'] = 0;
$config['enable_billing'] = 1;
$config['show_services'] = 1;

As user ‘librenms’, run /opt/librenms/snmp-scan.php, to scan the configured network for snmp hosts

Adding Baicells OS configuration to LibreNMS

As user ‘librenms’ on the librenms server, create the following files and update their contents accordingly:

  • For OS detection, ~librenms/includes/definitions/rts.yaml:
      os: rts
          text: 'Baicells RTS'
          type: network
          icon: rts
          over:
          - { graph: device_bits, text: 'Device Traffic' }
          - { graph: device_processor, text: 'CPU Usage' }
          - { graph: device_mempool, text: 'Memory Usage' }
          discovery:
          - sysDescr:
              - 'CELL'
    
  • For defining custom RTS OS sensors, ~librenms/includes/definitions/discovery/rts.yaml:
mib: BAICELLS-MIB
modules:
	os:
    	hardware: BAICELLS-MIB::hardwareVersion.0
    	serial: BAICELLS-MIB::sn.0
    	version: BAICELLS-MIB::softwareVersion.0
	sensors:
    	count:
        	data:
            	-
                	oid: ulThroughput
                	num_oid: '.1.3.6.1.4.1.53058.190.7.'
                	descr: 'Upload Throughput'
                	group: 'Throughput'
                	index: 'ulthroughput.'
            	-
                	oid: dlThroughput
                	num_oid: '.1.3.6.1.4.1.53058.190.8.'
                	descr: 'Download Throughput'
                	group: 'Throughput'
                	index: 'dlThroughput.'
            	-
                	oid: ulPrbUtilization
                	num_oid: '.1.3.6.1.4.1.53058.190.9.'
                	descr: 'Upload PRB Utilization'
                	group: 'Utilization'
                	index: 'ulPrbUtilization'
            	-
                	oid: dlPrbUtilization
                	num_oid: '.1.3.6.1.4.1.53058.190.10.'
                	descr: 'Download PRB Utilization'
                	group: 'Utilization'
                	index: 'dlPrbUtilization.'
    	frequency:
        	data:
            	-
                	oid: carrierBwMhz
                	num_oid: '.1.3.6.1.4.1.53058.100.7.'
                	divisor: 5
                	descr: 'Carrier Bandwidth'
                	index: 'carrierBwMhz.'
    	percent:
        	data:
            	-
                	oid: eRABEstablishSuccessRate
                	num_oid: '.1.3.6.1.4.1.53058.190.3.'
                	descr: 'ERAB Establishment Success Rate'
                	group: 'LTE'
                	index: 'eRABEstablishSuccessRate.'
            	-
                	oid: hoSuccInterEnbS1Rate
                	num_oid: '.1.3.6.1.4.1.53058.190.4.'
                	descr: 'Inter MME S1 Handover Success Rate'
                	group: 'LTE'
                	index: 'heSuccInterEnbS1Rate.'
            	-
                	oid: hoSuccInterEnbRate
                	num_oid: '.1.3.6.1.4.1.53058.190.5.'
                	descr: 'Inter MME Handover Success Rate'
                	group: 'LTE'
                	index: 'hoSuccInterEnbRate.'
            	-
                	oid: rrcBuildSuccessRate
                	num_oid: '.1.3.6.1.4.1.53058.190.6.'
                	descr: 'RRC Build Success Rate'
                	group: 'LTE'
                	index: 'rrcBuildSuccessRate.'
  • For defining a custom OS class to use Wireless sensors, ~librenms/LibreNMS/OS/Rts.php (note: pay attention to capitalization)
<?php
namespace LibreNMS\OS;

use LibreNMS\Device\WirelessSensor;
use LibreNMS\Interfaces\Discovery\Sensors\WirelessClientsDiscovery;
use LibreNMS\Interfaces\Discovery\Sensors\WirelessUtilizationDiscovery;
use LibreNMS\OS;

class Rts extends OS implements WirelessClientsDiscovery
{
	public function discoverWirelessClients()
	{
    	$oid = '.1.3.6.1.4.1.53058.100.11.0'; //BAICELLS-MIB::ueConnections.0
    	return array(
        	new WirelessSensor('clients', $this->getDeviceId(), $oid, 'rts', 1, 'UE Connections')
    	);
	}
}