Skip to content
This repository has been archived by the owner on Apr 12, 2019. It is now read-only.
Jesse White edited this page Mar 11, 2019 · 6 revisions

Documentation

Support multi-vendor stacks

To effectively use OCE, event & alarm configuration needs to enriched with additional meta-data.

In OCE we currently provide configuration optimized for Cisco stacks:

  • Syslog patterns and event/alarm definitions for common Syslog messages and SNMP traps

Help wanted to add/improve support for other vendors.

What do we need to do to add other vendors?

  • Build event definitions - properly set alarm-data tag with proper managed-object references
  • Possibly extend the meta-model
  • Possibly write event enrichment/translation rules

Talk to us if you need help here

How do I get started using OCE?

The easy way (Deployment A)

Run OCE in OpenNMS Talk about how we integrate with OpenNMS (OIA) Send event & alarm history to Elasticsearch

The hard way (Deployment B)

Better scale & resilience Talk about how we integrate with OpenNMS (OIA)

Minion ->  Kafka -> OpennNMS -> ES
           |    |      |
           |   Zk      PG
           |    | 
           --> OCE on Sentinel 1
           --> OCE on Sentinel 2

Things that should be setup

  • Event history in Elasticsearch
  • Alarm history in Elasticsearch
  • Feedback in Elasticsearch

How do I customize the configurations?

  • How to edit event configuration?
  • How to edit syslog patterns?

How do I update the model?

Depends on how much we're changing:

  • Maybe edit the event configuration
  • Maybe edit the Groovy scripts
  • Maybe make code changes to the ManagedObjectExtension

Give examples of each?

How do I upgrade the solution?

Based on your feedback, we'll be making frequent updates to improve the solution.

Upgrade procedure depends on the deployment types and how OCE was installed.

From Maven plugin repository (proposed):

In the Karaf shell:

$ # uninstall the feature
$ feature:uninstall opennms-oce-plugin
$ # uninstall the .kar package
$ kar:uninstall opennms-oce-plugin
$ # refresh
$ feature:repo-refresh opennms-plugins
$ # re-install the .kar
$ # install the .kar package
$ kar:install opennms-oce-plugin

By RPM/Deb

  1. Remove .kar from deploy
  2. Uninstall feature(s), uninstall .kar
  3. Update package
  4. Re-install feature

How do I monitor the solution?

  • TODO: Add heartbeat to OCE engine
    • Engines should synthesize a situation, rules in OpenNMS should expect this situation to be present, otherwise trigger another alarm
    • We could use this to validate that HA is functioning - we're only getting the things we expect once
  • TODO: Build Helm dashboards for deployment A and B
    • Dashboard should contain an alarm table panel filtered for the alarms above

How do I train the engine?

Start by giving feedback

Enable and use existing feedback mechanism

Tag what's right and what is not

  • TODO: We really need to able to create new situations using feedback
  • TODO: We should also be tagging the root cause when giving feedback

Export the dataset

Currently done using the [OnmsExportCommand](https://github.com/OpenNMS/oce-tools/blob/master/main/src/main/java/org/opennms/oce/tools/main/OnmsExportCommand.java#L37)

  • TODO: Package functionality from oce-tools project in a way that let's users easily export
  • TODO: Can we help anonymize the data to make it easier to share?

How do I use the dataset to train the model?

Extract model from OCE project

Train with https://uber.github.io/ludwig/

How do I deploy the updated model?

Update model path in OCE configuration