Correlation Pipeline
Collector/Forwarder
Collector
Any number of collector processes can run simultaneously. They handshake with each other and for a Raft cluster, and elect one process as a leader.
All processes convert all snmp traps received by the system they’re running on into json documents and publish these to the RabbitMQ dashboard.collection exchange.
The collector processes add their Raft state (either leader, candidate or follower) the trap message.
Execution
A collector process is started by executing the trap-forwarder shell script :
Usage: trap-forwarder [OPTIONS]
Options:
--staging PATH Trap staging directory [required]
--hostname TEXT RabbitMQ hostname ["['test-dashboard-
storage01.geant.org', 'test-dashboard-
storage02.geant.org', 'test-dashboard-
storage03.geant.org']"]
--collection TEXT Exchange name ['dashboard.collection']
--requests TEXT monitoring requests exchange name ['mon.requests']
--username TEXT RabbitMQ username ['dashboard']
--password TEXT RabbitMQ user password ['password']
--vhost TEXT RabbitMQ vhost ['/dashboard']
--watchdog INTEGER watchdog check frequency in seconds (no watchdog if
unset)
--timeout INTEGER number of seconds without traps to indicate error
--help Show this message and exit.
Remote Collector
Remote Collector
Any number of remote collector processes can run simultaneously. They all subscribe to a named queue on the live RabbitMQ cluster and forward traps to the collection exchange on the staging cluster.
Execution
A collector process is started by executing the remote-collector shell script :
Usage: remote-collector [OPTIONS]
Options:
--source-rmq TEXT Broker hostname of a member of the live RabbitMQ
cluster ['test-dashboard-storage01.geant.org',
'test-dashboard-storage02.geant.org',
'test-dashboard-storage03.geant.org']
--source-exchange TEXT Pub/Sub exchange name used for subscribing to
live traps [dashboard.collection]
--subscription-queue TEXT Queue name to use for subscribing to remote traps
[dashboard.remote.collection]
--source-username TEXT RabbitMQ username [dashboard]
--source-password TEXT RabbitMQ user password [password]
--source-vhost TEXT RabbitMQ vhost [/dashboard]
--dest-rmq TEXT Broker hostname of a member of the staging
RabbitMQ cluster ['test-noc-alarms-vm01.geant.org',
'test-noc-alarms-vm02.geant.org',
'test-noc-alarms-vm03.geant.org']
--dest-exchange TEXT Pub/Sub exchange on the staging cluster for
republishing traps [copied from src-exchange]
--dest-username TEXT RabbitMQ username [copied from src-exchange]
--dest-password TEXT RabbitMQ user password [copied from src-exchange]
--dest-vhost TEXT RabbitMQ vhost [copied from src-exchange]
--watchdog INTEGER watchdog check frequency in seconds (no watchdog if unset)
--timeout INTEGER number of seconds without traps to indicate error [60]
--help Show this message and exit.
Classifier
Classifier
Any number of classifier processes can run simultaneously. All listen directly to the RabbitMQ dashboard.classifiers worker queue and process traps in parallel, enriching them with Inventory Provider data and republishing them to the dashboard.classified exchange.
Only traps with collector.raft == leader are processed. All others are discarded.
Execution
A classifier process is started by executing the classifier-worker shell script:
Usage: classifier-worker [OPTIONS]
Options:
--hostname TEXT RabbitMQ hostname [['test-dashboard-
storage01.geant.org', 'test-dashboard-
storage02.geant.org', 'test-dashboard-
storage03.geant.org']]
--monitoring TEXT monitoring requests exchange name [mon.requests]
--collection TEXT collection pub/sub exchange name
[dashboard.collection]
--classifiers TEXT global classifiers queue name
[dashboard.classifiers]
--classified TEXT classified pub/sub exchange name
[dashboard.classified]
--username TEXT RabbitMQ username ["dashboard"]
--password TEXT RabbitMQ user password ["password"]
--vhost TEXT RabbitMQ vhost ["/dashboard"]
--inventory TEXT inventory provider uri ["http://test-inventory-
provider01.geant.org:8080"]
--watchdog INTEGER watchdog check frequency in seconds (no watchdog if
unset)
--timeout INTEGER number of seconds without traps to indicate error
--ignored-agent TEXT ignored snmp agent hostnames
--inventory_token TEXT API Token for accessing the Inventory Provider service
[default is None]
--hpc-dashboard-url TEXT HPC dashboard base URL (required, multiple)
--hpc-dashboard-token TEXT API token for HPC dashboard [default is None]
--help Show this message and exit.