Checkmk SNMP plugin for monitoring Nokia ISAM GPON equipment.
| Check | Services | Data |
|---|---|---|
| Linecard | Per-slot availability | Planned/actual type, serial, availability state |
| GPON | Per-port status | Admin/oper status, SFP optics, traffic stats |
- SFP optics: Tx/Rx power (dBm), bias current (A), voltage (V), temperature (C)
- Traffic: Tx/Rx bytes (unicast, multicast, broadcast, total, drops)
- Utilization: Tx/Rx utilization percentages
- Other: Active ONTs, DBA congestion time
Detects Nokia ISAM devices where sysDescr contains NOKIA ISAM.
The plugin provides two SNMP sections:
| Section | Contents | Cost per host | Cache it? |
|---|---|---|---|
oposs_isam_gpon |
PM traffic counters | ~1 s | no — must be fetched every run |
oposs_isam_gpon_info |
SFP optics, descriptions, interface status | ~11 s | yes, at 300 s |
The optics table is read from the SFP hardware on demand — about 23 ms per row against 5.8 ms for the counters — so it dominates the host's SNMP fetch. Splitting it out is what makes a short check interval affordable. Measured on a 16-port OLT, per 300 s of wall time:
| Setup | SNMP per 300 s |
|---|---|
| 300 s check interval (default) | 18 s |
| 60 s check interval, no caching | 68 s (3.8x) |
60 s check interval, _info cached at 300 s |
22 s (1.2x) |
The plugin works unchanged at the default interval. A 60 s interval mainly improves how faithfully bursty traffic is represented, because the counters are then differenced within one PM window instead of being read once per window.
To enable it, two rules in Checkmk:
- Setup → Service monitoring rules → Service checks → "Normal check
interval for service checks" — set 1 minute for these hosts. Scoping the
rule to the service
Check_MK$is enough; that is the active check which drives the SNMP fetch. - Setup → Agents → SNMP rules → "Fetch intervals for SNMP sections" — add
oposs_isam_gpon_info(andoposs_isam_linecard) at 300 s. Do not addoposs_isam_gpon. The internal name of this ruleset is stillsnmp_check_interval.
Install the package and activate before adding the rules, so the
oposs_isam_gpon_info section exists when it is referenced. Setting the
interval while an older, unsplit version is active is the 3.8x case.
The traffic rate and utilization metrics were renamed and no translation maps the old names onto the new ones, so those graphs start empty. This is deliberate: every value they held was written by 0.2.0 through 0.4.0, whose rate conversion assumed a 900 s PM window where the device uses 300 s. That produced spikes far above the GPON line rate and under-reported steady traffic by roughly 6x, and filtering the spikes would leave a plausible- looking graph that is still wrong by that factor.
The SFP optics metrics, active-ONT count and DBA congestion time keep their names and their history.
Download the latest .mkp file from the
Releases page and
install it:
mkp install oposs_isam_gpon-<version>.mkpCopy the plugin files into your Checkmk site:
local/lib/python3/cmk_addons/plugins/oposs_isam_gpon/
├── agent_based/
│ └── oposs_isam_gpon.py
├── checkman/
│ └── oposs_isam_gpon
└── graphing/
├── isam_gpon.py
└── translations.py
GNU General Public License v3 - OETIKER+PARTNER AG. See LICENSE.
v3 rather than v2 because SLOT_TABLE and PORT_TABLE_NT in
agent_based/oposs_isam_gpon.py are taken from LibreNMS, which is GPL v3;
see the commit link in the source. GPL v3 code cannot be relicensed to v2.