UNPKG

@mediarithmics/plugins-nodejs-sdk

Version:

This is the mediarithmics nodejs to help plugin developers bootstrapping their plugin without having to deal with most of the plugin boilerplate

75 lines (74 loc) 2.4 kB
import { Tags } from 'hot-shots'; import winston = require('winston'); export declare enum MetricsType { GAUGE = "gauge", INCREMENT = "increment" } export interface InitOptions { /** * interval to send stats to datadog in ms (default = 10 minutes) */ timerInMs?: number; /** * Used to init or not the stats client. * When running production, NODE_ENV should be "production". * If running tests, NODE_ENV should be "development". */ environment?: string | undefined; /** * An optional logger to send Metrics into logs (in debug mode) */ logger?: winston.Logger; } export interface addOrUpdateMetricsOptions { /** * @example * ``` * declare your metrics, their types, value and optionals tags. * {metrics: {processed_users: { type: MetricsType.GAUGE, value: 4, tags: {datamart_id: '4521'}}, users_with_mobile_id_count: {type: MetricsType.INCREMENT, value: 1, tags: {datamart_id: '4521'}}}} * {processed_users: 4} */ metrics: { [metricName: string]: MetricOptions; }; } export interface MetricOptions { type: MetricsType; value: number; tags?: Tags; } export type MetricsSet = Map<string, MetricsOptionsWithName>; export interface MetricsOptionsWithName extends MetricOptions { metricName: string; } /** * Send stats to datadog */ export declare class StatsClient { private static instance; private interval; private metrics; private client; private constructor(); /** * @example * ``` * private this.statsClient: StatsClient * constructor() { * this.statsClient = StatsClient.init({ environment: process.env.NODE_ENV }); * } * ``` */ static init({ timerInMs, environment, logger }: InitOptions): StatsClient; /** * Increment some metrics * @example * ``` * this.statClient.addOrUpdateMetrics({metrics: {processed_users: { type: MetricsType.GAUGE, value: 4, tags: {datamart_id: '4521'}}, users_with_mobile_id_count: {type: MetricsType.INCREMENT, value: 1, tags: {datamart_id: '4521'}}}}) * this.statClient.addOrUpdateMetrics({metrics: {apiCallsError: { type: MetricsType.GAUGE, value: 10, tags: {statusCode: '500'}}}}) * ``` */ addOrUpdateMetrics({ metrics }: addOrUpdateMetricsOptions): void; private sendStats; private resetIncrementMetric; }