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.