Skip to content

gallolabs/metrics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gallolabs Metrics

A Metrics component, unified frontend and plugable backend (pull/push, StatsD/Prometheus/...)

In your app, don't care about push/pull

function doTheJob(metricBuilder) {
    const counter = metricBuilder.createCounter({
        name: 'callpartner.success',
        description: 'Job total success',
        tags: {partner: 'babeloka'}
    })

    counter.increment()
}

In your app configuration, configure your handler

const metricBuilder = new MetricsBuilder({handler: new StatsDHandler})

// Previous counter will send to StatsD "callpartner.success:1|c|#partner:babeloka"

const metricBuilder = new MetricsBuilder({handler: new OpenMetricsHandler})

/* Previous counter will display when calling http://localhost:9090/metrics
 *
 * # HELP callpartner_success Job total success
 * # TYPE callpartner_success counter
 * callpartner_success{partner="babeloka"} 1
 *
 */

Collect feature

function doTheJob(metricBuilder) {
    metricBuilder.createGauge({
        name: 'cpu',
        description: 'CPU used',
        onCollect(gauge) {
            gauge.set(os.getCpuUsage())
        }
    })
}

onCollect function will be called with pull handler where pulled, and periodically for push handler. In both case, for example, every 10 seconds.

Scope feature

function callPartner(metricBuilder) {
    metricBuilder.createCounter({
        name: 'success',
        description: 'Partner calls'
    }).increment()
}

callPartner(metricBuilder.child('callpartner', {partner: 'babeloka'}))

metricBuilder can be scoped in namespaced metric name and tags. Here callpartner.success with tag {partner = babeloka} will be resolved.

But ...

This is just a POC ! A lot of things are to be done (errors handling, etc)

About

Metrics Node implementation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published