monkit

Application Metrics Toolkit for NodeJS/Typescript

  • monkit

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
monkit
1130.5.06 years ago6 years agoMinified + gzip package size for monkit in KB

Readme

monkit
CircleCI Code Climate Test Coverage
Small App Metrics Toolkit for NodeJS/Typescript
Some custom metrics reporters and a partial port of the java instrumentor project. Built using the metrics module in npm.

Usage

Instrumenting Methods
Instrument an async method by giving it a name and wrapping it with instrument:
const monkit = require('monkit');
const result = await monkit.instrument("my.important.method", async () => {
    return await doImportantWork();
});

// By default, metrics will be stored in the project registry available via `monkit.getRegistry()`

console.log(monkit.getRegistry().timer("my.important.method.timer").count()); // 1

Using Decorators
Methods decorated with @instrumented will be instrumented as ClassName.MethodName with timing, throughput, and error tracking:
const instrumented = require('monkit').instrumented;

class MyClass {
    @instrumented
    public async myMethod(): ImportantThing {
        return await doImportantWork();
    }
}

const result = await new MyClass().myMethod();

// By default, metrics will be stored in the project registry available via `monkit.getRegistry()`

console.log(monkit.getRegistry().timer("MyClass.myMethod.timer").count()); // 1

Reporting Metrics
Extra Reporters include
  • a StatsdReporter for reporting preagregated metrics as statsd gauges
  • a StatusPageReporter, which can be used to periodically send metrics to statuspage.io

At time of writing, still need to tweak monkit.Registry to make it compatible with other reporters from the metrics pacakge.