🚀 DAY 5 OF LAUNCH WEEK:Introducing Webhook Events for Alert Changes.Learn more →
Socket
Book a DemoInstallSign in
Socket

@ovotech/influx-metrics-tracker

Package Overview
Dependencies
Maintainers
354
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ovotech/influx-metrics-tracker

Track metrics and store them in an Influx database, with secondary logging if Influx is unavailable

latest
npmnpm
Version
1.3.7
Version published
Maintainers
354
Created
Source

Influx Metrics Tracker

Track metrics and store them in an Influx database, with secondary logging if Influx is unavailable or invalid input is provided.

Using

yarn add @ovotech/influx-metrics-tracker
import { createInfluxConnection, MetricsTracker } from '@ovotech/influx-metrics-tracker';
import { Logger } from '@ovotech/winston-logger';
import { InfluxDB, ISingleHostConfig } from 'influx';
import * as winston from 'winston';

// Define a specific tracker
class PerformanceMetricsTracker extends MetricsTracker {
  private static queryTimeMeasurementName = 'query-time';

  async trackQueryTime(timeMs: number, queryName: string) {
    await this.trackPoint(
      PerformanceMetricsTracker.queryTimeMeasurementName,
      { queryName },
      { timeMs: Math.round(timeMs) },
    );
  }
}

// Create Logger and Influx instances
const winstonLogger = winston.createLogger(...);
const logger = new Logger(winstonLogger, { traceToken: req.headers['X-Trace-Token'] });
const influx = createInfluxConnection(process.env);

// Create the tracker
const metricsMeta = {
  extraTagName: 'some-value',
};
const tracker = new PerformanceMetricsTracker(influx, logger, metricsMeta);

// Track a point
await tracker.trackQueryTime(12.34, 'myFirstQuery')

As well as a base class that allows you to define custom trackers, there are pre-defined trackers for common operations. These allow services to use a common interface and not re-implement the same functionality.

  • ExternalRequestMetricsTracker - track information about calling other services
  • KafkaMetricsTracker - track actions around the lifecycle of Kafka events
  • ResponseMetricsTracker - track information about responses from an API

Running the tests

Then you can run the tests with:

yarn test

Coding style (linting, etc) tests

Style is maintained with prettier and tslint

yarn lint

Deployment

Deployment is preferment by lerna automatically on merge / push to master, but you'll need to bump the package version numbers yourself. Only updated packages with newer versions will be pushed to the npm registry.

Contributing

Have a bug? File an issue with a simple example that reproduces this so we can take a look & confirm.

Want to make a change? Submit a PR, explain why it's useful, and make sure you've updated the docs (this file) and the tests (see test folder).

License

This project is licensed under Apache 2 - see the LICENSE file for details

FAQs

Package last updated on 31 Oct 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts