monkit
TypeScript icon, indicating that this package has built-in type declarations

0.5.0 • Public • Published

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.

/monkit/

    Package Sidebar

    Install

    npm i monkit

    Weekly Downloads

    149

    Version

    0.5.0

    License

    MIT

    Unpacked Size

    64 kB

    Total Files

    34

    Last publish

    Collaborators

    • dexhorthy
    • retraced