Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GeneratedDecoratorWithArgs

GeneratedDecoratorWithArgs: (...args: any) => MethodDecorator

Type declaration

    • (...args: any): MethodDecorator
    • Parameters

      • Rest ...args: any

      Returns MethodDecorator

GenericMethod

GenericMethod: (...args: any[]) => any

Type declaration

    • (...args: any[]): any
    • Parameters

      • Rest ...args: any[]

      Returns any

MetricArgs

MetricDateArgs

MetricDateArgs: [Tags]

MetricNumericArgs

MetricNumericArgs: [number, Tags]

MetricOptions

MetricWrapper

MetricWrapper: (metricArgs: any, metric: any, oldMethod: GenericMethod, target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => GenericMethod

Type declaration

    • (metricArgs: any, metric: any, oldMethod: GenericMethod, target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor): GenericMethod
    • Parameters

      • metricArgs: any
      • metric: any
      • oldMethod: GenericMethod
      • target: any
      • propertyKey: string | symbol
      • descriptor: PropertyDescriptor

      Returns GenericMethod

PrometheusMetricArgs

PrometheusMetricDateArgs

PrometheusMetricDateArgs: [Tags]

PrometheusMetricNumericArgs

PrometheusMetricNumericArgs: [Tags, number]

PrometheusMetricOptions

PrometheusMetricOptions: GaugeConfiguration<string> | SummaryConfiguration<string> | CounterConfiguration<string> | HistogramConfiguration<string>

StatsDMetricArgs

StatsDMetricDateArgs

StatsDMetricDateArgs: [string, Tags]

StatsDMetricNumericArgs

StatsDMetricNumericArgs: [string, number, Tags]

StatsDOptions

StatsDOptions: {} | "dummy"

To validate options typings, check the types StatsdHttpOptions, StatsdTcpOptions, StatsdUdpOptions defined in @types/statsd-client and the statsd-client project.

TimerEnd

TimerEnd: (newTags?: Tags) => void

Type declaration

    • (newTags?: Tags): void
    • Parameters

      • Optional newTags: Tags

      Returns void

Functions

InjectMetric

  • InjectMetric(name: string): (target: object, key: string | symbol, index?: number | undefined) => void
  • Metric Injector

    This will help you inject metrics into your controllers or any other classes.

    Remember you'll first need to create a provider for your metric,

    import { Module } from "@nestjs/common";
    import { MetricsModule } from "@mists/nestjs-metrics";
    
    @Module({
      controllers: [MetricsController],
      imports: [MetricsModule.register()],
      providers: [makeMetricProvider(Metrics.Counter, 'metrics_injector', {})],
    })
    export class AppModule {}

    then inject it into your class:

    @Controller('/route')
    export class MetricsController {
      constructor(@InjectMetric('metrics_injector') protected counter: Counter) {}
    
      @Get()
      public yourMetricMethod(): string {
        // ...
        this.counter.inc();
        // ...
      }
    }

    Parameters

    • name: string

    Returns (target: object, key: string | symbol, index?: number | undefined) => void

      • (target: object, key: string | symbol, index?: number | undefined): void
      • Parameters

        • target: object
        • key: string | symbol
        • Optional index: number | undefined

        Returns void

InjectPrometheusMetric

  • InjectPrometheusMetric(name: string): (target: object, key: string | symbol, index?: number | undefined) => void
  • Prometheus Metric Injector

    This will help you inject prometheus metrics into your controllers or any other classes.

    Remember you'll first need to create a provider for your metric,

    import { Module } from "@nestjs/common";
    import { MetricsModule } from "@mists/nestjs-metrics";
    import { makePrometheusProvider } from "@mists/nestjs-metrics/dist/prometheus";
    
    @Module({
      imports: [MetricsModule.register()],
      providers: [makePrometheusProvider(Metric.Counter, 'metrics_prometheus_counter')],
    })
    export class AppModule {}

    then inject it into your class:

    import { Controller } from "@nestjs/common";
    import * as PromClient from "statsd-client";
    import { InjectStatsdMetric } from "@mists/nestjs-metrics/dist/statsd";
    
    @Controller('/route')
    export class MetricsController {
      constructor(@InjectStatsdMetric('metrics_prometheus_counter') protected counter: PromClient.Counter<string>) {}
    
      @Get()
      public yourMetricMethod(): string {
        // ...
        this.counter.inc('name.space');
        // ...
      }
    }

    Parameters

    • name: string

    Returns (target: object, key: string | symbol, index?: number | undefined) => void

      • (target: object, key: string | symbol, index?: number | undefined): void
      • Parameters

        • target: object
        • key: string | symbol
        • Optional index: number | undefined

        Returns void

InjectStatsdMetric

  • InjectStatsdMetric(name: string): (target: object, key: string | symbol, index?: number | undefined) => void
  • StatsD Metric Injector

    This will help you inject statsd metrics into your controllers or any other classes.

    Remember you'll first need to create a provider for your metric,

    import { Module } from "@nestjs/common";
    import { MetricsModule } from "@mists/nestjs-metrics";
    import { makeStatsdProvider } from "@mists/nestjs-metrics/dist/statsd";
    
    @Module({
      imports: [MetricsModule.register()],
      providers: [makeStatsdProvider('statsd_metric')],
    })
    export class AppModule {}

    then inject it into your class:

    import { Controller } from "@nestjs/common";
    import { StatsDClient } from "statsd-client";
    import { InjectStatsdMetric } from "@mists/nestjs-metrics/dist/statsd";
    
    @Controller('/route')
    export class MetricsController {
      constructor(@InjectStatsdMetric('statsd_metric') protected metric: StatsDClient) {}
    
      @Get()
      public yourMetricMethod(): string {
        // ...
        this.metric.inc('name.space');
        // ...
      }
    }

    Parameters

    • name: string

    Returns (target: object, key: string | symbol, index?: number | undefined) => void

      • (target: object, key: string | symbol, index?: number | undefined): void
      • Parameters

        • target: object
        • key: string | symbol
        • Optional index: number | undefined

        Returns void

Const generateMetricDecorator

  • Generate a Metric Decorator. Can use wrappers like metricIncrementWrapper, metricGaugeDecrementWrapper, metricGaugeIncrementWrapper, metricGaugeSetWrapper, metricTimingWrapper, metricObserveWrapper, or custom defined metric wrappers.

    const IncrementHttpCalls = generateMetricDecorator(Metrics.Counter, 'metric_http_calls', metricIncrementWrapper, genericOptions);
    
    export const customMetricWrapper: MetricWrapper = (
      metricArgs: MetricNumericArgs,
      metric: any,
      oldMethod: GenericMethod,
      target: any,
      propertyKey: string | symbol,
      descriptor: PropertyDescriptor,
    ): GenericMethod => (...args: any[]): any => {
      (metric as Gauge).inc(...metricArgs);
      return oldMethod.call(target, ...args);
    };
    
    const CustomIncrementHttpCalls = generateMetricDecorator(
      Metrics.Gauge,
      'metric_http_calls_custom',
      customMetricWrapper,
      genericOptions
    );
    
    @Controller('/test')
    class CustomController {
      @Get()
      @IncrementHttpCalls()
      @CustomIncrementHttpCalls(1, { serverId: 'server_1' })
      testMethod() {}
    }

    Parameters

    Returns GeneratedDecoratorWithArgs

Const generatePrometheusDecorator

Const generateStatsDDecorator

  • Generate a Metric Decorator. Can use wrappers like metricIncrementWrapper, metricGaugeDecrementWrapper, metricGaugeIncrementWrapper, metricGaugeSetWrapper, metricTimingWrapper, metricObserveWrapper, or custom defined metric wrappers.

    import {Controller} from "@netsjs/common";
    import {MetricWrapper, GenericMethod} from "@mists/nestjs-metrics";
    import {StatsDMetricNumericArgs, generateStatsDDecorator} from "@mists/nestjs-metrics/dist/statsd";
    
    export const customMetricWrapper: MetricWrapper = (
      metricArgs: StatsDMetricNumericArgs,
      metric: any,
      oldMethod: GenericMethod,
      target: any,
      propertyKey: string | symbol,
      descriptor: PropertyDescriptor,
    ): GenericMethod => (...args: any[]): any => {
      (metric as StatsDClientAlike).increment(...metricArgs);
      return oldMethod.call(target, ...args);
    };
    
    
    const IncrementHttpCalls = generateStatsDDecorator(metricIncrementWrapper);
    
    const CustomIncrementHttpCalls = generateStatsDDecorator(customMetricWrapper);
    
    @Controller('/test')
    class CustomController {
      @Get()
      @IncrementHttpCalls()
      @CustomIncrementHttpCalls(1, { serverId: 'server_1' })
      testMethod() {}
    }

    Parameters

    Returns GeneratedDecoratorWithArgs

Const makeMetricProvider

  • Metric Provider

    Will create a metric provider based on the metric type you need, and it's custom options.

    import { Module } from "@nestjs/common";
    import { MetricsModule } from "@mists/nestjs-metrics";
    
    @Module({
      controllers: [MetricsController],
      imports: [MetricsModule.register()],
      providers: [makeMetricProvider(Metrics.Counter, 'metrics_injector', {})],
    })
    export class AppModule {}

    Parameters

    Returns Provider

makePrometheusProvider

  • ```typescript import { Module } from "@nestjs/common"; import { MetricsModule, Metric } from "@mists/nestjs-metrics"; import { makePrometheusProvider } from "@mists/nestjs-metrics/dist/prometheus";

    @Module({ imports: [MetricsModule.register()], providers: [makePrometheusProvider(Metric.Counter, 'metrics_prometheus_counter')], }) export class AppModule {}

    Parameters

    Returns Provider

makeStatsdProvider

  • makeStatsdProvider(name: string, options?: StatsDOptions): Provider
  • To validate options typings, check the types TcpOptions, UdpOptions, HttpOptions defined in @types/statsd-client and the statsd-client project.

    import { Module } from "@nestjs/common";
    import { MetricsModule } from "@mists/nestjs-metrics";
    import { makeStatsdProvider } from "@mists/nestjs-metrics/dist/statsd";
    
    @Module({
      imports: [MetricsModule.register()],
      providers: [makeStatsdProvider('metrics_statsd_counter')],
    })
    export class AppModule {}

    Parameters

    Returns Provider

Const metricGaugeDecrementWrapper

  • Gauge Decrement Wrapper Used for generating Gauge.dec trigger

    import { Controller, Get } from "@nestjs/common";
    import { generateMetricDecorator, metricGaugeDecrementWrapper } from '@mists/nestjs-metrics';
    
    const GaugeDecrement = generateMetricDecorator(
      Metrics.Gauge,
      'metric_gauge_dec_decorator',
      metricGaugeDecrementWrapper,
      {}
    );
    
    @Controller('/test')
    class CustomController {
      @Get()
      @GaugeDecrement()
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const metricGaugeIncrementWrapper

  • Gauge Increment Wrapper Used for generating Gauge.inc trigger

    import { Controller, Get } from "@nestjs/common";
    import { generateMetricDecorator, metricGaugeIncrementWrapper } from '@mists/nestjs-metrics';
    
    const GaugeDecrement = generateMetricDecorator(
      Metrics.Gauge,
      'metric_gauge_inc_decorator',
      metricGaugeIncrementWrapper,
      {}
    );
    
    @Controller('/test')
    class CustomController {
      @Get()
      @GaugeIncrement()
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const metricGaugeSetWrapper

  • Gauge Set Wrapper Used for generating Gauge.set trigger

    import { Controller, Get } from "@nestjs/common";
    import { generateMetricDecorator, metricGaugeSetWrapper } from '@mists/nestjs-metrics';
    
    const GaugeSet = generateMetricDecorator(
      Metrics.Gauge,
      'metric_gauge_set_decorator',
      metricGaugeSetWrapper,
      {}
    );
    
    @Controller('/test')
    class CustomController {
      @Get()
      @GaugeSet(10)
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const metricIncrementWrapper

  • Increment Wrapper Used for generating Counter.inc trigger

    import { Controller, Get } from "@nestjs/common";
    import { generateMetricDecorator, metricIncrementWrapper } from '@mists/nestjs-metrics';
    
    const Increment = generateMetricDecorator(
      Metrics.Counter,
      'metric_counter_decorator',
      metricIncrementWrapper,
      {}
    );
    
    @Controller('/test')
    class CustomController {
      @Get()
      @Increment()
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const metricObserveWrapper

  • Observer Wrapper Used for generating Histogram.observe, Summary.observe trigger

    import { Controller, Get } from "@nestjs/common";
    import { generateMetricDecorator, metricObserveWrapper } from '@mists/nestjs-metrics';
    
    const Observer = generateMetricDecorator(
      Metrics.Histogram,
      'metric_observe_decorator',
      metricObserveWrapper,
      {}
    );
    
    @Controller('/test')
    class CustomController {
      @Get()
      @Observer(1, {serverId: 'server_1'})
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const metricTimingWrapper

  • Timing Wrapper Used for generating {@link Gauge.setTimer}, {@link Histogram.setTimer}, {@link Summary.setTimer} trigger

    import { Controller, Get } from "@nestjs/common";
    import { generateMetricDecorator, metricTimingWrapper } from '@mists/nestjs-metrics';
    
    const ActionTiming = generateMetricDecorator(
      Metrics.Gauge,
      'metric_gauge_timing_decorator',
      metricTimingWrapper,
      {}
    );
    
    @Controller('/test')
    class CustomController {
      @Get()
      @ActionTiming({serverId: 'server_1'})
      controllerAction() {}
    }

    Parameters

    • metricArgs: MetricDateArgs
    • metric: any
    • oldMethod: GenericMethod
    • target: any
    • propertyKey: string | symbol
    • descriptor: PropertyDescriptor

    Returns GenericMethod

Const prometheusGaugeDecrementWrapper

  • Prometheus Gauge Decrement Wrapper Used for generating PromClient.Gauge.dec trigger

    import { Controller, Get } from "@nestjs/common";
    import { generatePrometheusDecorator, prometheusGaugeDecrementWrapper } from '@mists/nestjs-metrics/dist/prometheus';
    
    const GaugeDec = generatePrometheusDecorator(
      Metrics.Gauge,
      prometheusGaugeDecrementWrapper
    );
    
    @Controller('/test')
    class CustomController {
      @Get()
      @GaugeDec()
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const prometheusGaugeIncrementWrapper

  • Prometheus Gauge Increment Wrapper Used for generating PromClient.Gauge.inc trigger

    import { Controller, Get } from "@nestjs/common";
    import { generatePrometheusDecorator, prometheusGaugeIncrementWrapper } from '@mists/nestjs-metrics/dist/prometheus';
    
    const GaugeInc = generatePrometheusDecorator(
      Metrics.Gauge,
      prometheusGaugeIncrementWrapper
    );
    
    @Controller('/test')
    class CustomController {
      @Get()
      @GaugeInc()
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const prometheusGaugeSetWrapper

  • Prometheus Gauge Set Wrapper Used for generating PromClient.Gauge.set trigger

    import { Controller, Get } from "@nestjs/common";
    import { generatePrometheusDecorator, prometheusGaugeSetWrapper } from '@mists/nestjs-metrics/dist/prometheus';
    
    const GaugeSet = generatePrometheusDecorator(
      Metrics.Gauge,
      prometheusGaugeSetWrapper
    );
    
    @Controller('/test')
    class CustomController {
      @Get()
      @GaugeSet(1)
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const prometheusIncrementWrapper

  • Prometheus Increment Wrapper Used for generating PromClient.Counter.inc trigger

    import { Controller, Get } from "@nestjs/common";
    import { generatePrometheusDecorator, prometheusIncrementWrapper } from '@mists/nestjs-metrics/dist/prometheus';
    
    const Increment = generatePrometheusDecorator(
      Metrics.Counter,
      prometheusIncrementWrapper
    );
    
    @Controller('/test')
    class CustomController {
      @Get()
      @Increment()
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const prometheusObserveWrapper

  • Prometheus Histogram/Summary Observe Wrapper Used for generating PromClient.Histogram.observe or PromClient.Summary.observe trigger

    import { Controller, Get } from "@nestjs/common";
    import { generatePrometheusDecorator, prometheusObserveWrapper } from '@mists/nestjs-metrics/dist/prometheus';
    
    const Observe = generatePrometheusDecorator(
      Metrics.Histogram,
      prometheusObserveWrapper
    );
    
    @Controller('/test')
    class CustomController {
      @Get()
      @Observe(1)
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const prometheusTimingWrapper

Const statsdGaugeDeltaWrapper

  • StatsD GaugeDelta Wrapper

    import { Controller, Get } from "@nestjs/common";
    import { generateStatsDDecorator, statsdGaugeDeltaWrapper } from "@mists/nestjs-metrics/dist/statsd";
    
    const GaugeDelta = generateStatsDDecorator(statsdGaugeDeltaWrapper);
    
    @Controller('/test')
    class CustomController {
      @Get()
      @GaugeDelta(-1)
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const statsdGaugeWrapper

  • StatsD Gauge Wrapper

    import { Controller, Get } from "@nestjs/common";
    import { generateStatsDDecorator, statsdGaugeWrapper } from "@mists/nestjs-metrics/dist/statsd";
    
    const GaugeSet = generateStatsDDecorator(statsdGaugeWrapper);
    
    @Controller('/test')
    class CustomController {
      @Get()
      @GaugeSet(1)
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const statsdHistogramWrapper

  • StatsD Histogram Wrapper

    import { Controller, Get } from "@nestjs/common";
    import { generateStatsDDecorator, statsdHistogramWrapper } from "@mists/nestjs-metrics/dist/statsd";
    
    const Histogram = generateStatsDDecorator(statsdHistogramWrapper);
    
    @Controller('/test')
    class CustomController {
      @Get()
      @Histogram(1)
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const statsdIncrementWrapper

  • Increment Wrapper

    import { Controller, Get } from "@nestjs/common";
    import { generateStatsDDecorator, statsdIncrementWrapper } from "@mists/nestjs-metrics/dist/statsd";
    
    const Increment = generateStatsDDecorator(statsdIncrementWrapper);
    
    @Controller('/test')
    class CustomController {
      @Get()
      @Increment()
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Const statsdTimingWrapper

  • StatsD Timing Wrapper

    import { Controller, Get } from "@nestjs/common";
    import { generateStatsDDecorator, statsdTimingWrapper } from "@mists/nestjs-metrics/dist/statsd";
    
    const Timing = generateStatsDDecorator(statsdTimingWrapper);
    
    @Controller('/test')
    class CustomController {
      @Get()
      @Timing()
      controllerAction() {}
    }

    Parameters

    Returns GenericMethod

Object literals

Const defaultPrometheusOptions

defaultPrometheusOptions: object

route

route: string = "/metrics"

defaultMetrics

defaultMetrics: object

config

config: {}

Type declaration

enabled

enabled: true = true

Legend

  • Property
  • Method
  • Constructor
  • Method
  • Inherited method
  • Protected property
  • Static method

Generated using TypeDoc