npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

metrica

v1.0.0

Published

Event Emitter based node library that emits process metrics (uptime, memory, cpu) at given intervals

Downloads

11

Readme

metrica

npm version CircleCI codecov.io JavaScript Style Guide

Event Emitter based node library that emits process metrics (uptime, memory, cpu) at given intervals

Install & quick usage

Requirements: this library is written for Node.js >= 6.0

As usual, this happens through NPM:

npm install --save metrica

Then, in your code:

const m = require('metrica')()
// metrics is an event emitter

m.on('tick', (data) => console.log(data))
// tick happens (by default) every minute and data will look like:
// {
//   cpu: {
//     user: 129255,
//     system: 25515
//   },
//   memory: {
//     rss: 21843968,
//     heapTotal: 8208384,
//     heapUsed: 5394352,
//     external: 8628
//   },
//   uptime: 44.858
// }

🤔 Rationale

When running your Node.js app in production you might be interested in gathering metrics about the running process. Perhaps, you want to log this information or send it to a centralized metrics system.

This library gives you an easy way to collect process metric continuously and offers a convenient event based interface so that you can easily attach your custom logic to handle the new metrics.

Options

When instantiating a new process metrics you can specify some options:

interval: 60000, autoStart: true

  • interval (default 60000) - Allows you to specify how often the metrics are collected. This can be a number (milliseconds) or a string expression as supported by the ms module
  • autoStart (default true) - Will automatically start the collection of metrics at given intervals. If set to false you should start the collection with the .start() method

Methods

A process metrics instance will expose few methods:

  • .start() - Will start the automatic collection of metrics (which will trigger tick events at given intervals)
  • .stop() - Will stop the automatic collection of metrics
  • .getMetrics() - Will get and return the current metrics. It's not going to trigger a tick event.

Events

A process metrics instance is an event emitter and will emit the following events:

  • tick - triggered continuously at the given interval time. It will contain as a payload the current metrics object.

Complete example

This example will collect and log metrics for 5 seconds and then stop the collection:

const metrica = require('metrica')
const m = metrica({ interval: '1s', autoStart: false })
m.on('tick', (metrics) => console.log('Tick:', metrics))
setTimeout(() => m.stop(), 5000)
m.start()

👯‍ Contributing

Everyone is very welcome to contribute to this project. You can contribute just by submitting bugs or suggesting improvements by opening an issue on GitHub.

🤦‍ License

Licensed under MIT License. © Luciano Mammino.