The OpenNMS Kafka Datasource is used when ALEC is deployed in a distributed installation.
The Kafka data source integrates with OpenNMS by leveraging the Kafka Producer and Kafka Event Consumer features.
The Kafka Producer feature is used to forward alarms, nodes and topology data encoded in protocol buffers to several topics. The Kafka Datasource consumes from these topics and provides ALEC with a feed of alarms and inventory.
The following properties can be used to configure the names of the Kafka topics used. These topics are expected to exist in the Kafka broker for the datasource to operate.
Property | Default Value | Description |
---|---|---|
alarmTopic |
|
Alarms managed by OpenNMS |
alarmFeedbackTopic |
|
Alarm feedback managed by OpenNMS |
edgesTopic |
|
Topology managed by OpenNMS |
nodeTopic |
|
Node inventory managed by OpenNMS |
eventSinkTopic |
|
Used to forward events to OpenNMS |
inventoryTopic |
|
Used to maintain inventory state |
To update the bundle configuration and point to a script on the file system, you must update the scriptFile property of the org.opennms.alec.datasource.opennms.kafka PID.
config:edit org.opennms.alec.datasource.opennms.kafka
config:property-set scriptFile /tmp/inventory.groovy
config:update
There are three methods exposed to the InventoryObject script.
As the Edges and Nodes are received on the Kafka topic, the following methods are invoked respectively, giving the opportunity to derive a list of inventory objects.
InventoryObjects edgeToInventory(TopologyEdge edge)
List<InventoryObject> toInventoryObjects(OpennmsModelProtos.Node node)
When Alarms arrive on the Kafka topic, the following method is invoked. The EnrichedAlarm type contains both a reference to an InventoryObject Type and a reference to an InventoryObject Identifier.
Together, these denote the InventoryObject the Alarm will be attached to. Additionally, the EnrichedAlarm contains a list of inventory objects so multiple objects can be derived from the alarm.
EnrichedAlarm enrichAlarm(OpennmsModelProtos.Alarm alarm)