🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

nestjs-hot-shots

Package Overview
Dependencies
Maintainers
1
Versions
365
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nestjs-hot-shots

Hot-shots Module for Nest.js Framework

3.1.0
latest
Source
npm
Version published
Weekly downloads
4.7K
-27.65%
Maintainers
1
Weekly downloads
 
Created
Source

NestJS Hot-shots npm LICENSE Downloads Last Commit

Nest.JS logo

Hot-shots Module for Nest.js Framework. A Node.js client for Etsy's StatsD server, Datadog's DogStatsD server, and InfluxDB's Telegraf StatsD server.

Features

  • TypeScript types
  • Telegraf support
  • Events
  • Child clients
  • TCP/UDS Protocol support
  • Raw Stream Protocol support
  • Mock mode
  • Much more, including many bug fixes

For questions and support please use the Issues.

Installation

$ npm i nestjs-hot-shots hot-shots
$ yarn add nestjs-hot-shots hot-shots
$ pnpm add nestjs-hot-shots hot-shots

Usage

Once the installation process is complete, we can import the HotShotsModule into the root AppModule:

import { Module } from '@nestjs/common'
import { HotShotsModule } from 'nestjs-hot-shots';

@Module({
    imports: [
        HotShotsModule.forRoot({
            port: 8020,
            globalTags: { env: process.env.NODE_ENV }
        })
    ]
})
export class AppModule {
}

Then inject StatsD provider for use hot-shots:

import { Injectable } from '@nestjs/common';
import { StatsD } from 'hot-shots';

@Injectable()
export class AppMetrics {
    public constructor(private readonly metrics: StatsD) {
    }

    public metricStuff() {
        this.metrics.increment('somecounter');
    }
}

Metrics

You can use the MetricsService for metrics collection. It`s factory for creating metrics. It provides a set of methods to create different types of metrics, such as counters, gauges, and histograms.

import { Controller, Post } from '@nestjs/common';
import { MetricsService } from 'nestjs-hot-shots';
import { StatsD } from 'hot-shots';

@Controller
export class BooksController {
    private readonly booksAdded = this.metricsService.getCounter('books.added.count');

    public constructor(private readonly metricsService: MetricsService) {
    }

    @Post()
    public async addBook() {
        // some logic
        this.booksAdded.add();
    }
}
MethodDescription
getCounter(name: string)Returns a counter metric with the given name.
getGauge(name: string)Returns a gauge metric with the given name.
getHistogram(name: string)Returns a histogram metric with the given name.
getTimer(name: string)Returns a timer metric with the given name.
getUpDownCounter(name: string)Returns an up-down counter metric with the given name.

HTTP Metrics via Middleware

You can use the HttpMetricsMiddleware to collect HTTP metrics. It will automatically collect metrics for all incoming requests and outgoing responses.

import { Module } from '@nestjs/common';
import { HotShotsModule } from 'nestjs-hot-shots';
import { HttpMetricsMiddleware } from 'nestjs-hot-shots';

@Module({
    imports: [
        HotShotsModule.forRoot({
            ...
        })
    ]
})
export class AppModule {
    public configure(consumer: MiddlewareConsumer) {
        consumer
            .apply(HttpMetricsMiddleware)
            .forRoutes('*');
    }
}
MetricDescriptionType
http_server_request_countTotal number of requests received by the serverCounter
http_server_response_countTotal number of responses sent by the serverCounter
http_server_durationTotal time taken to process requestsHistogram
http_server_request_sizeSize of incoming bytes.Histogram
http_server_response_sizeSize of outgoing bytes.Histogram
http_server_response_success_countTotal number of all successful responses.Counter
http_server_response_error_countTotal number of server error responses.Counter
http_client_request_error_countTotal number of client error requests.Counter
http_server_abort_countTotal number of aborted requestsCounter

Inspired by nestjs-otel

See the hot-shots module for more details.

Stay in touch

License

MIT © Alexey Filippov

Keywords

nest

FAQs

Package last updated on 21 Apr 2025

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