Greetings,
I would propose some new sensors and counters for Watchguard.
wgSystemCurrActiveConns → Counts active sessions on monitored device
wgClusterEnabled → Give information about device cluster status (single node/FireCluster)
wgFirstMemberRole → First Cluster Member role (useful for failover alerting)
wgSecondMemberRole → Second Cluster Member role (useful for failover alerting)
wgFirstMemberWeightAvg → Weight Average Index for First Member - Gives information about general device health. Anything below 100 means “issues”
wgSecondMemberWeightAvg → Weight Average Index for Second Member - Gives information about general device health. Anything below 100 means “issues”
I just tried to implement on our side, and i found that the following changes are needed:
\opt\librenms\includes\discovery\definitions\fireware.yaml → Add the new sensor and MIB information
mib: WATCHGUARD-CLUSTER-STATUS-MIB:WATCHGUARD-SYSTEM-STATISTICS-MIB
modules:
os:
sysDescr_regex: '/(?<hardware>.*)/'
sensors:
count:
data:
- oid: wgSystemCurrActiveConns
descr: 'Active Sessions'
state:
data:
-
oid: wgClusterEnabled
descr: 'Cluster Status'
states:
- { value: 0, descr: Single Box, graph: 0, generic: 0 }
- { value: 1, descr: FireCluster, graph: 0, generic: 0 }
-
oid: wgFirstMemberRole
descr: 'First Member Role'
states:
- { value: 0, descr: Disabled, graph: 0, generic: 0 }
- { value: 1, descr: Worker, graph: 0, generic: 0 }
- { value: 2, descr: Backup, graph: 0, generic: 0 }
- { value: 3, descr: Master, graph: 0, generic: 0 }
- { value: 4, descr: Idle, graph: 0, generic: 0 }
- { value: 5, descr: Standby, graph: 0, generic: 0 }
-
oid: wgSecondMemberRole
descr: 'Second Member Role'
states:
- { value: 0, descr: Disabled, graph: 0, generic: 0 }
- { value: 1, descr: Worker, graph: 0, generic: 0 }
- { value: 2, descr: Backup, graph: 0, generic: 0 }
- { value: 3, descr: Master, graph: 0, generic: 0 }
- { value: 4, descr: Idle, graph: 0, generic: 0 }
- { value: 5, descr: Standby, graph: 0, generic: 0 }
-
oid: wgSecondMemberWeightAvg
descr: 'Second Member WAI'
low_limit: 99
-
oid: wgFirstMemberWeightAvg
descr: 'First Member WAI'
low_limit: 99
\opt\librenms\includes\discovery\fireware.yaml → Add the mib_dir path
os: fireware
text: 'Watchguard Fireware'
mib_dir: watchguard
type: firewall
over:
- { graph: device_bits, text: Traffic }
- { graph: device_processor, text: 'CPU Usage' }
icon: watchguard
group: watchguard
discovery:
-
sysObjectID:
- .1.3.6.1.4.1.3097.1.4
- .1.3.6.1.4.1.3097.1.5
\opt\librenms\mibs\watchguard\WATCHGUARD-CLUSTER-STATUS-MIB → add the new MIB from WatchGuard. There is a bug, first row shows the wrong name, must be changed accordingly.
WATCHGUARD-CLUSTER-STATUS-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE,
OBJECT-IDENTITY, enterprises,
IpAddress, TimeTicks FROM SNMPv2-SMI
watchguard FROM WATCHGUARD-SMI;
wgInfoModule MODULE-IDENTITY
LAST-UPDATED "200701251200Z"
ORGANIZATION "WatchGuard Technologies, Inc."
CONTACT-INFO
" WatchGuard Technologies, Inc.
505 Fifth Avenue South
Suite 500
Seattle, WA 98104
United States
+1.206.613.6600 "
DESCRIPTION
"The MIB module describes various system statistics information
of WatchGuard system."
REVISION "200701251200Z"
DESCRIPTION
"Initial revision."
::= { watchguard 6 }
wgClusterStatusMIB OBJECT-IDENTITY
STATUS current
DESCRIPTION
"This is cluster status information."
::= { wgInfoModule 6 }
wgClusterEnabled OBJECT-TYPE
SYNTAX INTEGER {
disabled(0),
enabled(1)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"It is cluster or single box."
::= { wgClusterStatusMIB 1 }
wgFirstMemberId OBJECT-TYPE
SYNTAX OCTET STRING (SIZE(0..256))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"First member id."
::= { wgClusterStatusMIB 2 }
wgFirstMemberRole OBJECT-TYPE
SYNTAX INTEGER {
disabled(0),
worker(1),
backup(2),
master(3),
idle(4),
standby(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"First member role."
::= { wgClusterStatusMIB 3 }
wgFirstMemberSystemHealth OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"First member system health value."
::= { wgClusterStatusMIB 4 }
wgFirstMemberHardwareHealth OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"First member hardware health value."
::= { wgClusterStatusMIB 5 }
wgFirstMemberMonitorPortHealth OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"First member monitored ports health value."
::= { wgClusterStatusMIB 6 }
wgFirstMemberWeightAvg OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"First member weight avg value."
::= { wgClusterStatusMIB 7 }
wgSecondMemberId OBJECT-TYPE
SYNTAX OCTET STRING (SIZE(0..256))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Second member id."
::= { wgClusterStatusMIB 8 }
wgSecondMemberRole OBJECT-TYPE
SYNTAX INTEGER {
disabled(0),
worker(1),
backup(2),
master(3),
idle(4),
standby(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Second member role."
::= { wgClusterStatusMIB 9 }
wgSecondMemberSystemHealth OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Second member system health value."
::= { wgClusterStatusMIB 10 }
wgSecondMemberHardwareHealth OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Second member hardware health value."
::= { wgClusterStatusMIB 11 }
wgSecondMemberMonitorPortHealth OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Second member monitored ports health value."
::= { wgClusterStatusMIB 12 }
wgSecondMemberWeightAvg OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Second member weight avg value."
::= { wgClusterStatusMIB 13 }
END