Rework documentation (#13709)
* Rework documentation * Slightly adjust theme * wip * fixes * Remove unneeded header * Re-added Acknowledgement.md file * Added Acknowledgement.md to mkdocs.yml Co-authored-by: Neil Lathwood <gh+n@laf.io>
This commit is contained in:
parent
ee00f59ce6
commit
8f474dd4d4
|
@ -26,7 +26,7 @@ jobs:
|
|||
-
|
||||
name: Build mkdocs Docker image
|
||||
run: |
|
||||
docker build -t mkdocs -f ./doc/Dockerfile ./
|
||||
docker build -t mkdocs - < doc/Dockerfile
|
||||
-
|
||||
name: Build docs
|
||||
run: |
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<meta http-equiv="refresh" content="0; url=/API" />
|
|
@ -1,6 +1,3 @@
|
|||
source: API/ARP.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `list_arp`
|
||||
|
||||
Retrieve a specific ARP entry or all ARP entries for a device
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/Alerts.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `get_alert`
|
||||
|
||||
Get details of an alert
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/Bills.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `list_bills`
|
||||
|
||||
Retrieve the list of bills currently in the system.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/DeviceGroups.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `get_devicegroups`
|
||||
|
||||
List all device groups.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/Devices.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `del_device`
|
||||
|
||||
Delete a given device.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/Inventory.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `get_inventory`
|
||||
|
||||
Retrieve the inventory for a device. If you call this without any
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/Locations.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `add_location`
|
||||
|
||||
Add a new location
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/Logs.md
|
||||
path: blob/master/doc/
|
||||
|
||||
All the `list_*logs` calls are aliased to `list_logs`.
|
||||
|
||||
Retrieve all logs or logs for a specific device.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/PortGroups.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `get_graph_by_portgroup`
|
||||
|
||||
Get the graph based on the group type.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/Port_Groups.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `get_port_groups`
|
||||
|
||||
List all port groups.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/Devices.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `get_all_ports`
|
||||
|
||||
Get info for all ports on all devices. Strongly recommend that you use
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/Routing.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `list_bgp`
|
||||
|
||||
List the current BGP sessions.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/Services.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `list_services`
|
||||
|
||||
Retrieve all services
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/Switching.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `list_vlans`
|
||||
|
||||
Get a list of all VLANs.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/System.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### `system`
|
||||
|
||||
Display Librenms instance information.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: API/index.md
|
||||
path: blob/master/doc/
|
||||
|
||||
## Versioning
|
||||
|
||||
Versioning an API is a minefield which saw us looking at numerous
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Alerting/Creating-Transport.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Creating a new Transport
|
||||
|
||||
## File location
|
||||
|
@ -23,7 +20,7 @@ you want your alert to do.
|
|||
|
||||
`configTemplate()` - This is used to define the form that will accept
|
||||
the transport config in the webui and then what data should be
|
||||
validated and how. Validation is done using [Laravel validation](https://laravel.com/docs/5.7/validation)
|
||||
validated and how. Validation is done using [Laravel validation](https://laravel.com/docs/validation)
|
||||
|
||||
The following function is __not__ required for new Transports and is
|
||||
for legacy reasons only. `deliverAlertOld()`.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Alerting/Device-Dependencies.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Device Dependencies
|
||||
|
||||
It is possible to set one or more parents for a device. The aim for
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Alerting/Entities.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Entities
|
||||
|
||||
Entities as described earlier are based on the table and column names
|
||||
|
|
|
@ -1,49 +0,0 @@
|
|||
source: Alerting/Introduction.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Introduction
|
||||
|
||||
To get started, you first need some alert rules which will react to
|
||||
changes with your devices before raising an alert.
|
||||
|
||||
[Creating alert rules](Rules.md)
|
||||
|
||||
After that you also need to tell LibreNMS how to notify you when an
|
||||
alert is raised, this is done using `Alert Transports`.
|
||||
|
||||
[Configuring alert transports](Transports.md)
|
||||
|
||||
The next step is not strictly required but most people find it
|
||||
useful. Creating custom alert templates will help you get the benefit
|
||||
out of the alert system in general. Whilst we include a default
|
||||
template, it is limited in the data that you will receive in the alerts.
|
||||
|
||||
[Configuring alert templates](Templates.md)
|
||||
|
||||
## Managing alerts
|
||||
|
||||
When an alert has triggered you will see these in the Alerts ->
|
||||
Notifications page within the Web UI.
|
||||
|
||||
This list has a couple of options available to it and we'll explain
|
||||
what these are here.
|
||||
|
||||
### ACK
|
||||
|
||||
This column provides you visibility on the status of the alert:
|
||||
|
||||
![ack alert](img/ack.png) This alert is currently active and sending
|
||||
alerts. Click this icon to acknowledge the alert.
|
||||
|
||||
![unack alert](img/unack.png) This alert is currently acknowledged
|
||||
until the alert clears. Click this icon to un-acknowledge the alert.
|
||||
|
||||
![unack alert until fault worsens](img/nunack.png) This alert is
|
||||
currently acknowledged until the alert worsens or gets
|
||||
better, at which stage it will be automatically unacknowledged and
|
||||
alerts will resume. Click this icon to un-acknowledge the alert.
|
||||
|
||||
### Notes
|
||||
|
||||
![alert notes](img/notes.png) This column will allow you access to the
|
||||
acknowledge/unacknowledge notes for this alert.
|
|
@ -1,6 +1,3 @@
|
|||
source: Alerting/Macros.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Macros
|
||||
|
||||
Macros are shorthands to either portion of rules or pure SQL enhanced with placeholders.
|
||||
|
|
|
@ -1,275 +0,0 @@
|
|||
source: Alerting/Templates.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Templates
|
||||
|
||||
Templates can be assigned to a single or a group of rules and can contain any kind of text. There is also a default template which is used for any rule that isn't associated with a template. This template can be found under `Alert Templates` page and can be edited. It also has an option revert it back to its default content.
|
||||
|
||||
The template-parser understands `if` and `foreach` controls and replaces certain placeholders with information gathered about the alert.
|
||||
|
||||
## Syntax
|
||||
|
||||
Controls:
|
||||
|
||||
- if-else (Else can be omitted): `{if %placeholder == value}Some Text{else}Other Text{/if}`
|
||||
- foreach-loop: `{foreach %faults}Key: %key<br/>Value: %value{/foreach}`
|
||||
|
||||
Placeholders:
|
||||
|
||||
Placeholders are special variables that if used within the template will be replaced with the relevant data, I.e:
|
||||
|
||||
`The device %hostname has been up for %uptime seconds` would result in the following `The device localhost has been up for 30344 seconds`.
|
||||
|
||||
- Device ID: `%device_id`
|
||||
- Hostname of the Device: `%hostname`
|
||||
- sysName of the Device: `%sysName`
|
||||
- sysDescr of the Device: `%sysDescr`
|
||||
- hardware of the Device: `%hardware`
|
||||
- Software version of the Device: `%version`
|
||||
- location of the Device: `%location`
|
||||
- uptime of the Device (in seconds): `%uptime`
|
||||
- short uptime of the Device (28d 22h 30m 7s): `%uptime_short`
|
||||
- long uptime of the Device (28 days, 22h 30m 7s): `%uptime_long`
|
||||
- description (purpose db field) of the Device: `%description`
|
||||
- notes of the Device: `%notes`
|
||||
- notes of the alert: `%alert_notes`
|
||||
- ping timestamp (if icmp enabled): `%ping_timestamp`
|
||||
- ping loss (if icmp enabled): `%ping_loss`
|
||||
- ping min (if icmp enabled): `%ping_min`
|
||||
- ping max (if icmp enabled): `%ping_max`
|
||||
- ping avg (if icmp enabled): `%ping_avg`
|
||||
- Title for the Alert: `%title`
|
||||
- Time Elapsed, Only available on recovery (`%state == 0`): `%elapsed`
|
||||
- Alert-ID: `%id`
|
||||
- Unique-ID: `%uid`
|
||||
- Faults, Only available on alert (`%state != 0`), must be iterated in a foreach (`{foreach %faults}`). Holds all available information about the Fault, accessible in the format `%value.Column`, for example: `%value.ifDescr`. Special field `%value.string` has most Identification-information (IDs, Names, Descrs) as single string, this is the equivalent of the default used.
|
||||
- State: `%state`
|
||||
- Severity: `%severity`
|
||||
- Rule: `%rule`
|
||||
- Rule-Name: `%name`
|
||||
- Timestamp: `%timestamp`
|
||||
- Transport name: `%transport`
|
||||
|
||||
- Contacts, must be iterated in a foreach, `%key` holds email and `%value` holds name: `%contacts`
|
||||
|
||||
Placeholders can be used within the subjects for templates as well although %faults is most likely going to be worthless.
|
||||
|
||||
> NOTE: Placeholder names which are contained within another need to be ordered correctly. As an example:
|
||||
|
||||
```text
|
||||
Limit: %value.sensor_limit / %value.sensor_limit_low
|
||||
```
|
||||
|
||||
Should be done as:
|
||||
|
||||
```text
|
||||
Limit: %value.sensor_limit_low / %value.sensor_limit
|
||||
```
|
||||
|
||||
The Default Template is a 'one-size-fit-all'. We highly recommend defining your own templates for your rules to include more specific information.
|
||||
|
||||
## Examples
|
||||
|
||||
Default Template:
|
||||
|
||||
```text
|
||||
%title
|
||||
Severity: %severity
|
||||
{if %state == 0}Time elapsed: %elapsed{/if}
|
||||
Timestamp: %timestamp
|
||||
Unique-ID: %uid
|
||||
Rule: {if %name}%name{else}%rule{/if}
|
||||
{if %faults}Faults:
|
||||
{foreach %faults} #%key: %value.string{/foreach}{/if}
|
||||
Alert sent to: {foreach %contacts}%value <%key> {/foreach}
|
||||
```
|
||||
|
||||
Ports Utilization Template:
|
||||
|
||||
```text
|
||||
%title
|
||||
Device Name: %hostname
|
||||
Severity: %severity
|
||||
{if %state == 0}Time elapsed: %elapsed{/if}
|
||||
Timestamp: %timestamp
|
||||
Rule: {if %name}%name{else}%rule{/if}
|
||||
{foreach %faults}
|
||||
Physical Interface: %value.ifDescr
|
||||
Interface Description: %value.ifAlias
|
||||
Interface Speed: {calc (%value.ifSpeed/1000000000)} Gbs
|
||||
Inbound Utilization: {calc ((%value.ifInOctets_rate*8)/%value.ifSpeed)*100}%
|
||||
Outbound Utilization: {calc ((%value.ifOutOctets_rate*8)/%value.ifSpeed)*100}%
|
||||
{/foreach}
|
||||
```
|
||||
|
||||
Storage:
|
||||
|
||||
```text
|
||||
|
||||
%title
|
||||
|
||||
Device Name: %hostname
|
||||
Severity: %severity
|
||||
Uptime: %uptime_short
|
||||
{if %state == 0}Time elapsed: %elapsed{/if}
|
||||
Timestamp: %timestamp
|
||||
Location: %location
|
||||
Description: %description
|
||||
Features: %features
|
||||
Purpose: %purpose
|
||||
Notes: %notes
|
||||
|
||||
Server: %sysName {foreach %faults}Mount Point: %value.storage_descr Percent Utilized: %value.storage_perc{/foreach}
|
||||
```
|
||||
|
||||
Temperature Sensors:
|
||||
|
||||
```text
|
||||
|
||||
%title
|
||||
|
||||
Device Name: %hostname
|
||||
Severity: %severity
|
||||
Timestamp: %timestamp
|
||||
Uptime: %uptime_short
|
||||
{if %state == 0}Time elapsed: %elapsed{/if}
|
||||
Location: %location
|
||||
Description: %description
|
||||
Features: %features
|
||||
Purpose: %purpose
|
||||
Notes: %notes
|
||||
|
||||
Rule: {if %name}%name{else}%rule{/if}
|
||||
{if %faults}Faults:
|
||||
{foreach %faults}
|
||||
#%key: Temperature: %value.sensor_current°C
|
||||
** {calc(%value.sensor_current-%value.sensor_limit)}°C over limit
|
||||
Previous Measurement: %value.sensor_prev°C
|
||||
High Temperature Limit: %value.sensor_limit°C
|
||||
{/foreach}
|
||||
{/if}
|
||||
```
|
||||
|
||||
Value Sensors:
|
||||
|
||||
```text
|
||||
|
||||
%title
|
||||
|
||||
Device Name: %hostname
|
||||
Severity: %severity
|
||||
Timestamp: %timestamp
|
||||
Uptime: %uptime_short
|
||||
{if %state == 0}Time elapsed: %elapsed{/if}
|
||||
Location: %location
|
||||
Description: %description
|
||||
Features: %features
|
||||
Purpose: %purpose
|
||||
Notes: %notes
|
||||
|
||||
Rule: {if %name}%name{else}%rule{/if}
|
||||
{if %faults}Faults:
|
||||
{foreach %faults}
|
||||
#%key: Sensor%value.sensor_current
|
||||
** {calc(%value.sensor_current-%value.sensor_limit)}over limit
|
||||
Previous Measurement: %value.sensor_prev
|
||||
Limit: %value.sensor_limit
|
||||
{/foreach}
|
||||
{/if}
|
||||
```
|
||||
|
||||
Memory Alert:
|
||||
|
||||
```text
|
||||
%title
|
||||
|
||||
Device Name: %hostname
|
||||
Severity: %severity
|
||||
Uptime: %uptime_short
|
||||
{if %state == 0}Time elapsed: %elapsed{/if}
|
||||
Timestamp: %timestamp
|
||||
Location: %location
|
||||
Description: %description
|
||||
Notes: %notes
|
||||
|
||||
Server: %hostname {foreach %faults}
|
||||
Memory Description: %value.mempool_descr
|
||||
Percent Utilized: %value.mempool_perc{/foreach}
|
||||
```
|
||||
|
||||
Conditional formatting example, will display a link to the host in email or just the hostname in any other transport:
|
||||
|
||||
```text
|
||||
{if %transport == mail}<a href="https://my.librenms.install/device/device=%hostname/">%hostname</a>
|
||||
{else}
|
||||
%hostname
|
||||
{/if}
|
||||
```
|
||||
|
||||
Note the use of double-quotes. Single quotes (`'`) in templates will be escaped (replaced with `\'`) in the output and should therefore be avoided.
|
||||
|
||||
## Examples HTML
|
||||
|
||||
Note: To use HTML emails you must set HTML email to Yes in the WebUI under Global Settings > Alerting Settings > Email transport > Use HTML emails
|
||||
|
||||
Note: To include Graphs you must enable unauthorized graphs in config.php. Allow_unauth_graphs_cidr is optional, but more secure.
|
||||
|
||||
```
|
||||
$config['allow_unauth_graphs_cidr'] = array('127.0.0.1/32');
|
||||
$config['allow_unauth_graphs'] = true;
|
||||
```
|
||||
|
||||
Service Alert:
|
||||
|
||||
```
|
||||
<div style="font-family:Helvetica;">
|
||||
<h2>{if %state == 1}<span style="color:red;">%severity{/if}
|
||||
{if %state == 2}<span style="color:goldenrod;">acknowledged{/if}</span>
|
||||
{if %state == 3}<span style="color:green;">recovering{/if}</span>
|
||||
{if %state == 0}<span style="color:green;">recovered{/if}</span>
|
||||
</h2>
|
||||
<b>Host:</b> %hostname<br>
|
||||
<b>Duration:</b> %elapsed<br>
|
||||
<br>
|
||||
|
||||
{if %faults}
|
||||
{foreach %faults}<b>%value.service_desc - %value.service_type</b><br>
|
||||
%value.service_message<br>
|
||||
<br>
|
||||
{/foreach}
|
||||
{/if}
|
||||
</div>
|
||||
```
|
||||
|
||||
Processor Alert with Graph:
|
||||
|
||||
```
|
||||
%title <br>
|
||||
Severity: %severity <br>
|
||||
{if %state == 0}Time elapsed: %elapsed{/if}
|
||||
Timestamp: %timestamp <br>
|
||||
Alert-ID: %id <br>
|
||||
Rule: {if %name}%name{else}%rule{/if} <br>
|
||||
{if %faults}Faults:
|
||||
{foreach %faults}
|
||||
#%key: %value.string <br>
|
||||
{/foreach}
|
||||
{if %faults}<b>Faults:</b><br>
|
||||
{foreach %faults}<img src="https://server/graph.php?device=%value.device_id&type=device_processor&width=459&height=213&lazy_w=552&from=end-72h%22/%3E<br>
|
||||
https://server/graphs/id=%value.device_id/type=device_processor/<br>
|
||||
{/foreach}
|
||||
Template: CPU alert <br>
|
||||
{/if}
|
||||
{/if}
|
||||
```
|
||||
|
||||
## Included
|
||||
|
||||
We include a few templates for you to use, these are specific to the type of alert rules you are creating. For example if you create a rule that would alert on BGP sessions then you can
|
||||
assign the BGP template to this rule to provide more information.
|
||||
|
||||
The included templates apart from the default template are:
|
||||
|
||||
- BGP Sessions
|
||||
- Ports
|
||||
- Temperature
|
|
@ -1,6 +1,3 @@
|
|||
source: Alerting/Rules.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Rules
|
||||
|
||||
Rules are defined using a logical language.
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
source: Alerting/Templates.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Templates
|
||||
|
||||
> This page is for installs running version 1.42 or later. You can
|
||||
> find the older docs [here](Old_Templates.md)
|
||||
> find the older docs [here](https://github.com/librenms/librenms/blob/773411359489e0ffcc3ba763f1f138403343591a/doc/Alerting/Old_Templates.md)
|
||||
|
||||
Templates can be assigned to a single or a group of rules and can
|
||||
contain any kind of text. There is also a default template which is
|
||||
|
@ -20,7 +17,7 @@ button. You might hold down the CTRL key to select multiple rules at once.
|
|||
|
||||
The templating engine in use is Laravel Blade. We will cover some of
|
||||
the basics here, however the official Laravel docs will have more
|
||||
information [here](https://laravel.com/docs/5.7/blade)
|
||||
information [here](https://laravel.com/docs/blade)
|
||||
|
||||
## Syntax
|
||||
|
||||
|
@ -140,7 +137,7 @@ In your alert template just use
|
|||
@endsection
|
||||
```
|
||||
|
||||
More info: [https://laravel.com/docs/5.7/blade#extending-a-layout](https://laravel.com/docs/5.7/blade#extending-a-layout)
|
||||
More info: [https://laravel.com/docs/blade#extending-a-layout](https://laravel.com/docs/blade#extending-a-layout)
|
||||
|
||||
## Examples
|
||||
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Alerting/Testing.md
|
||||
path: blob/master/doc/
|
||||
|
||||
### Rules
|
||||
|
||||
The simplest way of testing if an alert rule will match a device is by
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Alerting/Transports.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Transports
|
||||
|
||||
Transports are located within `LibreNMS/Alert/Transport/` and can be
|
||||
|
|
|
@ -1,66 +1,46 @@
|
|||
source: Alerting/index.md
|
||||
path: blob/master/doc/
|
||||
# Introduction
|
||||
|
||||
# About
|
||||
To get started, you first need some alert rules which will react to
|
||||
changes with your devices before raising an alert.
|
||||
|
||||
LibreNMS includes a highly customizable alerting system.
|
||||
The system requires a set of user-defined rules to evaluate the
|
||||
situation of each device, port, service or any other entity.
|
||||
[Creating alert rules](Rules.md)
|
||||
|
||||
> You can configure all options for alerting and transports via the
|
||||
> WebUI, config options in this document are crossed out but left for reference.
|
||||
After that you also need to tell LibreNMS how to notify you when an
|
||||
alert is raised, this is done using `Alert Transports`.
|
||||
|
||||
Table of Content:
|
||||
[Configuring alert transports](Transports.md)
|
||||
|
||||
- [Introduction](Introduction.md)
|
||||
- [Rules](Rules.md)
|
||||
- [Syntax](Rules.md#syntax)
|
||||
- [Options](Rules.md#options)
|
||||
- [Examples](Rules.md#examples)
|
||||
- [Procedure](Rules.md#procedure)
|
||||
- [Templates](Templates.md)
|
||||
- [Syntax](Templates.md#syntax)
|
||||
- [Testing](Templates.md#testing)
|
||||
- [Examples](Templates.md#examples)
|
||||
- [Included](Templates.md#included)
|
||||
- [Transports](Transports.md)
|
||||
- [E-Mail](Transports.md#e-mail)
|
||||
- [API](Transports.md#api)
|
||||
- [Browser Push](Transports.md#browser-push)
|
||||
- [Nagios-Compatible](Transports.md#nagios-compatible)
|
||||
- [IRC](Transports.md#irc)
|
||||
- [Slack](Transports.md#slack)
|
||||
- [Rocket.chat](Transports.md#rocketchat)
|
||||
- [HipChat](Transports.md#hipchat)
|
||||
- [PagerDuty](Transports.md#pagerduty)
|
||||
- [Pushover](Transports.md#pushover)
|
||||
- [Boxcar](Transports.md#boxcar)
|
||||
- [Telegram](Transports.md#telegram)
|
||||
- [Pushbullet](Transports.md#pushbullet)
|
||||
- [Clickatell](Transports.md#clickatell)
|
||||
- [PlaySMS](Transports.md#playsms)
|
||||
- [VictorOps](Transports.md#victorops)
|
||||
- [Canopsis](Transports.md#canopsis)
|
||||
- [osTicket](Transports.md#osticket)
|
||||
- [Microsoft Teams](Transports.md#microsoftteams)
|
||||
- [Cisco Spark](Transports.md#ciscospark)
|
||||
- [SMSEagle](Transports.md#smseagle)
|
||||
- [Syslog](Transports.md#syslog)
|
||||
- [Elasticsearch](Transports.md#elasticsearch)
|
||||
- [Jira](Transports.md#jira)
|
||||
- [Entities](Entities.md)
|
||||
- [Devices](Entities.md#devices)
|
||||
- [BGP Peers](Entities.md#bgppeers)
|
||||
- [IPSec Tunnels](Entities.md#ipsec)
|
||||
- [Memory Pools](Entities.md#entity-mempools)
|
||||
- [Ports](Entities.md#entity-ports)
|
||||
- [Processors](Entities.md#entity-processors)
|
||||
- [Storage](Entities.md#entity-storage)
|
||||
- [Sensors](Entities.md#entity-sensors)
|
||||
- [Macros](Macros.md)
|
||||
- [Device](Macros.md#macros-device)
|
||||
- [Port](Macros.md#macros-port)
|
||||
- [Time](Macros.md#macros-time)
|
||||
- [Sensors](Macros.md#macros-sensors)
|
||||
- [Misc](Macros.md#macros-misc)
|
||||
- [Device Dependencies](Device-Dependencies.md)
|
||||
The next step is not strictly required but most people find it
|
||||
useful. Creating custom alert templates will help you get the benefit
|
||||
out of the alert system in general. Whilst we include a default
|
||||
template, it is limited in the data that you will receive in the alerts.
|
||||
|
||||
[Configuring alert templates](Templates.md)
|
||||
|
||||
## Managing alerts
|
||||
|
||||
When an alert has triggered you will see these in the Alerts ->
|
||||
Notifications page within the Web UI.
|
||||
|
||||
This list has a couple of options available to it and we'll explain
|
||||
what these are here.
|
||||
|
||||
### ACK
|
||||
|
||||
This column provides you visibility on the status of the alert:
|
||||
|
||||
![ack alert](img/ack.png) This alert is currently active and sending
|
||||
alerts. Click this icon to acknowledge the alert.
|
||||
|
||||
![unack alert](img/unack.png) This alert is currently acknowledged
|
||||
until the alert clears. Click this icon to un-acknowledge the alert.
|
||||
|
||||
![unack alert until fault worsens](img/nunack.png) This alert is
|
||||
currently acknowledged until the alert worsens or gets
|
||||
better, at which stage it will be automatically unacknowledged and
|
||||
alerts will resume. Click this icon to un-acknowledge the alert.
|
||||
|
||||
### Notes
|
||||
|
||||
![alert notes](img/notes.png) This column will allow you access to the
|
||||
acknowledge/unacknowledge notes for this alert.
|
||||
|
|
|
@ -1,86 +0,0 @@
|
|||
source: Developing/Code-Guidelines.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Coding guidelines
|
||||
|
||||
This document is here to help code standards for contributions towards
|
||||
LibreNMS. The original code base that we forked from had a lack of
|
||||
standards and as such the code base has a variety of different
|
||||
styles. Whilst we don't want to restrict how people write code, these
|
||||
guidelines should mean we have a good standard going forward that
|
||||
makes reading the code easier. All modern day ide's should be able to
|
||||
assist in these guidelines without breaking your usual workflow.
|
||||
|
||||
## PHP-FIG PSR-2 Coding Style
|
||||
|
||||
All new code should follow the [PHP-FIG PSR-2 standard](http://www.php-fig.org/psr/psr-2/).
|
||||
Below are a few key items from that specification, please make sure to
|
||||
follow the full spec.
|
||||
|
||||
### [Indentation](http://www.php-fig.org/psr/psr-2/#2-4-indenting)
|
||||
|
||||
Please use four (4) spaces to indent code rather than a tab. Ensure
|
||||
you increase indentation for nested code blocks.
|
||||
|
||||
```php
|
||||
if ($foo == 5) {
|
||||
if ($foo == 5) {
|
||||
if ($foo == 5) {
|
||||
```
|
||||
|
||||
### [Line length](http://www.php-fig.org/psr/psr-2/#1-overview)
|
||||
|
||||
Try to keep the length of a line under 80 characters. If you must
|
||||
exceed 80 characters, please keep it under 120 characters. This makes
|
||||
reading the code easier and also enables compatibility for all screen sizes.
|
||||
|
||||
### [Control structures](http://www.php-fig.org/psr/psr-2/#5-control-structures)
|
||||
|
||||
A space must be used both before and after the parenthesis and also
|
||||
surrounding the condition operator.
|
||||
|
||||
```php
|
||||
if ($foo == 5) {
|
||||
```
|
||||
|
||||
Do not put blocks of code on a single line, do use parenthesis
|
||||
|
||||
```php
|
||||
if ($foo == 5) {
|
||||
echo 'foo is 5';
|
||||
}
|
||||
```
|
||||
|
||||
else and elseif should start on the same line as ending of the previous code block.
|
||||
|
||||
```php
|
||||
if ($foo == 5) {
|
||||
echo 'foo is 5';
|
||||
} elsif ($foo == 4) {
|
||||
echo 'foo is 4';
|
||||
} else {
|
||||
echo 'foo is something else';
|
||||
}
|
||||
```
|
||||
|
||||
### Including files
|
||||
|
||||
Using parenthesis around file includes isn't required, instead just
|
||||
place the file in between ''
|
||||
|
||||
```php
|
||||
require_once 'includes/snmp.inc.php';
|
||||
```
|
||||
|
||||
### [PHP tags](http://www.php-fig.org/psr/psr-1/#1-overview)
|
||||
|
||||
Ensure you use <?php rather than the shorthand version <?.
|
||||
|
||||
```php
|
||||
<?php
|
||||
```
|
||||
|
||||
The `?>` [must be
|
||||
excluded](http://www.php-fig.org/psr/psr-2/#2-2-files) from all files
|
||||
that only include PHP (no html). For instance anything in includes/ or
|
||||
html/includes don't need the tag along with config.php.
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/Code-Structure.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Code structure
|
||||
|
||||
This document will try and provide a good overview of how the code is
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/Creating-Documentation.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Creating Documentation
|
||||
|
||||
One of the goals of the LibreNMS project is to enable users to get all of the
|
||||
|
@ -32,9 +29,12 @@ least put a placeholder in asking for contributions.
|
|||
- Ensure you use the correct formatting for `commands` and `code blocks` by
|
||||
wrapping one liners in backticks or blocks in ```.
|
||||
- Put content into sub-headings where possible to organise the content.
|
||||
- If you rename a file, please add a redirect in for the old file by using
|
||||
`<meta http-equiv="refresh" content="0; url=/NewLocation/" />` within the old
|
||||
file name.
|
||||
- If you rename a file, please add a redirect for the old file in `mkdocs.yml` like so:
|
||||
```yaml
|
||||
- redirects:
|
||||
redirect_maps:
|
||||
'old/page.md': 'new/page.md'
|
||||
```
|
||||
|
||||
Please ensure you add the document to the relevant section within `pages` of
|
||||
`mkdocs.yml` so that it's in the correct menu and is built. Forgetting this
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/Creating-Release.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Creating a release
|
||||
|
||||
### GitHub
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/Dynamic-Config.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Adding new config settings
|
||||
|
||||
Adding support for users to update a new config option via the WebUI
|
||||
|
|
|
@ -1,122 +0,0 @@
|
|||
## Contributor Agreement
|
||||
|
||||
path: blob/master/doc/
|
||||
|
||||
By contributing code to LibreNMS (whether by a GitHub pull request, or by
|
||||
any other means), you assert that:
|
||||
|
||||
- You have the rights to include the code, either as its original author,
|
||||
or due to it being released to you under a compatible license.
|
||||
|
||||
- You are not aware of any third party claims on the code, including
|
||||
copyright, patent, trademark, or any other legal claim.
|
||||
|
||||
- You have acknowledged in the content of your contribution (usually as a
|
||||
source code comment) any and all sources and influences used in the
|
||||
production of that contribution.
|
||||
|
||||
- You have not viewed code written under the [Observium
|
||||
License](http://www.observium.org/wiki/License) in the
|
||||
production of contributed code. This includes all Observium code after
|
||||
Subversion revision 3250 and any patches or other code covered by that
|
||||
license after Tue May 29 13:08:01 2012 +0000 (the date of Observium r3250).
|
||||
|
||||
To agree with these assertions, when you submit your first pull
|
||||
request you will be asked after submitting to sign the CLA, you do
|
||||
this by following the link provided in the PR and agreeing to the CLA
|
||||
using your GitHub account.
|
||||
|
||||
## Local patches
|
||||
|
||||
Please note that the above contributor agreement means that if you have
|
||||
developed a feature for a non-GPL version of Observium, we can't include it
|
||||
in LibreNMS, even if you have not released it to the public. If there's a
|
||||
feature you use to which this applies, please document its functionality in
|
||||
an issue, and we'll do our best to include equivalent functionality in
|
||||
LibreNMS.
|
||||
|
||||
## Copyright
|
||||
|
||||
We recommend that if you add a new file containing original code to the code
|
||||
base that you include a copyright notice in it as per the Free Software
|
||||
Foundation's guidelines. You might find something like the following header
|
||||
appropriate (although this is not legal advice ;-). Please also ensure
|
||||
you add the package information to the header.
|
||||
|
||||
```
|
||||
<?php
|
||||
/*
|
||||
* 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. Please see LICENSE.txt at the top level of
|
||||
* the source code distribution for details.
|
||||
*/
|
||||
|
||||
* @package LibreNMS
|
||||
* @subpackage webui
|
||||
* @link https://www.librenms.org
|
||||
* @copyright 2017 Internet Widgitz Pty Ltd <info@widgitz.com>
|
||||
* @author Me <me@infowidgitz.com>
|
||||
|
||||
```
|
||||
|
||||
The GPLv3 itself also contains recommendations about applying the GPL to
|
||||
your code. Please see LICENSE.txt at the top of this source code
|
||||
distribution for details.
|
||||
|
||||
## Integrating other code
|
||||
|
||||
Giving credit where credit is due is critical to the Free Software
|
||||
philosophy. If you use code from somewhere else, even if it's trivial,
|
||||
be sure to note this as a comment in the code (preferably) or the commit
|
||||
message. Accurate attribution is crucial to our success as a Free Software
|
||||
project.
|
||||
|
||||
- For any dependency
|
||||
- Include its name, source URL, copyright notice, and license in `doc/General/Credits.md`
|
||||
|
||||
- To add a php dependency, please use composer
|
||||
- Add the dependency `composer require slim/slim`
|
||||
|
||||
- Updating php dependencies
|
||||
- Update dependencies `FORCE=1 php56 ./scripts/composer_wrapper.php update`
|
||||
- Commit the updated composer.lock file
|
||||
|
||||
- To add a javascript dependency
|
||||
- Where possible please include minimized libraries in the html/js/ folder.
|
||||
|
||||
- Don't submit code whose license conflicts with the GPLv3. If you're not
|
||||
sure, consult the [Free Software Foundation's license
|
||||
list](https://www.gnu.org/licenses/license-list.html) and see if
|
||||
your code's license is on the compatible or incompatible list. If
|
||||
you prefer a non-copyleft license, Apache 2.0 is the recommended choice as per
|
||||
the FSF guidelines.
|
||||
|
||||
- The current Observium license is incompatible with GPLv3. Don't submit
|
||||
code from current Observium unless you are the copyright holder, and you
|
||||
specifically state in the code that you are releasing it under GPLv3 (or a
|
||||
compatible license).
|
||||
|
||||
Because contributing to Observium requires that you reassign copyright to
|
||||
Adam Armstrong, if you want to release the same code for both Observium
|
||||
and LibreNMS, you need to release it for LibreNMS first and mark it with
|
||||
your own copyright notice, then release it to Observium and remove your
|
||||
copyright, granting Adam ownership.
|
||||
|
||||
Please note that the above is necessary even if you don't care about
|
||||
keeping the copyright to your code, because otherwise we could be accused
|
||||
of misappropriating Observium's code. As the code bases develop, we
|
||||
expect them to diverge, which means this will become less of an issue
|
||||
anyway.
|
||||
|
||||
- Because the GPL's provisions about linking don't apply to PHP-based
|
||||
projects, we interpret the linking provisions of the license to refer to
|
||||
the use of PHP library functions called from LibreNMS code.
|
||||
|
||||
We consider inclusion of files such as MIBs in the LibreNMS repository to
|
||||
be merely aggregation in a distribution medium as per the last paragraph
|
||||
of the GPLv3 section 5 ("Conveying Modified Source Versions"), and because
|
||||
they are not combined with LibreNMS to form a larger program, the GPLv3
|
||||
does not apply to them. This is not a legal ruling - it is simply a
|
||||
statement of our intent and current interpretation.
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/Merging-Pull-Requests.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Merging Pull Requests
|
||||
|
||||
### GitHub
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/SNMP-Traps.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Creating snmp trap handlers
|
||||
|
||||
You must have a working snmptrapd. See
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/Sensor-State-Support.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Sensor State Support
|
||||
|
||||
### Introduction
|
||||
|
|
|
@ -1,76 +0,0 @@
|
|||
source: Developing/Style-Guidelines.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Style guidelines
|
||||
|
||||
This document is here to help style standards for contributions
|
||||
towards LibreNMS. These aren't strict rules but it is in the users
|
||||
interest that a consistent well thought out Web UI is available.
|
||||
|
||||
### Responsiveness
|
||||
|
||||
The Web UI is designed to be mobile friendly and for the most part is
|
||||
and works well. It's worth spending some time to read through the
|
||||
[Bootstrap website](http://getbootstrap.com/css/#grid) to learn more
|
||||
about how to keep things responsive.
|
||||
|
||||
### Navigation bar
|
||||
|
||||
- Always pick the best location for new links to go; think about where
|
||||
users would expect the link to be located and name it so that it's
|
||||
obvious what it does.
|
||||
|
||||
- Ensure sub-sections within the Navigation are separated correctly
|
||||
using `<li role="presentation" class="divider"></li>`.
|
||||
|
||||
- Only use [Font Awesome icons](http://fontawesome.io/icons/) within the Navigation. It speeds up page load times quite considerably.
|
||||
|
||||
### Buttons
|
||||
|
||||
Try to keep buttons colored to reflect the action they will
|
||||
take. Buttons are set using Bootstrap classes. The size of the buttons
|
||||
will depend on the area of the website being used but btn-sm is
|
||||
probably the most common.
|
||||
|
||||
- Delete / Remove buttons: btn btn-danger
|
||||
|
||||
- Edit / Update buttons: btn btn-primary
|
||||
|
||||
- Add / Create buttons: btn btn-success
|
||||
|
||||
### Tables
|
||||
|
||||
Unless the table being used will only ever display a handful of
|
||||
items - yeah that's what we all said, then you need to write your
|
||||
table using [JQuery Bootgrid](http://www.jquery-bootgrid.com/). This
|
||||
shouldn't take that much more code to do it, but provides so much
|
||||
flexibility along with stopping the need for retrieving all the data
|
||||
from SQL in the first place.
|
||||
|
||||
As an example pull request, see [PR
|
||||
706](https://github.com/librenms/librenms/pull/706/files) to get an
|
||||
idea of what it's like to convert an existing pure html table to Bootgrid.
|
||||
|
||||
### Datetime format
|
||||
|
||||
When displaying datetimes, please ensure you use the format YYYY-MM-DD
|
||||
hh:mm:ss where possible, you shouldn't change the order of this as it
|
||||
will be confusing to users. Cutting it short to just display
|
||||
YYYY-MM-DD hh:mm is fine :).
|
||||
|
||||
To keep things consistent we have the following variables which should
|
||||
be used rather than to format dates yourself. This has the added
|
||||
benefit that users can customise the format:
|
||||
|
||||
```php
|
||||
# Date format for PHP date()s
|
||||
$config['dateformat']['long'] = "r"; # RFC2822 style
|
||||
$config['dateformat']['compact'] = "Y-m-d H:i:s";
|
||||
$config['dateformat']['byminute'] = "Y-m-d H:i";
|
||||
$config['dateformat']['time'] = "H:i:s";
|
||||
|
||||
# Date format for MySQL DATE_FORMAT
|
||||
$config['dateformat']['mysql']['compact'] = "%Y-%m-%d %H:%i:%s";
|
||||
$config['dateformat']['mysql']['date'] = "%Y-%m-%d";
|
||||
$config['dateformat']['mysql']['time'] = "%H:%i:%s";
|
||||
```
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/Support-New-OS.md
|
||||
path: blob/master/doc/
|
||||
|
||||
This document is broken down into the relevant sections depending on
|
||||
what support you are adding. During all of these examples we will be
|
||||
using the OS of `pulse` as the example OS we will add.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/Using-Git.md
|
||||
path: blob/master/doc/
|
||||
|
||||
Git can have a bit of a steep learning curve, stick with it as it is
|
||||
worth learning the [basics][1][2] at least.
|
||||
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
source: Developing/Validating-Code.md
|
||||
path: blob/master/doc/
|
||||
|
||||
#### Validating Code
|
||||
|
||||
As part of the pull request process with GitHub we run some automated
|
||||
build tests to ensure that the code is error free, standards [compliant](../Developing/Code-Guidelines.md)
|
||||
build tests to ensure that the code is error free, standards compliant
|
||||
and our test suite builds successfully.
|
||||
|
||||
Rather than submit a pull request and wait for the results, you can
|
||||
|
|
|
@ -1,62 +0,0 @@
|
|||
source: General/index.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Copyright and Licensing
|
||||
|
||||
All contributors to LibreNMS retain copyright to their own code and are not
|
||||
required to sign over their rights to any other party. Code should be licensed
|
||||
under the GPLv3 and MUST NOT contain non-GPL Observium code or GPL
|
||||
incompatible code. To be safe do not view Observium code at all. See
|
||||
[Licensing](Licensing.md) for more details.
|
||||
|
||||
# General Guidelines
|
||||
|
||||
- Test your patches first.
|
||||
- Don't break the poller. User interface blemishes are not critical, but
|
||||
losing data from network monitoring systems might be.
|
||||
- As a general rule, if you're replacing lines of code with new lines of
|
||||
code, don't comment them out, just delete them. Commented out code makes
|
||||
the patch and the resultant code harder to read, and there's no good
|
||||
reason to it since we can easily get them back from git.
|
||||
- If you're fixing a bug or making another minor change, don't reformat the
|
||||
code at the same time. This makes it harder to see what's changed. If
|
||||
you need to reformat it after making the change, do so in a separate
|
||||
commit.
|
||||
- Please join us in [discord](https://discord.gg/librenms) if you are able.
|
||||
Collaborating in real time makes the coordination of contributions easier.
|
||||
- Ensure you read the [Code Guidelines](Code-Guidelines.md)
|
||||
documentation and understand the code
|
||||
style that should be adhered to. You can [validate that your code
|
||||
adheres to these guidelines](Validating-Code.md) before submitting.
|
||||
- Check [Style Guidelines](Style-Guidelines.md) for Web UI guidelines and conventions.
|
||||
|
||||
# How to Contribute
|
||||
|
||||
- [Getting Started](Getting-Started.md) Set up your development
|
||||
environment to make things easier.
|
||||
- [Using Git](Using-Git.md) gives you step-by-step instructions on
|
||||
using git to submit a pull request.
|
||||
- [Code Structure](Code-Structure.md) can help you understand where
|
||||
specific code exists in LibreNMS.
|
||||
- [Creating Documentation](Creating-Documentation.md) It is very
|
||||
important for the continued improvement of LibreNMS that we have
|
||||
good documentation. If you see anything that that needs improvement
|
||||
please submit a pull request to fix it.
|
||||
|
||||
Don't be afraid to submit a GitHub Pull Request. We will help you
|
||||
with anything that needs to be change or suggest ways of improving
|
||||
your patch. Because the maintainers are volunteers too sometimes
|
||||
response may be delayed or brief, please be patient or ask for
|
||||
clarification if needed. Thanks!
|
||||
|
||||
## Good places to start to learn PHP or improve your coding
|
||||
|
||||
- [PHP: The Right Way](http://www.phptherightway.com/) A community
|
||||
curated list of best practices and quick help.
|
||||
- [Laracasts](https://laracasts.com/skills/php) Video coding tutorials
|
||||
that are easy to follow. Many of the beginner videos are
|
||||
free. Suggested Series:
|
||||
- [The PHP Practitioner](https://laracasts.com/series/php-for-beginners)
|
||||
- [Object-Oriented Bootcamp](https://laracasts.com/series/object-oriented-bootcamp-in-php)
|
||||
- [Simple Rules for Simpler Code](https://laracasts.com/series/simple-rules-for-simpler-code)
|
||||
- [Laravel Documentation](https://laravel.com/docs/)
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/os/Custom-Graphs.md
|
||||
path: blob/master/doc/
|
||||
|
||||
First we define our graphs in `includes/definitions.inc.php` to share
|
||||
our work and contribute in the development of LibreNMS. :-) (or place
|
||||
in `config.php` if you don't plan to contribute)
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/os/Health-Information.md
|
||||
path: blob/master/doc/
|
||||
|
||||
#### Sensors
|
||||
|
||||
This document will guide you through adding health / sensor
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/os/Initial-Detection.md
|
||||
path: blob/master/doc/
|
||||
|
||||
This document will provide the information you should need to add
|
||||
basic detection for a new OS.
|
||||
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/os/Mem-CPU-Information.md
|
||||
path: blob/master/doc/
|
||||
|
||||
This document will guide you through adding detection for Memory /
|
||||
Processor for your new device.
|
||||
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: os/Settings.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Optional OS Settings
|
||||
|
||||
This page documents settings that can be set in the os yaml files or
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/os/Test-Units.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Tests
|
||||
|
||||
Tests ensure LibreNMS works as expected, now and in the future. New
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Developing/os/Wireless-Sensors.md
|
||||
path: blob/master/doc/
|
||||
|
||||
This document will guide you through adding wireless sensors for your
|
||||
new wireless device.
|
||||
|
||||
|
|
|
@ -1,16 +1,10 @@
|
|||
FROM squidfunk/mkdocs-material:7.1.0
|
||||
FROM squidfunk/mkdocs-material:8.1.8
|
||||
|
||||
RUN \
|
||||
apk add --no-cache \
|
||||
git \
|
||||
git-fast-import \
|
||||
openssh \
|
||||
&& apk add --no-cache --virtual .build gcc musl-dev \
|
||||
&& pip install --no-cache-dir \
|
||||
pip install --no-cache-dir \
|
||||
'markdown-include' \
|
||||
'mkdocs-awesome-pages-plugin' \
|
||||
'mkdocs-exclude' \
|
||||
'mkdocs-git-revision-date-localized-plugin' \
|
||||
'mkdocs-macros-plugin' \
|
||||
&& apk del .build gcc musl-dev \
|
||||
&& rm -rf /tmp/*
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Agent-Setup.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Check_MK Setup
|
||||
|
||||
The agent can be used to gather data from remote systems you can use
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
source: Extensions/Alerting.md
|
||||
path: blob/master/doc/
|
||||
<meta http-equiv="refresh" content="0; url=/Alerting/" />
|
|
@ -1,14 +1,15 @@
|
|||
source: Extensions/Applications.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Applications
|
||||
|
||||
You can use Application support to graph performance statistics of
|
||||
many applications.
|
||||
|
||||
Different applications support a variety of ways to collect data: 1)
|
||||
by direct connection to the application, 2) snmpd extend, or 3) [the
|
||||
agent](Agent-Setup.md). The monitoring of applications could be added
|
||||
Different applications support a variety of ways to collect data:
|
||||
|
||||
1. By direct connection to the application
|
||||
2. snmpd extend
|
||||
3. [The agent](Agent-Setup.md).
|
||||
|
||||
The monitoring of applications could be added
|
||||
before or after the hosts have been added to LibreNMS.
|
||||
|
||||
If multiple methods of collection are listed you only need to enable one.
|
||||
|
@ -85,66 +86,6 @@ automatically enabled by the unix-agent poller module. It is better to
|
|||
ensure that your application is enabled for monitoring. You can check
|
||||
by following the steps under the `SNMP Extend` heading.
|
||||
|
||||
1. [Apache](#apache) - SNMP extend, Agent
|
||||
1. [Asterisk](#asterisk) - SNMP extend
|
||||
1. [backupninja](#backupninja) - SNMP extend
|
||||
1. [BIND9/named](#bind9-aka-named) - SNMP extend, Agent
|
||||
1. [Certificate](#certificate) - Certificate extend
|
||||
1. [C.H.I.P.](#chip) - SNMP extend
|
||||
1. [Docker Stats](#docker-stats) - SNMP extend
|
||||
1. [Entropy](#entropy) - SNMP extend
|
||||
1. [EXIM Stats](#exim-stats) - SNMP extend
|
||||
1. [Fail2ban](#fail2ban) - SNMP extend
|
||||
1. [FreeBSD NFS Client](#freebsd-nfs-client) - SNMP extend
|
||||
1. [FreeBSD NFS Server](#freebsd-nfs-server) - SNMP extend
|
||||
1. [FreeRADIUS](#freeradius) - SNMP extend, Agent
|
||||
1. [Freeswitch](#freeswitch) - SNMP extend, Agent
|
||||
1. [GPSD](#gpsd) - SNMP extend, Agent
|
||||
1. [Icecast](#icecast) - SNMP extend, Agent
|
||||
1. [ISC DHCP Stats](#isc-dhcp-stats) - SNMP extend
|
||||
1. [Mailcow-dockerized postfix](#mailcow-dockerized-postfix) - SNMP extend
|
||||
1. [Mailscanner](#mailscanner) - SNMP extend
|
||||
1. [Mdadm](#mdadm) - SNMP extend
|
||||
1. [MegaRAID](#megaraid) - SNMP extend
|
||||
1. [Memcached](#memcached) - SNMP extend
|
||||
1. [Munin](#munin) - Agent
|
||||
1. [MySQL](#mysql) - SNMP extend, Agent
|
||||
1. [NGINX](#nginx) - SNMP extend, Agent
|
||||
1. [NFS Server](#nfs-server) - SNMP extend
|
||||
1. [NTP Client](#ntp-client) - SNMP extend
|
||||
1. [NTP Server/NTPD](#ntp-server-aka-ntpd) - SNMP extend
|
||||
1. [Nvidia GPU](#nvidia-gpu) - SNMP extend
|
||||
1. [Open Grid Scheduler](#open-grid-scheduler) - SNMP extend
|
||||
1. [Opensips](#opensips) - SNMP extend
|
||||
1. [OS Updates](#os-updates) - SNMP extend
|
||||
1. [PHP-FPM](#php-fpm) - SNMP extend
|
||||
1. [Pi-hole](#pi-hole) - SNMP extend
|
||||
1. [Portactivity](#portactivity) - SNMP extend
|
||||
1. [Postfix](#postfix) - SNMP extend
|
||||
1. [Postgres](#postgres) - SNMP extend
|
||||
1. [PowerDNS](#powerdns) - Agent
|
||||
1. [PowerDNS Recursor](#powerdns-recursor) - Direct, SNMP extend, Agent
|
||||
1. [PowerDNS dnsdist](#powerdns-dnsdist) - SNMP extend
|
||||
1. [PowerMon](#powermon) - SNMP extend
|
||||
1. [Proxmox](#proxmox) - SNMP extend
|
||||
1. [Puppet Agent](#puppet-agent) - SNMP extend
|
||||
1. [PureFTPd](#pureftpd) - SNMP extend
|
||||
1. [Raspberry PI](#raspberry-pi) - SNMP extend
|
||||
1. [Raspberry PI GPIO Monitor](#raspberry-pi-gpio-monitor) - SNMP extend
|
||||
1. [Redis](#redis) - SNMP extend
|
||||
1. [RRDCached](#rrdcached) - SNMP extend
|
||||
1. [SDFS info](#sdfs-info) - SNMP extend
|
||||
1. [Seafile](#seafile) - SNMP extend
|
||||
1. [SMART](#smart) - SNMP extend
|
||||
1. [Squid](#squid) - SNMP proxy
|
||||
1. [Supervisord](#supervisord) - SNMP extend
|
||||
1. [TinyDNS/djbdns](#tinydns-aka-djbdns) - Agent
|
||||
1. [Unbound](#unbound) - SNMP extend, Agent
|
||||
1. [UPS-nut](#ups-nut) - SNMP extend
|
||||
1. [UPS-apcups](#ups-apcups) - SNMP extend
|
||||
1. [Voip-monitor](#voip-monitor) - SNMP extend
|
||||
1. [ZFS](#zfs) - SNMP extend
|
||||
|
||||
## Apache
|
||||
|
||||
Either use SNMP extend or use the agent.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Authentication.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Authentication Options
|
||||
|
||||
LibreNMS supports multiple authentication modules along with [Two Factor Auth](Two-Factor-Auth.md).
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Auto-Discovery.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Auto Discovery Support
|
||||
|
||||
## Getting Started
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Billing-Module.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Billing Module
|
||||
|
||||
With the billing module you can create a bill, assign a quota to it
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Component.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# About
|
||||
|
||||
The Component extension provides a generic database storage mechanism
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Customizing-the-Web-UI.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Customizing the Web UI
|
||||
|
||||
## Custom menu entry
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Dashboards.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Dashboards
|
||||
|
||||
Create customised dashboards in LibreNMS per user. You can share
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Dell-OpenManage.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Dell OpenManage Support
|
||||
|
||||
For Dell OpenManage support you will need to install Dell OpenManage
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Device-Groups.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Grouping Devices
|
||||
|
||||
LibreNMS supports grouping your devices together in much the same way
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Dispatcher-Service.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Dispatcher Service
|
||||
|
||||
> Status: Release Candidate
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Distributed-Poller.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Distributed Poller
|
||||
|
||||
A normal install contains all parts of LibreNMS:
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<meta http-equiv="refresh" content="0; url=/Alerting/Transports/#e-mail" />
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Fast-Ping-Check.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Fast up/down checking
|
||||
|
||||
Normally, LibreNMS sends an ICMP ping to the device before polling to
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Galera-Cluster.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# MariaDB Galera Cluster
|
||||
|
||||
This is currently being tested, use at your own risk.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Gateone.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# GateOne integration
|
||||
|
||||
We have simple integration for
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<meta http-equiv="refresh" content="0; url=/Extensions/metrics/Graphite/" />
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Graylog.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Graylog integration
|
||||
|
||||
We have simple integration for Graylog, you will be able to view any
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/IRC-Bot-Extensions.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# IRC Bot Extensions
|
||||
|
||||
Okay this is a very quick walk-through in writing your own `commands` for the IRC-Bot.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/IRC-Bot.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# IRC Bot
|
||||
|
||||
LibreNMS has an easy to use IRC-Interface for basic tasks like viewing
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<meta http-equiv="refresh" content="0; url=/Extensions/metrics/InfluxDB/" />
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Interface-Description-Parsing.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Interface Description Parsing
|
||||
|
||||
Librenms can interpret, display and group certain additional information on ports.
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
source: Extensions/Metric-Storage.md
|
||||
path: blob/master/doc/
|
||||
hide_toc: true
|
||||
|
||||
# Metric storage
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/NFSen.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# NFSen
|
||||
|
||||
> The installation of NFSen is out of scope for this document / LibreNMS
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Network-Map.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Network Map
|
||||
|
||||
LibreNMS has the ability to show you a network map based on:
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<meta http-equiv="refresh" content="0; url=/Extensions/metrics/OpenTSDB/" />
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Oxidized.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Oxidized
|
||||
|
||||
Integrating LibreNMS with
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/PeeringDB.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# PeeringDB Support
|
||||
|
||||
LibreNMS has integration with PeeringDB to match up your BGP sessions
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Plugin-System.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Developing for the Plugin System
|
||||
|
||||
With plugins you can extend LibreNMS with special functions that are
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
source: Extensions/Poller-Service.md
|
||||
path: blob/master/doc/
|
||||
<meta http-equiv="refresh" content="0; url=/Extensions/Dispatcher-Service/" />
|
|
@ -1 +0,0 @@
|
|||
<meta http-equiv="refresh" content="0; url=/Extensions/Interface-Description-Parsing/" />
|
|
@ -1 +0,0 @@
|
|||
<meta http-equiv="refresh" content="0; url=/Extensions/metrics/Prometheus/" />
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Proxmox.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Proxmox graphing
|
||||
|
||||
It is possible to create graphs of the Proxmox **VMs** that run on
|
||||
|
|
|
@ -1,55 +0,0 @@
|
|||
# Securing with nginx
|
||||
|
||||
path: blob/master/doc/
|
||||
|
||||
According to the [man page](https://linux.die.net/man/1/rrdcached),
|
||||
under "SECURITY CONSIDERATIONS", rrdcached has no authentication or
|
||||
security except for running under a unix socket. If you choose to use
|
||||
a network socket instead of a unix socket, you will need to secure
|
||||
your rrdcached installation. To do so you can proxy rrdcached using
|
||||
nginx to allow only specific IPs to connect.
|
||||
|
||||
Using the same setup above, using nginx version 1.9.0 or later, you
|
||||
can follow this setup to proxy the default rrdcached port to the local
|
||||
unix socket.
|
||||
|
||||
(You can use `./conf.d` for your configuration as well)
|
||||
|
||||
`mkdir /etc/nginx/streams-{available,enabled}`
|
||||
|
||||
add the following to your nginx.conf file:
|
||||
|
||||
```nginx
|
||||
#/etc/nginx/nginx.conf
|
||||
...
|
||||
stream {
|
||||
include /etc/nginx/streams-enabled/*;
|
||||
}
|
||||
```
|
||||
|
||||
Add this to `/etc/nginx/streams-available/rrd`
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 42217;
|
||||
|
||||
error_log /var/log/nginx/rrd.stream.error.log;
|
||||
|
||||
allow $LibreNMS_IP;
|
||||
deny all;
|
||||
|
||||
proxy_pass unix:/run/rrdcached.sock;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Replace `$LibreNMS_IP` with the ip of the server that will be using
|
||||
rrdcached. You can specify more than one `allow` statement. This will
|
||||
bind nginx to TCP 42217 (the default rrdcached port), allow the
|
||||
specified IPs to connect, and deny all others.
|
||||
|
||||
next, we'll symlink the config to streams-enabled:
|
||||
`ln -s /etc/nginx/streams-{available,enabled}/rrd`
|
||||
|
||||
and reload nginx
|
||||
`service nginx reload`
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/RRDCached.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Setting up RRDCached
|
||||
|
||||
This document will explain how to set up RRDCached for LibreNMS.
|
||||
|
@ -291,5 +288,54 @@ Depending on many factors, you should see the Ops/sec drop by ~30-40%.
|
|||
|
||||
## Securing RRCached
|
||||
|
||||
Please see [RRDCached Security](RRDCached-Security.md)
|
||||
According to the [man page](https://linux.die.net/man/1/rrdcached),
|
||||
under "SECURITY CONSIDERATIONS", rrdcached has no authentication or
|
||||
security except for running under a unix socket. If you choose to use
|
||||
a network socket instead of a unix socket, you will need to secure
|
||||
your rrdcached installation. To do so you can proxy rrdcached using
|
||||
nginx to allow only specific IPs to connect.
|
||||
|
||||
Using the same setup above, using nginx version 1.9.0 or later, you
|
||||
can follow this setup to proxy the default rrdcached port to the local
|
||||
unix socket.
|
||||
|
||||
(You can use `./conf.d` for your configuration as well)
|
||||
|
||||
`mkdir /etc/nginx/streams-{available,enabled}`
|
||||
|
||||
add the following to your nginx.conf file:
|
||||
|
||||
```nginx
|
||||
#/etc/nginx/nginx.conf
|
||||
...
|
||||
stream {
|
||||
include /etc/nginx/streams-enabled/*;
|
||||
}
|
||||
```
|
||||
|
||||
Add this to `/etc/nginx/streams-available/rrd`
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 42217;
|
||||
|
||||
error_log /var/log/nginx/rrd.stream.error.log;
|
||||
|
||||
allow $LibreNMS_IP;
|
||||
deny all;
|
||||
|
||||
proxy_pass unix:/run/rrdcached.sock;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Replace `$LibreNMS_IP` with the ip of the server that will be using
|
||||
rrdcached. You can specify more than one `allow` statement. This will
|
||||
bind nginx to TCP 42217 (the default rrdcached port), allow the
|
||||
specified IPs to connect, and deny all others.
|
||||
|
||||
next, we'll symlink the config to streams-enabled:
|
||||
`ln -s /etc/nginx/streams-{available,enabled}/rrd`
|
||||
|
||||
and reload nginx
|
||||
`service nginx reload`
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/RRDTune.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# RRDTune
|
||||
|
||||
When we create rrd files for ports, we currently do so with a max
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Rancid.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Rancid
|
||||
|
||||
Librenms can generate a list of hosts that can be monitored by
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/SNMP-Proxy.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# SNMP Proxy
|
||||
|
||||
If you have machines that you want to monitor but are not reachable
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/SNMP-Trap-Handler.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# SNMP trap handling
|
||||
|
||||
Currently, LibreNMS supports a lot of trap handlers. You can check them on
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Services.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Nagios Plugins - Services
|
||||
|
||||
Services within LibreNMS provides the ability to leverage Nagios plugins to
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Smokeping.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Smokeping integration
|
||||
|
||||
[SmokePing](https://oss.oetiker.ch/smokeping/) is a tool which lets us keep
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Sub-Directory.md
|
||||
path: blob/master/doc/
|
||||
|
||||
To run LibreNMS under a subdirectory on your Apache server, the
|
||||
directives for the LibreNMS directory are placed in the base server
|
||||
configuration, or in a virtual host container of your choosing. If
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Supermicro.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Supermicro
|
||||
|
||||
For some Supermicro information to show up in LibreNMS, you will need to install an agent.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Syslog.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Syslog support
|
||||
|
||||
This document will explain how to send syslog data to LibreNMS.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Two-Factor-Auth.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Two-Factor Authentication
|
||||
|
||||
Over the last couple of years, the primary attack vector for internet
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Varnish.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Varnish Installation Guide
|
||||
|
||||
This document explains how to install Varnish Reverse Proxy for LibreNMS.
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/Weathermap.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# Network-WeatherMap with LibreNMS
|
||||
|
||||
Integrating LibreNMS with [Network-Weathermap](https://network-weathermap.com/), allows you to build network
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
source: Extensions/World-Map.md
|
||||
path: blob/master/doc/
|
||||
|
||||
# World Map Configuration
|
||||
|
||||
LibreNMS comes with a configurable Geo Map based on World Map Widget
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue