mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	Docs refactor (#7389)
* docs: Refactored docs for new layout * some more changes * more doc updates * More doc updates * small update * small update
This commit is contained in:
		@@ -1,5 +1,4 @@
 | 
			
		||||
 | 
			
		||||
# Agent Setup
 | 
			
		||||
source: Extensions/Agent-Setup.md
 | 
			
		||||
 | 
			
		||||
The agent can be used to gather data from remote systems you can use LibreNMS in combination with check_mk (found [here](https://github.com/librenms/librenms-agent)).
 | 
			
		||||
The agent can be extended to include data about [applications](Applications.md) on the remote system.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
source: Extensions/Applications.md
 | 
			
		||||
Applications
 | 
			
		||||
------------
 | 
			
		||||
## Introduction
 | 
			
		||||
 | 
			
		||||
You can use Application support to graph performance statistics from many applications.
 | 
			
		||||
 | 
			
		||||
Different applications support a variety of ways collect data: by direct connection to the application, snmpd extend, or [the agent](Agent-Setup.md).
 | 
			
		||||
 
 | 
			
		||||
@@ -124,17 +124,31 @@ Enabled by default.
 | 
			
		||||
 | 
			
		||||
This module is invoked from bgp-peers discovery module.
 | 
			
		||||
 | 
			
		||||
## SNMP Scan
 | 
			
		||||
This isn't actually an auto-discovery mechanism, but manually invoked.
 | 
			
		||||
 | 
			
		||||
It's designed to scan through all of the subnets in your config or what you have manually specified
 | 
			
		||||
to automatically add devices.
 | 
			
		||||
### SNMP Scan
 | 
			
		||||
Apart from the aforementioned Auto-Discovery options, LibreNMS is also able to proactively scan a network for SNMP-enabled devices using the configured version/credentials.
 | 
			
		||||
 | 
			
		||||
SNMP Scan will scan `$config['nets']` by default and respects `$config['autodiscovery']['nets-exclude']`.
 | 
			
		||||
 | 
			
		||||
An example of it's usage is:
 | 
			
		||||
To run the SNMP-Scanner you need to execute the `snmp-scan.py` from within your LibreNMS installation directory.
 | 
			
		||||
 | 
			
		||||
Here the script's help-page for reference:
 | 
			
		||||
```text
 | 
			
		||||
usage: snmp-scan.py [-h] [-r NETWORK] [-t THREADS] [-l] [-v]
 | 
			
		||||
 | 
			
		||||
Scan network for snmp hosts and add them to LibreNMS.
 | 
			
		||||
 | 
			
		||||
optional arguments:
 | 
			
		||||
  -h, --help     show this help message and exit
 | 
			
		||||
  -r NETWORK     CIDR noted IP-Range to scan. Can be specified multiple times
 | 
			
		||||
                 This argument is only required if $config['nets'] is not set
 | 
			
		||||
                 Example: 192.168.0.0/24 Example: 192.168.0.0/31 will be
 | 
			
		||||
                 treated as an RFC3021 p-t-p network with two addresses,
 | 
			
		||||
                 192.168.0.0 and 192.168.0.1 Example: 192.168.0.1/32 will be
 | 
			
		||||
                 treated as a single host address
 | 
			
		||||
  -t THREADS     How many IPs to scan at a time. More will increase the scan
 | 
			
		||||
                 speed, but could overload your system. Default: 32
 | 
			
		||||
  -l, --legend   Print the legend.
 | 
			
		||||
  -v, --verbose  Show debug output. Specifying multiple times increases the
 | 
			
		||||
                 verbosity.
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
./snmp-scan.py -r 192.168.0.0/24
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,8 @@
 | 
			
		||||
source: Extensions/Device-Groups.md
 | 
			
		||||
# Device Groups
 | 
			
		||||
 | 
			
		||||
LibreNMS supports grouping your devices together in much the same way as you can configure alerts. This document will hopefully help you get started.
 | 
			
		||||
 | 
			
		||||
### Pattern
 | 
			
		||||
### Patterns
 | 
			
		||||
 | 
			
		||||
Patterns work in the same was as Entities within the alerting system, the format of the pattern is based on the MySQL structure your data is in such
 | 
			
		||||
as __tablename.columnname__. If you are ensure of what the entity is you want then have a browse around inside MySQL using `show tables` and `desc <tablename>`.
 | 
			
		||||
@@ -16,16 +15,22 @@ As a working example and a common question, let's assume you want to group devic
 | 
			
		||||
 | 
			
		||||
As with alerts, the `Like` operation allows MySQL Regular expressions.
 | 
			
		||||
 | 
			
		||||
A list of common entities is maintained in our [Alerting docs](http://docs.librenms.org/Extensions/Alerting/#entities).
 | 
			
		||||
A list of common entities is maintained in our [Alerting docs](/Alerting/Entities/).
 | 
			
		||||
 | 
			
		||||
### Conditions
 | 
			
		||||
 | 
			
		||||
Please see our [Alerting docs](http://docs.librenms.org/Extensions/Alerting/#syntax) for explanations.
 | 
			
		||||
Please see our [Alerting docs](/Alerting/Rules/#syntax) for explanations.
 | 
			
		||||
 | 
			
		||||
### Connection
 | 
			
		||||
 | 
			
		||||
If you only want to group based on one pattern then select And. If however you want to build a group based on multiple patterns then you can build a SQL like
 | 
			
		||||
query using And / Or. As an example, we want to base our group on the devices hostname AND it's type. Use the pattern as before, `devices.hostname`, select the condition which in this case would be `Like` and then enter `dc1.@.example.com` then click And. Now enter `devices.type` in the pattern, select `Equals` and enter `firewall`. This would then match dc1.fw01.example.com but not dc1.sw01.example.com as that is a network type.
 | 
			
		||||
query using And / Or.
 | 
			
		||||
 | 
			
		||||
As an example, we want to base our group on the devices hostname AND it's type. Use the pattern as before, `devices.hostname`, select 
 | 
			
		||||
the condition which in this case would be `Like` and then enter `dc1.@.example.com` then click And. Now enter `devices.type` in the pattern, select `Equals` 
 | 
			
		||||
and enter `firewall`. This would then match dc1.fw01.example.com but not dc1.sw01.example.com as that is a network type.
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
You can now select this group from the Devices -> All Devices link in the navigation at the top. You can also use the group to map alert rules to by creating an alert mapping
 | 
			
		||||
`Overview -> Alerts -> Rule Mapping`.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,56 +1,78 @@
 | 
			
		||||
source: Extensions/Interface-Description-Parsing.md
 | 
			
		||||
Table of Content:
 | 
			
		||||
-   [About](#about)
 | 
			
		||||
   -   [Setup](#setup)
 | 
			
		||||
-   [Keywords](#keywords)
 | 
			
		||||
   -   [Type-keywords](#type-keywords)
 | 
			
		||||
   -   [Info-keywords](#info-keywords)
 | 
			
		||||
-   [Examples](#examples)
 | 
			
		||||
-   [Sourcecode](#source)
 | 
			
		||||
 | 
			
		||||
# <a name="about">About</a>:
 | 
			
		||||
 | 
			
		||||
## About
 | 
			
		||||
Librenms can interpret, display and group certain additional information on ports.
 | 
			
		||||
For this a small `bash` script is supplied in `scripts/` called `ifAlias`.
 | 
			
		||||
This is done based on the format that the port description is written although it's possible 
 | 
			
		||||
to customise the parser to be specific for your setup.
 | 
			
		||||
 | 
			
		||||
<a name="setup">Setup</a>:
 | 
			
		||||
## Keywords
 | 
			
		||||
 | 
			
		||||
This requires a little bit of setup on the monitored Server (Not the server running librenms!):
 | 
			
		||||
See [examples](#examples) for formats.
 | 
			
		||||
 | 
			
		||||
*   Add `ifAlias` from `/opt/librenms/scripts/` or download it from [here](#source) to the Server and make
 | 
			
		||||
  - **Keywords**
 | 
			
		||||
    - `Cust`    - Customer
 | 
			
		||||
    - `Transit` - Transit link
 | 
			
		||||
    - `Peering` - Peering link
 | 
			
		||||
    - `Core`    - Infrastructure link (non-customer)
 | 
			
		||||
  - Info-keywords
 | 
			
		||||
    - `()` contains a note
 | 
			
		||||
    - `{}` contains *your* circuit id
 | 
			
		||||
    - `[]` contains the service type or speed
 | 
			
		||||
 | 
			
		||||
## Examples
 | 
			
		||||
 | 
			
		||||
Cisco IOS / NXOS / IOSXR:
 | 
			
		||||
```text
 | 
			
		||||
interface Gi0/1
 | 
			
		||||
descr Transit: Example Provider (AS65000)
 | 
			
		||||
interface Gi0/2
 | 
			
		||||
descr Peering: Peering Exchange
 | 
			
		||||
interface Gi0/3
 | 
			
		||||
descr Core: core.router01 FastEthernet0/0 (Telco X CCID023141)
 | 
			
		||||
interface Gi0/4
 | 
			
		||||
descr Cust: Example Customer [10Mbit] (T1 Telco Y CCID129031) {EXAMP0001}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Unix / Linux:
 | 
			
		||||
> This requires an additional script to be [setup](#setup)
 | 
			
		||||
```text
 | 
			
		||||
# eth3: Cust: Example Customer [10Mbit] (T1 Telco Y CCID129031) {EXAMP0001}
 | 
			
		||||
# eth0: Transit: Example Provider (AS65000)
 | 
			
		||||
# eth1: Core: core.router01 FastEthernet0/0 (Telco X CCID023141)
 | 
			
		||||
# eth2: Peering: Peering Exchange
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Customisation
 | 
			
		||||
 | 
			
		||||
The following config options can be set to enable more custom types:
 | 
			
		||||
```php
 | 
			
		||||
$config['customers_descr'][]         = 'cust';
 | 
			
		||||
$config['transit_descr'][]           = "transit";
 | 
			
		||||
$config['peering_descr'][]           = "peering";
 | 
			
		||||
$config['core_descr'][]              = "core";
 | 
			
		||||
$config['custom_descr'][]            = "something_made_up";
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Custom interface parser
 | 
			
		||||
 | 
			
		||||
It's also possible to write your own parser, the existing one is: includes/port-descr-parser.inc.php
 | 
			
		||||
 | 
			
		||||
Once you've created your own then you can enable it with:
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
$config['port_descr_parser'] = "includes/custom/my-port-descr-parser.inc.php";
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Setup
 | 
			
		||||
 | 
			
		||||
For Unix / Linux based systems, you need to run an additional script to support the parsing of interface infor.
 | 
			
		||||
 | 
			
		||||
  - Add `ifAlias` from `/opt/librenms/scripts/` or download it from [here](https://github.com/librenms/librenms/blob/master/scripts/ifAlias) to the Server and make
 | 
			
		||||
    it executable `chmod +x /path/to/ifAlias`
 | 
			
		||||
*   Add to `snmpd.conf` something like:
 | 
			
		||||
  - Add to `snmpd.conf` something like:
 | 
			
		||||
    ``pass .1.3.6.1.2.1.31.1.1.1.18 /path/to/ifAlias``
 | 
			
		||||
*   Restart your `net-snmpd`
 | 
			
		||||
  - Restart `snmpd` - `service snmpd restart`
 | 
			
		||||
 | 
			
		||||
There are no changes to be made or additions to install for the polling librenms.
 | 
			
		||||
 | 
			
		||||
Now you can set up your [keywords](#keywords) in your `/etc/network/interfaces`
 | 
			
		||||
``//Add more distributions than just Debian based``
 | 
			
		||||
 | 
			
		||||
# <a name="keywords">Keywords</a>:
 | 
			
		||||
 | 
			
		||||
See [examples](#examples) for formats.
 | 
			
		||||
 | 
			
		||||
* <a name="type-keywords">Type-keywords</a>:
 | 
			
		||||
 * `Cust`    - Customer
 | 
			
		||||
 * `Transit` - Transit link
 | 
			
		||||
 * `Peering` - Peering link
 | 
			
		||||
 * `Core`    - Infrastructure link (non-customer)
 | 
			
		||||
 * `Server`  - Server link (non-customer)
 | 
			
		||||
* <a name="info-keywords">Info-keywords</a>:
 | 
			
		||||
 * `()` contains a note
 | 
			
		||||
 * `{}` contains *your* circuit id
 | 
			
		||||
 * `[]` contains the service type or speed
 | 
			
		||||
 | 
			
		||||
# <a name="examples">Examples</a>:
 | 
			
		||||
```text
 | 
			
		||||
# eth3: Cust: Example Customer [10Mbit] (T1 Telco Y CCID129031) {EXAMP0001}`
 | 
			
		||||
# eth0: Transit: Example Provider (AS65000)`
 | 
			
		||||
# eth1: Core: core.router01 FastEthernet0/0 (Telco X CCID023141)`
 | 
			
		||||
# eth2: Peering: Peering Exchange
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
# <a name="source">Source code</a>:
 | 
			
		||||
 | 
			
		||||
* https://github.com/librenms/librenms/blob/master/scripts/ifAlias
 | 
			
		||||
``//Add more distributions than just Debian based``
 | 
			
		||||
@@ -1,6 +1,8 @@
 | 
			
		||||
source: Extensions/Memcached.md
 | 
			
		||||
# Memcached
 | 
			
		||||
 | 
			
		||||
> At this present moment, it is not advisable to run memcached other than for Distributed Polling.
 | 
			
		||||
 | 
			
		||||
LibreNMS can store SQL results in memcached to achieve performance advantages of in-memory value storage and removing work load for frequent queries off the MySQL backend.
 | 
			
		||||
 | 
			
		||||
To enable memcached in your install you need to have `memcached` installed and the PHP extension `php5-memcached` or `php-memcached` and add the following lines to your `config.php`:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,6 @@
 | 
			
		||||
source: Extensions/Network-Map.md
 | 
			
		||||
# Network Map
 | 
			
		||||
 | 
			
		||||
## LibreNMS has the ability to show you a network map based on:
 | 
			
		||||
LibreNMS has the ability to show you a network map based on:
 | 
			
		||||
 | 
			
		||||
- xDP Discovery
 | 
			
		||||
- MAC addresses
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
source: Extensions/Oxidized.md
 | 
			
		||||
# Oxidized integration
 | 
			
		||||
 | 
			
		||||
# Oxidized intro
 | 
			
		||||
---
 | 
			
		||||
Integrating LibreNMS with [Oxidized](https://github.com/ytti/oxidized-web) brings the following benefits:
 | 
			
		||||
 | 
			
		||||
  - Config viewing: Current, History, and Diffs all under the Configs tab of each device
 | 
			
		||||
@@ -13,9 +14,8 @@ Then you can procede to the LibreNMS Web UI and go to Oxidized Settings in the E
 | 
			
		||||
 | 
			
		||||
To have devices automatically added, you will need to configure oxidized to pull them from LibreNMS [Feeding Oxidized](#feeding-oxidized)
 | 
			
		||||
 | 
			
		||||
## Detailed integration information
 | 
			
		||||
 | 
			
		||||
### Config viewing
 | 
			
		||||
### Detailed integration information
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
This is a straight forward use of Oxidized, it relies on you having a working Oxidized setup which is already taking config snapshots for your devices.
 | 
			
		||||
When you have that, you only need the following config to enable the display of device configs within the device page itself:
 | 
			
		||||
@@ -43,15 +43,15 @@ You can set a default group that devices will fall back to with:
 | 
			
		||||
$config['oxidized']['default_group'] = 'default';
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
##### SELinux
 | 
			
		||||
#### SELinux
 | 
			
		||||
If you're runnng SELinux, you'll need to allow httpd to connect outbound to the network, otherwise Oxidized integration in the web UI will silently fail:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
setsebool -P httpd_can_network_connect 1
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Feeding Oxidized
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
Oxidized has support for feeding devices into it via an API call, support for Oxidized has been added to the LibreNMS API. A sample config for Oxidized is provided below.
 | 
			
		||||
 | 
			
		||||
@@ -79,7 +79,7 @@ $config['oxidized']['reload_nodes'] = true;
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
#### Using Groups
 | 
			
		||||
### Working with groups
 | 
			
		||||
 | 
			
		||||
To return a group to Oxidized you can do this by matching a regex for either `hostname`, `os` or `location`. The order is `hostname` is matched first, if nothing is found then `os` is tried and then `location` is attempted.
 | 
			
		||||
The first match found will be used. To match on the device hostnames that contain 'lon-sw' or if the location contains 'London' then you would place the following within config.php:
 | 
			
		||||
@@ -110,7 +110,7 @@ groups:
 | 
			
		||||
    password: <password>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
#### Miscellaneous
 | 
			
		||||
### Miscellaneous
 | 
			
		||||
 | 
			
		||||
If you have devices which you do not wish to appear in Oxidized then you can edit those devices in Device -> Edit -> Misc and enable "Exclude from Oxidized?"
 | 
			
		||||
 | 
			
		||||
@@ -121,7 +121,7 @@ $config['oxidized']['ignore_types'] = array('server');
 | 
			
		||||
$config['oxidized']['ignore_os'] = array('linux');
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Trigger configuration downloads
 | 
			
		||||
### Trigger configuration backups
 | 
			
		||||
 | 
			
		||||
Using the Oxidized REST API and [Syslog Hooks](/Extensions/Syslog/#external-hooks), Oxidized can trigger configuration downloads whenever a configuration change event has been logged. An example script to do this is included in `./scripts/syslog-notify-oxidized.php`. Oxidized can spawn a new worker thread and perform the download immediately with the following configuration
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,87 +1 @@
 | 
			
		||||
source: Extensions/Port-Description-Parser.md
 | 
			
		||||
# Configuring interface descriptions for parsing.
 | 
			
		||||
 | 
			
		||||
LibreNMS includes the ability to parse your interface descriptions for set information to display and segment in the WebUI.
 | 
			
		||||
 | 
			
		||||
The following information is used from interface descriptions:
 | 
			
		||||
 | 
			
		||||
 - Type. This is currently Cust (Customer), Peering, Transit and Core
 | 
			
		||||
 - Circuit information
 | 
			
		||||
 - Notes
 | 
			
		||||
 - Speed
 | 
			
		||||
 | 
			
		||||
When setting the description, you use the type followed directly with : and then the information on that port. Some examples based on
 | 
			
		||||
configuring a Cisco 2960 interface
 | 
			
		||||
 | 
			
		||||
#### Customer port
 | 
			
		||||
description Cust: Customer A
 | 
			
		||||
 | 
			
		||||
#### Transport port
 | 
			
		||||
description Transit: ISP A
 | 
			
		||||
 | 
			
		||||
#### Peering port
 | 
			
		||||
description Peering: Local Peer
 | 
			
		||||
 | 
			
		||||
#### Core port
 | 
			
		||||
description Core: Agg connection
 | 
			
		||||
 | 
			
		||||
Having these set will then enable the menu options in Ports within the top navigation.
 | 
			
		||||
 | 
			
		||||
The following config options can be set to enable more custom types:
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
$config['customers_descr']         = 'cust'; // The description to look for in ifDescr. Can be an array as well array('cust','cid');
 | 
			
		||||
$config['transit_descr']           = ""; // Add custom transit descriptions (can be an array)
 | 
			
		||||
$config['peering_descr']           = ""; // Add custom peering descriptions (can be an array)
 | 
			
		||||
$config['core_descr']              = ""; // Add custom core descriptions (can be an array)
 | 
			
		||||
$config['custom_descr']            = ""; // Add custom interface descriptions (can be an array)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
To further enhance the use of port descriptions with Circuit info, Notes and Speed then these can be done as follows:
 | 
			
		||||
 | 
			
		||||
#### Circuit information
 | 
			
		||||
 | 
			
		||||
{}
 | 
			
		||||
 | 
			
		||||
i.e:
 | 
			
		||||
description: Cust: Customer A {ID4321}
 | 
			
		||||
 | 
			
		||||
#### Notes
 | 
			
		||||
 | 
			
		||||
()
 | 
			
		||||
 | 
			
		||||
i.e:
 | 
			
		||||
description Cust: Customer A (This customer is gold)
 | 
			
		||||
 | 
			
		||||
#### Speed
 | 
			
		||||
 | 
			
		||||
[]
 | 
			
		||||
 | 
			
		||||
i.e:
 | 
			
		||||
description Cust: Customer A [100Mbps]
 | 
			
		||||
 | 
			
		||||
You can use any of these additional options like:
 | 
			
		||||
 | 
			
		||||
description Cust: Customer A (this customer is gold) [10Gbps]
 | 
			
		||||
description Cust: Customer A {ID4321} [1Gbps]
 | 
			
		||||
 | 
			
		||||
This information is then held within the ports table within the database, as an example:
 | 
			
		||||
 | 
			
		||||
description Core: NAS bond [1Gbps]
 | 
			
		||||
```sh
 | 
			
		||||
port_descr_type: core
 | 
			
		||||
port_descr_descr: NAS bond
 | 
			
		||||
port_descr_circuit: NULL
 | 
			
		||||
port_descr_speed: 1Gbps
 | 
			
		||||
port_descr_notes: NULL
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Custom interface parser
 | 
			
		||||
 | 
			
		||||
It's also possible to write your own parser, the existing one is: includes/port-descr-parser.inc.php
 | 
			
		||||
 | 
			
		||||
Once you've created your own then you can enable it with:
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
$config['port_descr_parser'] = "includes/custom/my-port-descr-parser.inc.php";
 | 
			
		||||
```
 | 
			
		||||
<meta http-equiv="refresh" content="0; url=/Extensions/Interface-Description-Parsing/" />
 | 
			
		||||
		Reference in New Issue
	
	Block a user