OpenNMS' automatic provisioning allows for rapid discovery and persistence of tremendous numbers of nodes, interfaces, and services. But what happens when device design prevents a customer from using automatic provisioning, and manual discovery would be tedious and time-consuming?
You leverage OpenNMS' customizability and metadata DSL feature to discover those devices.
The Customer: Windstream
Windstream provides high-speed broadband Internet, phone service, and digital TV packages to residential customers, and products and services for businesses and government agencies.
The Problem: Device Design Prevents Auto-Discovery
Windstream deploys Calix C7 Multiservice Access Systems (C7s) in its network. C7s work in clusters, where all members of the cluster share the same IP address. Data collection from C7s is complicated, as each device has multiple internal SNMP agents, each of which has its own credentials and settings, all exposed on the same IP address and different ports.
During automatic provisioning, OpenNMS expects each device to have its own IP address and SNMP agent. With C7s, there is no way to build inventory in OpenNMS’s traditional, automated way.
Making SNMP requests against C7 devices is expensive: an overwhelming number of requests, many of which would be discarded if the devices are busy, also means an unacceptable impact on performance.
OpenNMS Solution: Customize Using Meta-Data Feature to Manually Populate Inventory
The OpenNMS Group used its Meta-Data DSL (domain specific language) feature to populate the inventory using the node’s endpoint of the ReST API. A custom script uses metadata syntax to explicitly identify the ports needed on the physical interface during the provisioning process.
At runtime, the script overwrites the actual port numbers, allowing collection from each SNMP agent, even when other agents on the device share the same IP address. Instead of retrieving data from an entire SNMP table, the script adds the specific SNMP or physical interfaces directly to the database without querying the device, so the Collector can retrieve performance metrics through SNMP, only from those interfaces.