express-monitoring

Express Monitoring

Usage no npm install needed!

<script type="module">
  import expressMonitoring from 'https://cdn.skypack.dev/express-monitoring';
</script>

README

Express Monitoring

codecov Build Status

Package allows to define custom monitoring controls (rules) and execute them using express handlers.

This NodeJS adaptation of Horat1us/yii2-monitoring package for PHP.

Written on Typescript.

Installation

Using NPM:

npm i express-monitoring

Documentation

Structure

  • Controller - controller with express request handlers
  • Control - interface for monitoring control items.
    • Compose - pre-defined control to compose another controls.
    • Dependency - pre-defined control to block execution of another control.
  • FailureError - error class to be thrown in controls.

Usage

You need to define your own Control or use one of pre-defined. Then, just create Controller instance and add it to routes.

// region Monitoring Controller Definition
// This should be placed to separate file
import * as monitoring from "express-monitoring";

// can also be async or return promise
const SomeControl: monitoring.Control = () => {
    // check for something
    const isSuccessful = false;
    
    if (!isSuccessful) {
        throw new monitoring.FailureError(
            "Something goes wrong.",
            0, // error code
            {}, // details, optional
            "NotSuccessful" // string error type
        );
    }
    
    return {}; // you also may return details
};

let controls = {
    "controlID": SomeControl, 
};
const Monitoring = new monitoring.Controller(controls);
// endregion

import * as express from "express";

const app = express();
const port = 3000;

app.get('/monitoring/:id', Monitoring.control); // route to check controls separately
app.get('/monitoring/full', Monitoring.full); // route to check all controls by one request


app.listen(3000, () => `Monitoring app listening on port ${port}`);

Then you can make request GET http://localhost:3000/monitoring/controlID. For response examples see Documentation.

License

MIT