Added Juniper SRX Branch Session Graphing (#8815)

DO NOT DELETE THIS TEXT

#### Please note

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

- [x ] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/)

#### Testers

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

This was previously a pull request that was closed #8721 

Not sure why it was closed or if it was abandoned since the branch they had was deleted, but I just put everything back together along with some test data. Kudos to @centralscrutiniser for the code in the original request.
This commit is contained in:
Andrew Steen
2018-06-13 16:15:43 -04:00
committed by Neil Lathwood
parent 78e3df4dd2
commit c5a8794f9b
7 changed files with 444 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
<?php
$rrd_filename = rrd_name($device['hostname'], 'junos_jsrx_spu_sessions');
require 'includes/graphs/common.inc.php';
$ds = 'spu_flow_sessions';
$colour_area = '9999cc';
$colour_line = 'ff0000';
$colour_area_max = '9999cc';
$scale_min = '0';
$unit_text = 'SPU Flows';
require 'includes/graphs/generic_simplex.inc.php';

View File

@@ -518,6 +518,11 @@ $config['graph_types']['device']['sgos_average_requests']['section'] = 'network
$config['graph_types']['device']['sgos_average_requests']['order'] = '0'; $config['graph_types']['device']['sgos_average_requests']['order'] = '0';
$config['graph_types']['device']['sgos_average_requests']['descr'] = 'Average HTTP Requests'; $config['graph_types']['device']['sgos_average_requests']['descr'] = 'Average HTTP Requests';
// SRX Flow Sessions
$config['graph_types']['device']['junos_jsrx_spu_sessions']['section'] = 'network';
$config['graph_types']['device']['junos_jsrx_spu_sessions']['order'] = '0';
$config['graph_types']['device']['junos_jsrx_spu_sessions']['descr'] = 'Flow Sessions';
// Blue Coat SGOS // Blue Coat SGOS
// Client Connections // Client Connections
$config['graph_types']['device']['bluecoat_http_client_connections']['section'] = 'network'; $config['graph_types']['device']['bluecoat_http_client_connections']['section'] = 'network';

View File

@@ -1,5 +1,24 @@
<?php <?php
use LibreNMS\RRD\RrdDefinition;
$oid_list = 'jnxJsSPUMonitoringCurrentFlowSession.0';
$junos = snmp_get_multi($device, $oid_list, '-OUQs', 'JUNIPER-SRX5000-SPU-MONITORING-MIB');
if (is_numeric($junos[0]['jnxJsSPUMonitoringCurrentFlowSession'])) {
$tags = array(
'rrd_def' => RrdDefinition::make()->addDataset('spu_flow_sessions', 'GAUGE', 0),
);
$fields = array(
'spu_flow_sessions' => $junos[0]['jnxJsSPUMonitoringCurrentFlowSession'],
);
data_update($device, 'junos_jsrx_spu_sessions', $tags, $fields);
$graphs['junos_jsrx_spu_sessions'] = true;
echo ' Flow Sessions';
}
$version = snmp_get($device, 'jnxVirtualChassisMemberSWVersion.0', '-Oqv', 'JUNIPER-VIRTUALCHASSIS-MIB'); $version = snmp_get($device, 'jnxVirtualChassisMemberSWVersion.0', '-Oqv', 'JUNIPER-VIRTUALCHASSIS-MIB');
if (empty($version)) { if (empty($version)) {
preg_match('/\[(.+)\]/', snmp_get($device, '.1.3.6.1.2.1.25.6.3.1.2.2', '-Oqv', 'HOST-RESOURCES-MIB'), $jun_ver); preg_match('/\[(.+)\]/', snmp_get($device, '.1.3.6.1.2.1.25.6.3.1.2.2', '-Oqv', 'HOST-RESOURCES-MIB'), $jun_ver);

View File

@@ -0,0 +1,350 @@
--
-- Juniper Enterprise specific MIB: SRX5000 SPU monitoring MIB
--
-- Copyright (c) 2008-2010, Juniper Networks, Inc.
-- All rights reserved.
--
-- The contents of this document are subject to change without notice.
--
JUNIPER-SRX5000-SPU-MONITORING-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, Gauge32, Unsigned32
FROM SNMPv2-SMI
CounterBasedGauge64
FROM HCNUM-TC
DisplayString
FROM SNMPv2-TC
jnxJsSPUMonitoringRoot
FROM JUNIPER-JS-SMI;
jnxJsSPUMonitoringMIB MODULE-IDENTITY
LAST-UPDATED "201003250000Z" -- Mar 25 00:00:00 2010 UTC
ORGANIZATION "Juniper Networks, Inc."
CONTACT-INFO
" Juniper Technical Assistance Center
Juniper Networks, Inc.
1194 N. Mathilda Avenue
Sunnyvale, CA 94089
E-mail: support@juniper.net"
DESCRIPTION
"This is Juniper Networks' implementation of enterprise
specific MIB for SRX5000 SPU monitoring."
REVISION
"201207040000Z" -- Jul 04 00:00:00 2012 UTC
DESCRIPTION
"add MIB for session counters of IPv4 and IPv6 respectively."
::= { jnxJsSPUMonitoringRoot 1 }
jnxJsSPUMonitoringObjectsTable OBJECT-TYPE
SYNTAX SEQUENCE OF JnxJsSPUMonitoringObjectsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table exposes SPUs utilization statistics."
::= { jnxJsSPUMonitoringMIB 1 }
jnxJsSPUMonitoringObjectsEntry OBJECT-TYPE
SYNTAX JnxJsSPUMonitoringObjectsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each entry collects CPU/Memory utilization for a SPU."
INDEX { jnxJsSPUMonitoringIndex }
::= { jnxJsSPUMonitoringObjectsTable 1 }
JnxJsSPUMonitoringObjectsEntry ::= SEQUENCE
{
jnxJsSPUMonitoringIndex Unsigned32,
jnxJsSPUMonitoringFPCIndex Unsigned32,
jnxJsSPUMonitoringSPUIndex Unsigned32,
jnxJsSPUMonitoringCPUUsage Unsigned32,
jnxJsSPUMonitoringMemoryUsage Unsigned32,
jnxJsSPUMonitoringCurrentFlowSession Unsigned32,
jnxJsSPUMonitoringMaxFlowSession Unsigned32,
jnxJsSPUMonitoringCurrentCPSession Unsigned32,
jnxJsSPUMonitoringMaxCPSession Unsigned32,
jnxJsSPUMonitoringNodeIndex Unsigned32,
jnxJsSPUMonitoringNodeDescr DisplayString,
jnxJsSPUMonitoringFlowSessIPv4 Unsigned32,
jnxJsSPUMonitoringFlowSessIPv6 Unsigned32,
jnxJsSPUMonitoringCPSessIPv4 Unsigned32,
jnxJsSPUMonitoringCPSessIPv6 Unsigned32
}
jnxJsSPUMonitoringIndex OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"SPU's overall index in platform."
::= { jnxJsSPUMonitoringObjectsEntry 1 }
jnxJsSPUMonitoringFPCIndex OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Which FPC SPU is on."
::= { jnxJsSPUMonitoringObjectsEntry 2 }
jnxJsSPUMonitoringSPUIndex OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"SPU'Index inside the FPC."
::= { jnxJsSPUMonitoringObjectsEntry 3 }
jnxJsSPUMonitoringCPUUsage OBJECT-TYPE
SYNTAX Unsigned32
UNITS "percent"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Current SPU(CPU) Utilization in percentage."
::= { jnxJsSPUMonitoringObjectsEntry 4 }
jnxJsSPUMonitoringMemoryUsage OBJECT-TYPE
SYNTAX Unsigned32
UNITS "percent"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Current memory usage of SPU(CPU) in percentage."
::= { jnxJsSPUMonitoringObjectsEntry 5 }
jnxJsSPUMonitoringCurrentFlowSession OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Current flow session number of SPU."
::= { jnxJsSPUMonitoringObjectsEntry 6 }
jnxJsSPUMonitoringMaxFlowSession OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Max flow session number of SPU."
::= { jnxJsSPUMonitoringObjectsEntry 7 }
jnxJsSPUMonitoringCurrentCPSession OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Current CP session number of SPU."
::= { jnxJsSPUMonitoringObjectsEntry 8 }
jnxJsSPUMonitoringMaxCPSession OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Max CP session number of SPU."
::= { jnxJsSPUMonitoringObjectsEntry 9 }
jnxJsSPUMonitoringNodeIndex OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This attribute is used to identify a chassis. A chassis can
be configured in a single or cluster mode. When it is in a
cluster mode, the chassis can be denote as a cluster node."
::= { jnxJsSPUMonitoringObjectsEntry 10 }
jnxJsSPUMonitoringNodeDescr OBJECT-TYPE
SYNTAX DisplayString (SIZE(1..255))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This attribute is used to describe the chassis/cluster
node information. Chassis can be configured as a single, or
cluster node. When it is cluster mode, the chassis can be
denoted as a cluster node."
::= { jnxJsSPUMonitoringObjectsEntry 11 }
jnxJsSPUMonitoringFlowSessIPv4 OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Current IPv4 flow session number of SPU."
::= { jnxJsSPUMonitoringObjectsEntry 12 }
jnxJsSPUMonitoringFlowSessIPv6 OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Current IPv6 flow session number of SPU."
::= { jnxJsSPUMonitoringObjectsEntry 13 }
jnxJsSPUMonitoringCPSessIPv4 OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Current IPv4 CP session number of SPU."
::= { jnxJsSPUMonitoringObjectsEntry 14 }
jnxJsSPUMonitoringCPSessIPv6 OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Current IPv6 CP session number of SPU."
::= { jnxJsSPUMonitoringObjectsEntry 15 }
jnxJsSPUMonitoringCurrentTotalSession OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"System level total session in use."
::= { jnxJsSPUMonitoringMIB 2 }
jnxJsSPUMonitoringMaxTotalSession OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"System level max session possible."
::= { jnxJsSPUMonitoringMIB 3 }
jnxSPUClusterObjectsTable OBJECT-TYPE
SYNTAX SEQUENCE OF JnxSPUClusterObjectsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table exposes SPU monitoring objects in HA cluster."
::= { jnxJsSPUMonitoringMIB 4 }
jnxSPUClusterObjectsEntry OBJECT-TYPE
SYNTAX JnxSPUClusterObjectsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Each entry collects SPU monitoring contents in HA cluster."
INDEX { jnxJsClusterMonitoringNodeIndex }
::= { jnxSPUClusterObjectsTable 1 }
JnxSPUClusterObjectsEntry ::= SEQUENCE
{
jnxJsClusterMonitoringNodeIndex Unsigned32,
jnxJsClusterMonitoringNodeDescr DisplayString,
jnxJsNodeCurrentTotalSession Unsigned32,
jnxJsNodeMaxTotalSession Unsigned32,
jnxJsNodeSessionCreationPerSecond CounterBasedGauge64,
jnxJsNodeSessCreationPerSecIPv4 CounterBasedGauge64,
jnxJsNodeSessCreationPerSecIPv6 CounterBasedGauge64,
jnxJsNodeCurrentTotalSessIPv4 Unsigned32,
jnxJsNodeCurrentTotalSessIPv6 Unsigned32
}
jnxJsClusterMonitoringNodeIndex OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This attribute is used to identify a chassis. A chassis can
be configured in a single or cluster mode. When it is in a
cluster mode, the chassis can be denote as a cluster node."
::= { jnxSPUClusterObjectsEntry 1 }
jnxJsClusterMonitoringNodeDescr OBJECT-TYPE
SYNTAX DisplayString (SIZE(1..255))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This attribute is used to describe the chassis/cluster
node information. Chassis can be configured as a single, or
cluster node. When it is cluster mode, the chassis can be
denoted as a cluster node."
::= { jnxSPUClusterObjectsEntry 2 }
jnxJsNodeCurrentTotalSession OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Node total session in use."
::= { jnxSPUClusterObjectsEntry 3 }
jnxJsNodeMaxTotalSession OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Node max session possible."
::= { jnxSPUClusterObjectsEntry 4 }
jnxJsNodeSessionCreationPerSecond OBJECT-TYPE
SYNTAX CounterBasedGauge64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Node average session created in last 96 seconds."
::= { jnxSPUClusterObjectsEntry 5 }
jnxJsNodeSessCreationPerSecIPv4 OBJECT-TYPE
SYNTAX CounterBasedGauge64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Node average IPv4 session created in last 96 seconds."
::= { jnxSPUClusterObjectsEntry 6 }
jnxJsNodeSessCreationPerSecIPv6 OBJECT-TYPE
SYNTAX CounterBasedGauge64
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Node average IPv6 session created in last 96 seconds."
::= { jnxSPUClusterObjectsEntry 7 }
jnxJsNodeCurrentTotalSessIPv4 OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Node total IPv4 session in use."
::= { jnxSPUClusterObjectsEntry 8 }
jnxJsNodeCurrentTotalSessIPv6 OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Node total IPv6 session in use."
::= { jnxSPUClusterObjectsEntry 9 }
jnxJsSPUMonitoringTotalSessIPv4 OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"System level total IPv4 session in use."
::= { jnxJsSPUMonitoringMIB 5 }
jnxJsSPUMonitoringTotalSessIPv6 OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"System level total IPv6 session in use."
::= { jnxJsSPUMonitoringMIB 6 }
END

1
sql-schema/252.sql Normal file
View File

@@ -0,0 +1 @@
INSERT INTO `graph_types`(`graph_type`, `graph_subtype`, `graph_section`, `graph_descr`, `graph_order`) VALUES ('device', 'junos_jsrx_spu_flows', 'network', 'SPU Flows', 0);

View File

@@ -0,0 +1,40 @@
{
"os": {
"discovery": {
"devices": [
{
"sysName": "<private>",
"sysObjectID": ".1.3.6.1.4.1.2636.1.1.1.2.135",
"sysDescr": "Juniper Networks, Inc. srx340 internet router, kernel JUNOS 15.1X49-D120.3, Build date: 2017-11-04 21:55:34 UTC Copyright (c) 1996-2017 Juniper Networks, Inc.",
"sysContact": null,
"version": null,
"hardware": "",
"features": null,
"location": null,
"os": "junos",
"type": "network",
"serial": null,
"icon": "junos.png"
}
]
},
"poller": {
"devices": [
{
"sysName": "<private>",
"sysObjectID": ".1.3.6.1.4.1.2636.1.1.1.2.135",
"sysDescr": "Juniper Networks, Inc. srx340 internet router, kernel JUNOS 15.1X49-D120.3, Build date: 2017-11-04 21:55:34 UTC Copyright (c) 1996-2017 Juniper Networks, Inc.",
"sysContact": "<private>",
"version": "15.1X49-D120.3",
"hardware": "Juniper SRX340",
"features": null,
"location": "<private>",
"os": "junos",
"type": "network",
"serial": "<private>",
"icon": "junos.png"
}
]
}
}
}

View File

@@ -0,0 +1,11 @@
1.3.6.1.2.1.1.1.0|4|Juniper Networks, Inc. srx340 internet router, kernel JUNOS 15.1X49-D120.3, Build date: 2017-11-04 21:55:34 UTC Copyright (c) 1996-2017 Juniper Networks, Inc.
1.3.6.1.2.1.1.2.0|6|1.3.6.1.4.1.2636.1.1.1.2.135
1.3.6.1.2.1.1.3.0|67|1240463251
1.3.6.1.2.1.1.4.0|4|<private>
1.3.6.1.2.1.1.5.0|4|<private>
1.3.6.1.2.1.1.6.0|4|<private>
1.3.6.1.2.1.25.1.1.0|67|1240504129
1.3.6.1.2.1.25.6.3.1.2.2|4|JUNOS Software Release [15.1X49-D120.3]
1.3.6.1.4.1.2636.3.1.3.0|4|<private>
1.3.6.1.4.1.2636.3.39.1.12.1.1.1.6.0|66|109
1.3.6.1.6.3.10.2.1.3.0|2|12404632