mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Merge branch 'master' of https://github.com/librenms/librenms
This commit is contained in:
@@ -16,6 +16,7 @@ Table of Content:
|
||||
- [HipChat](#transports-hipchat)
|
||||
- [PagerDuty](#transports-pagerduty)
|
||||
- [Pushover](#transports-pushover)
|
||||
- [Boxcar](#transports-boxcar)
|
||||
- [Entities](#entities)
|
||||
- [Devices](#entity-devices)
|
||||
- [BGP Peers](#entity-bgppeers)
|
||||
@@ -309,6 +310,26 @@ $config['alert']['transports']['pushover'][] = array(
|
||||
);
|
||||
```
|
||||
|
||||
## <a name="transports-boxcar">Boxcar</a>
|
||||
|
||||
Enabling Boxcar support is super easy.
|
||||
Copy your access token from the Boxcar app or from the Boxcar.io website and setup the transport in your config.php like:
|
||||
|
||||
```php
|
||||
$config['alert']['transports']['boxcar'][] = array(
|
||||
"access_token" => 'ACCESSTOKENGOESHERE',
|
||||
);
|
||||
```
|
||||
|
||||
To modify the Critical alert sound, add the 'sound_critical' parameter, example:
|
||||
|
||||
```php
|
||||
$config['alert']['transports']['boxcar'][] = array(
|
||||
"access_token" => 'ACCESSTOKENGOESHERE',
|
||||
"sound_critical" => 'detonator-charge',
|
||||
);
|
||||
```
|
||||
|
||||
# <a name="entities">Entities
|
||||
|
||||
Entities as described earlier are based on the table and column names within the database, if you are ensure of what the entity is you want then have a browse around inside MySQL using `show tables` and `desc <tablename>`.
|
||||
|
||||
BIN
html/images/os/netonix.png
Normal file
BIN
html/images/os/netonix.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 912 B |
90
includes/alerts/transport.boxcar.php
Normal file
90
includes/alerts/transport.boxcar.php
Normal file
@@ -0,0 +1,90 @@
|
||||
/* Copyright (C) 2015 James Campbell <neokjames@gmail.com>
|
||||
* 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 <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Copyright (C) 2015 Daniel Preussker <f0o@devilcode.org>
|
||||
* 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 <http://www.gnu.org/licenses/>. */
|
||||
|
||||
/**
|
||||
* Boxcar API Transport
|
||||
* @author trick77 <jan@trick77.com>
|
||||
* @copyright 2015 trick77, neokjames, f0o, LibreNMS
|
||||
* @license GPL
|
||||
* @package LibreNMS
|
||||
* @subpackage Alerts
|
||||
*/
|
||||
|
||||
foreach( $opts as $api ) {
|
||||
$data = array();
|
||||
$data['user_credentials'] = $api['access_token'];
|
||||
$data['notification[source_name]'] = $config['project_id'];
|
||||
switch( $obj['severity'] ) {
|
||||
case "critical":
|
||||
$severity = "Critical";
|
||||
if( !empty( $api['sound_critical'] ) ) {
|
||||
$data['notification[sound]'] = $api['sound_critical'];
|
||||
}
|
||||
break;
|
||||
case "warning":
|
||||
$severity = "Warning";
|
||||
if( !empty( $api['sound_warning'] ) ) {
|
||||
$data['notification[sound]'] = $api['sound_warning'];
|
||||
}
|
||||
break;
|
||||
}
|
||||
switch( $obj['state'] ) {
|
||||
case 0:
|
||||
$title_text = "OK";
|
||||
if( !empty( $api['sound_ok'] ) ) {
|
||||
$data['notification[sound]'] = $api['sound_ok'];
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
$title_text = $severity;
|
||||
break;
|
||||
case 2:
|
||||
$title_text = "Acknowledged";
|
||||
break;
|
||||
}
|
||||
$data['notification[title]'] = $title_text." - ".$obj['hostname']." - ".$obj['name'];
|
||||
$message_text = "Timestamp: ".$obj['timestamp'];
|
||||
if( !empty( $obj['faults'] ) ) {
|
||||
$message_text .= "\n\nFaults:\n";
|
||||
foreach($obj['faults'] as $k => $faults) {
|
||||
$message_text .= "#".$k." ".$faults['string']."\n";
|
||||
}
|
||||
}
|
||||
$data['notification[long_message]'] = $message_text;
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl, CURLOPT_URL, 'https://new.boxcar.io/api/notifications');
|
||||
curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true);
|
||||
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
|
||||
$ret = curl_exec($curl);
|
||||
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
||||
if( $code != 201 ) {
|
||||
var_dump("Boxcar returned error"); //FIXME: proper debugging
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -466,6 +466,17 @@ $config['os'][$os]['bad_if'][] = 'cpu';
|
||||
$config['os'][$os]['over'][0]['graph'] = 'device_bits';
|
||||
$config['os'][$os]['over'][0]['text'] = 'Device Traffic';
|
||||
|
||||
$os = 'netonix';
|
||||
$config['os'][$os]['text'] = 'Netonix';
|
||||
$config['os'][$os]['type'] = 'network';
|
||||
$config['os'][$os]['icon'] = 'netonix';
|
||||
$config['os'][$os]['over'][0]['graph'] = 'device_bits';
|
||||
$config['os'][$os]['over'][0]['text'] = 'Device Traffic';
|
||||
$config['os'][$os]['over'][1]['graph'] = 'device_processor';
|
||||
$config['os'][$os]['over'][1]['text'] = 'CPU Usage';
|
||||
$config['os'][$os]['over'][2]['graph'] = 'device_mempool';
|
||||
$config['os'][$os]['over'][2]['text'] = 'Memory Usage';
|
||||
|
||||
// Juniper
|
||||
$os = 'junos';
|
||||
$config['os'][$os]['text'] = 'Juniper JunOS';
|
||||
|
||||
7
includes/discovery/os/netonix.inc.php
Normal file
7
includes/discovery/os/netonix.inc.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
$version = snmp_get($device, 'firmwareVersion.0', '-Osqnv', 'NETONIX-SWITCH-MIB', 'mibs:mibs/netonix/');
|
||||
list(,$version) = explode(': ', $version);
|
||||
if (is_numeric($version)) {
|
||||
$os = 'netonix';
|
||||
}
|
||||
171
mibs/netonix/NETONIX-SWITCH-MIB
Normal file
171
mibs/netonix/NETONIX-SWITCH-MIB
Normal file
@@ -0,0 +1,171 @@
|
||||
NETONIX-SWITCH-MIB DEFINITIONS ::= BEGIN
|
||||
|
||||
IMPORTS
|
||||
MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises FROM SNMPv2-SMI
|
||||
OBJECT-GROUP, MODULE-COMPLIANCE FROM SNMPv2-CONF
|
||||
snmpMIBGroups FROM SNMPv2-MIB
|
||||
DisplayString,TEXTUAL-CONVENTION FROM SNMPv2-TC;
|
||||
|
||||
netonixSwitch MODULE-IDENTITY
|
||||
LAST-UPDATED "9803231700Z"
|
||||
ORGANIZATION "Netonix"
|
||||
CONTACT-INFO "eric@netonix.com"
|
||||
DESCRIPTION "The MIB Module for Netonix Switches."
|
||||
REVISION "9803231700Z"
|
||||
DESCRIPTION "The MIB Module for Netonix Switches."
|
||||
::= { enterprises 99999 }
|
||||
|
||||
netonixSwitchGroup OBJECT-GROUP
|
||||
OBJECTS { firmwareVersion,
|
||||
fanSpeed,
|
||||
tempDescription,
|
||||
temp,
|
||||
voltageDescription,
|
||||
voltage
|
||||
}
|
||||
STATUS current
|
||||
DESCRIPTION "A collection of objects providing basic instrumentation and control of an SNMPv2 entity."
|
||||
::= { snmpMIBGroups 8 }
|
||||
|
||||
netonixSwitchConformance OBJECT IDENTIFIER ::= { netonixSwitch 99 }
|
||||
netonixSwitchGroups OBJECT IDENTIFIER ::= { netonixSwitchConformance 1 }
|
||||
netonixSwitchCompliances OBJECT IDENTIFIER ::= { netonixSwitchConformance 2 }
|
||||
|
||||
netonixSwitchCompliance MODULE-COMPLIANCE
|
||||
STATUS current
|
||||
DESCRIPTION "The compliance statement for switches which implement the Netonix Switch MIB."
|
||||
MODULE MANDATORY-GROUPS { netonixSwitchGroup }
|
||||
::= { netonixSwitchCompliances 1 }
|
||||
|
||||
VoltageTC ::= TEXTUAL-CONVENTION
|
||||
DISPLAY-HINT "d-2"
|
||||
STATUS current
|
||||
DESCRIPTION "A voltage with 2 decimal places"
|
||||
SYNTAX Integer32
|
||||
|
||||
firmwareVersion OBJECT-TYPE
|
||||
SYNTAX DisplayString (SIZE (0..255))
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION "The version of the firmware running on the switch"
|
||||
::= { netonixSwitch 1 }
|
||||
|
||||
fanTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF FanEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION "Fan watching information."
|
||||
::= { netonixSwitch 2 }
|
||||
|
||||
fanEntry OBJECT-TYPE
|
||||
SYNTAX FanEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION "An entry containing a disk and its statistics."
|
||||
INDEX { fanIndex }
|
||||
::= { fanTable 1 }
|
||||
|
||||
FanEntry ::= SEQUENCE {
|
||||
fanIndex Integer32,
|
||||
fanSpeed Integer32
|
||||
}
|
||||
|
||||
fanIndex OBJECT-TYPE
|
||||
SYNTAX Integer32 (0..65535)
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION "Integer reference number (row number) for the fan mib."
|
||||
::= { fanEntry 1 }
|
||||
|
||||
fanSpeed OBJECT-TYPE
|
||||
SYNTAX Integer32 (0..65535)
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION "Integer reference number (row number) for the fan mib."
|
||||
::= { fanEntry 2 }
|
||||
|
||||
tempTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF TempEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION "Temperature watching information."
|
||||
::= { netonixSwitch 3 }
|
||||
|
||||
tempEntry OBJECT-TYPE
|
||||
SYNTAX TempEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION "An entry containing a temperature sensor."
|
||||
INDEX { tempIndex }
|
||||
::= { tempTable 1 }
|
||||
|
||||
TempEntry ::= SEQUENCE {
|
||||
tempIndex Integer32,
|
||||
tempDescription DisplayString,
|
||||
temp Integer32
|
||||
}
|
||||
|
||||
tempIndex OBJECT-TYPE
|
||||
SYNTAX Integer32 (0..65535)
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION "Integer reference number (row number) for the temp mib."
|
||||
::= { tempEntry 1 }
|
||||
|
||||
tempDescription OBJECT-TYPE
|
||||
SYNTAX DisplayString (SIZE (0..255))
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION "Description of this temperature sensor"
|
||||
::= { tempEntry 2 }
|
||||
|
||||
temp OBJECT-TYPE
|
||||
SYNTAX Integer32 (0..65535)
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION "The current temperature for this sensor"
|
||||
::= { tempEntry 3 }
|
||||
|
||||
voltageTable OBJECT-TYPE
|
||||
SYNTAX SEQUENCE OF VoltageEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION "Voltage watching information."
|
||||
::= { netonixSwitch 4 }
|
||||
|
||||
voltageEntry OBJECT-TYPE
|
||||
SYNTAX VoltageEntry
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION "An entry containing a voltage sensor."
|
||||
INDEX { voltageIndex }
|
||||
::= { voltageTable 1 }
|
||||
|
||||
VoltageEntry ::= SEQUENCE {
|
||||
voltageIndex Integer32,
|
||||
voltageDescription DisplayString,
|
||||
voltage VoltageTC
|
||||
}
|
||||
|
||||
voltageIndex OBJECT-TYPE
|
||||
SYNTAX Integer32 (0..65535)
|
||||
MAX-ACCESS not-accessible
|
||||
STATUS current
|
||||
DESCRIPTION "Integer reference number (row number) for the voltage mib."
|
||||
::= { voltageEntry 1 }
|
||||
|
||||
voltageDescription OBJECT-TYPE
|
||||
SYNTAX DisplayString (SIZE (0..255))
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION "Description of this voltage sensor"
|
||||
::= { voltageEntry 2 }
|
||||
|
||||
voltage OBJECT-TYPE
|
||||
SYNTAX VoltageTC
|
||||
MAX-ACCESS read-only
|
||||
STATUS current
|
||||
DESCRIPTION "The current voltage for this sensor"
|
||||
::= { voltageEntry 3 }
|
||||
|
||||
END
|
||||
Reference in New Issue
Block a user