Skip to main content

Moolets

A Moolet is a software module that performs data processing on events, alerts or Situations in Moogsoft Onprem. Each Moolet is a subcomponent of the Moogfarmd service. See Data Processing Flow and Server Roles for more information.

Some Moolets have a corresponding Javascript file called a Moobot. The Moobot controls and customizes Moolet behavior. Bots provide additional programmatic data processing for objects passing through a Moolet.

The following diagram illustrates the Moolet architecture:

Moolet.png
  1. The configuration file defines the Moolet behavior.

  2. Moobots are the logic and custom code for the Moolet.

  3. The object is sent to the next Moolet

Refer to the documentation on individual Moolets to learn about how to configure their behavior.

Data flow and Moolet chaining

There are several ways to trigger a Moolet to process an object. Moolet chaining refers to the way that you may configure Moolets to process data within a specified order. Some Moolets process data outside the Moolet chain. An object can enter a Moolet in one of the following ways:

  • The Moolet listens on the message bus for objects from another Moolet using the process_output_of directive.

  • The Moolet listens for events on the message bus using the event_handlers directive.

  • The Moolet processes data based upon a schedule or other criteria.

  • The Moolet runs scheduled jobs during a Moogfarmd instance.

  • Another module forwards the object to the Moolet.

Listen for events from another Moolet

The process_output_of directive configures a Moolet to listen for objects from another named Moolet. You can use this method to chain Moolets together to form an automated workflow pipeline.

{
    name            : "AlertBuilder",
    classname       : "CAlertBuilder",
    ...
    moobot          : "AlertBuilder.js",
    process_output_of : "Event Workflows",
    ...
}

For example, in the following diagram, the Alert Builder listens for the output of the Event Workflow Engine.

Event_WFE.png

Listen for a type of event on the Message Bus

The event_handlers directive configures a Moolet to listen for events on the message bus. See Constants for a list of event types. For example, the Event Workflow Engine Moolet listens for new events (“Event”) on the Message Bus and processes them based on any active workflows.

{
    name            : "Event Workflows",
    classname       : "com.moogsoft.farmd.moolet.workflowengine.CWorkflowEngine",
    ...
    moobot          : "WorkflowEngine.js",
    event_handlers : [ "Event"],
    message_type: "event"
}

Process data on a schedule or similar trigger

Standalone Moolets process data without being part of a Moolet chain. Examples of standalone Moolets include Moolets that are not in the Data Processing Flow diagram such as the situation manager, indexer, and housekeeper.

{
    name              :   "Indexer",
    classname         :   "com.moogsoft.farmd.moolet.indexer.CIndexer",
    ...
    standalone_moolet :   true,
    ...
}

Schedule events

The scheduler Moolet is a unique Standalone Moolet that runs jobs at regular intervals for a running instance of Moogfarmd. The scheduler is a standalone Moolet and cannot subscribe to the Message Bus or listen to events.

Forwarding

A Moolet can receive an object to process via forwarding from another Moolet. Some types of forwarding include: