@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
TypeScript
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;
}