Skip to content
This repository has been archived by the owner on Jul 10, 2023. It is now read-only.

Latest commit

 

History

History
59 lines (37 loc) · 2.07 KB

README.md

File metadata and controls

59 lines (37 loc) · 2.07 KB

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.