Neutralize Pesky Miscreants

    @opencensus/core
    TypeScript icon, indicating that this package has built-in type declarations

    0.1.0 • Public • Published

    OpenCensus Core Node.js

    Gitter chat Node Version NPM Published Version dependencies Status devDependencies Status Apache License

    OpenCensus for Node.js is an implementation of OpenCensus, a toolkit for collecting application performance and behavior monitoring data. It currently includes 3 apis: stats, tracing and tags.

    The library is in alpha stage and the API is subject to change.

    Installation

    Install the opencensus-core package with NPM:

    npm install @opencensus/core

    Usage

    Get the global Stats manager instance.

    To enable metrics, we’ll import a few items from OpenCensus Core package.

    const { globalStats, MeasureUnit, AggregationType, TagMap } = require('@opencensus/core');
    
    // The latency in milliseconds
    const mLatencyMs = globalStats.createMeasureDouble(
      "repl/latency",
      MeasureUnit.MS,
      "The latency in milliseconds"
    );

    Create Views and Tags:

    We now determine how our metrics will be organized by creating Views. We will also create the variable needed to add extra text meta-data to our metrics – methodTagKey, statusTagKey, and errorTagKey.

    const methodTagKey = { name: "method" };
    const statusTagKey = { name: "status" };
    const errorTagKey = { name: "error" };
    
    // Create & Register the view.
    const latencyView = globalStats.createView(
      "demo/latency",
      mLatencyMs,
      AggregationType.DISTRIBUTION,
      [methodTagKey, statusTagKey, errorTagKey],
      "The distribution of the latencies",
      // Bucket Boundaries:
      // [>=0ms, >=25ms, >=50ms, >=75ms, >=100ms, >=200ms, >=400ms, >=600ms, >=800ms, >=1s, >=2s, >=4s, >=6s]
      [0, 25, 50, 75, 100, 200, 400, 600, 800, 1000, 2000, 4000, 6000]
    );
    globalStats.registerView(latencyView);

    Recording Metrics:

    Now we will record the desired metrics. To do so, we will use globalStats.record() and pass in measurements.

    const [_, startNanoseconds] = process.hrtime();
    const tags = new TagMap();
    tags.set(methodTagKey, { value: "REPL" });
    tags.set(statusTagKey, { value: "OK" });
    
    globalStats.record([{
      measure: mLatencyMs,
      value: sinceInMilliseconds(startNanoseconds)
    }], tags);
    
    function sinceInMilliseconds(startNanoseconds) {
      const [_, endNanoseconds] = process.hrtime();
      return (endNanoseconds - startNanoseconds) / 1e6;
    }

    Measures can be of type Int64 or DOUBLE, created by calling createMeasureInt64 and createMeasureDouble respectively. Its units can be:

    MeasureUnit Usage
    UNIT for general counts
    BYTE bytes
    KBYTE Kbytes
    SEC seconds
    MS millisecond
    NS nanosecond

    Views can have agregations of type SUM, LAST_VALUE, COUNT and DISTRIBUTION. To know more about Stats core concepts, please visit: https://opencensus.io/core-concepts/metrics/

    See Quickstart/Metrics for a full example of registering and collecting metrics.

    Useful links

    LICENSE

    Apache License 2.0

    Install

    npm i @opencensus/core

    DownloadsWeekly Downloads

    1,993,706

    Version

    0.1.0

    License

    Apache-2.0

    Unpacked Size

    385 kB

    Total Files

    123

    Last publish

    Collaborators

    • kjin
    • ofrobots
    • google-admin
    • isaikevych
    • google-wombot
    • mayurkale22