Node.js

Node.js is a JavaScript runtime environment that executes JavaScript code outside of a browser. To integrate with a Node.js app, you can install the node-moog module and use the API to send data to the Node.js integration.

Refer to the LAM and Integration Reference to see the integration's default properties. When you use the integrations UI, you can only configure the visible properties.

If you want to implement a more complex Node.js LAM with custom settings, see Configure the Node.js LAM.

See the Node.js documentation for information on Node.js components.

Before You Begin

The Node.js integration has been validated with Node.js v1.6. Before you start to set up your integration, ensure you have met the following requirements:

  • You have a working knowledge of Node.js and can write JavaScipt code.

  • You have access to the Node.js source code and the ability and permissions to rebuild your Node.js app.

  • Your Node.js app can make requests to external endpoints over port 443. This is the default.

Configure the Node.js Integration

To configure the Node.js integration:

  1. Navigate to the Integrations tab.

  2. Click Node.js in the Monitoring section.

  3. Provide a unique integration name. You can use the default name or customize the name according to your needs.

  4. Set a Basic Authentication username and password.

Configure Your Node.js App

The node-moog module provides an API that enables you to create events in your Node.js app and send them directly to the Node.js integration.

Use the Node.js package manager to install the module:

npm install node-moog

The module provides two objects to manage sending events:

  • moogRest: Connects the Node.js integration and submits event data.

  • moogEvent: An optional event template you can use to format your event data.

Create a connection using moogRest

moogRest(object) initializes a connection to the Node.js integration based upon the information contained in a JSON formatted object as follows:

Property

Value

url

<your Node.js integration URL>

For example: https://example.Moogsoft.com/events/nodejs_nodejs1

authUser

Username generated in the Moogsoft AIOps UI.

authPass

Password generated in the Moogsoft AIOps UI.

certFile

Path to the server certificate.

caFile

Path to the client certificate.

For example:

var moog = require('node-moog');

// Set the connection options for your Node.js integration.
var options = {'url':'https://aiops.example.com/events/nodejs_nodejs1',
        'authUser':'nodejs',
        'authPass':'mysecret',
        'certFile' : '../ssl/server.crt',
        'caFile' : '../ssl/client.crt'
};

// Initialize the the connection.
var moogRest = moog.moogREST(options);

Submit event data using moogRest

moogRest.sendEvent(moogEvent,callback) passes an event in JSON format or an array of events to the Node.js integration. There is an event emitter that provides two events: ok and error.

Parameter

Description

moogEvent

JSON object or an array of JSON objects that represent events to report

callback

Function to handle the HTTP response

For example:

// Create a proforma event.
var moogEvent = new moog.MoogEvent();
moogEvent.description = 'A demo event';

// Send the event to the Node.js integration.
// The callback function is defined inline.
moogRest.sendEvent(moogEvent, function (res, rtn) {
    if (rtn == 200) {
        console.log('moogRest message sent, return code: ' + rtn);
        console.log('moogRest result: ' + res.message);
        //process.exit(1);
    } else {
        console.log('moogRest - ' + rtn);
        console.log('moogRest - ' + res);
        process.exit(1);
    }
});

Create an event using moogEvent

moogEvent(mEvent) initializes an event object. mEvent is an optional default event template. When you create an event using the proforma, you can pass a partial moogEvent. The module provides default values for any properties without values.

Property

Type

Description

signature

String

Identifies the event. Usually source:class:type.

source_id

String

Unique identifier for the source machine.

external_id

String

Unique identifier for the event source.

manager

String

General identifier of the event generator or intermediary.

source

String

Hostname or FQDN of the source machine that generated the event.

class

String

Level of classification for the event. Follows hierarchy class then type.

agent_location

String

Geographical location of the agent that created the event.

type

String

Level of classification for the event. Follows hierarchy class then type.

severity

Int

Severity level of the event from 0-5 (clear - critical).

description

String

Text description of the event.

first_occurred

Epoch int

Timestamp of the first occurrence of the event in Unix epoch time.

agent_time

Epoch int

Timestamp of the current occurrence of the event in Unix epoch time.

For example, to create a new event and edit the value of the description:

var moog = require('node-moog');
var MoogEvent = moog.MoogEvent;

// Initialize an event.
myEvent = new MoogEvent();
//Change the value of an event property.
myEvent.description = 'My new description';

The following example demonstrates how to send a single event to the Node.js integration:

var moog = require('node-moog');

// Set the connection options for your Node.js integraion.
var options = {'url':'https://aiops.example.com/events/nodejs_nodejs1',
    'authUser':'nodejs',
    'authPass':'CUKeB3XhDr1MaypG',
    'certFile' : './ssl/certificate.pem',
    'caFile' : './ssl/certificate.key'
};

// Initialize the REST connection.
var moogRest = moog.moogREST(options);

// Create a proforma event.
var moogEvent = new moog.MoogEvent();

// Change the event description.
moogEvent.description = 'Demo event.';
console.log(moogEvent)

// Send the event to the Node.js integration.
// The callback processes the HTTP response from the integration
// and prints it to the console.
moogRest.sendEvent(moogEvent, function (res, rtn) {
    if (rtn == 200) {
        console.log('moogRest message sent, return code: ' + rtn);
        console.log('moogRest result: ' + res.message);
        //process.exit(0);
    } else {
        console.log('moogRest - ' + rtn);
        console.log('moogRest - ' + res);
        process.exit(1);
    }
});