Socket
Book a DemoInstallSign in
Socket

@betsys-nestjs/health-check

Package Overview
Dependencies
Maintainers
9
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@betsys-nestjs/health-check

Betsys NestJS module for health-check implementation

4.0.0
latest
npmnpm
Version published
Weekly downloads
0
Maintainers
9
Weekly downloads
 
Created
Source

Health Check Library

Library for implementation of standardized health endpoint in NestJS applications.

Dependencies

PackageVersion
@nestjs/common^10.0.0
@nestjs/core^10.0.0
@nestjs/microservices^10.0.0
@nestjs/swagger^7.0.0
@nestjs/terminus^10.0.0
reflect-metadata<1.0.0
rxjs^7.0.0

Usage

Import HealthCheckModule to your health module with using .forRoot function and register all your health indicators:

@Module({
    imports: [
        HealthCheckModule.forRoot({
            imports: [
                PostgresqlModule.forFeature(connectionPostgresFeatureConfig()),
                MongoModule.forFeature(connectionMongoFeatureConfig()),
                RedisModule.forFeature(connectionRedisFeatureConfig()),
                ElasticModule.forFeature(connectionElasticFeatureConfig()),
            ],
            indicators: [
                {
                    factory: (connection: PostgresConnection) => new PostgresqlHealthIndicator(connection, 'postgres'),
                    inject: [getPostgresConnectionToken()],
                },
                {
                    factory: (connection: MongoConnection) => new MongoHealthIndicator(connection, 'mongo'),
                    inject: [getMongoConnectionToken()],
                },
                {
                    factory: (connection: ElasticConnection) => new ElasticHealthIndicator(connection, 'elastic'),
                    inject: [getElasticConnectionToken()],
                },
                {
                    factory: (client: RedisClient) => new RedisHealthIndicator(client, 'redis'),
                    inject: [getRedisClientToken()],
                    probeType: ProbeTypes.Liveness,
                },
            ],
            kubernetesProbesStyle: true,
        }),
    ],
})
export class HealthModule {
}
  • probeType - type of health indicator probe. Default is Readiness.
  • kubernetesProbesStyle - if true, health check will be registered as Kubernetes probes endpoints and divided by their probeType (/health/readiness, /health/liveness, and /health/startup). If false, single health check endpoint will be registered (/health) containing all indicators of Readiness type.

Creating your own indicator

To create custom health indicator, you need to create a new class that extends from HealthIndicator and implement getHealth method.

import { Injectable } from '@nestjs/common';
import { HealthCheckError, HealthIndicator, HealthIndicatorResult } from '@betsys/nestjs-health-check';

@Injectable()
export class SimpleHealthIndicator extends HealthIndicator {
    constructor(
        private readonly someThirdPartyOperation: SomeThirdPartyOperation,
        private readonly key: string,
    ) {
        super();
    }

    async isHealthy(): Promise<HealthIndicatorResult> {
        let isHealthy = false;

        try {
            const result = await this.someThirdPartyOperation.execute();

            isHealthy = result.isValid();
        } catch (error) {
            const typesError = error as Error;
            const status = this.getStatus(this.key, false, { error: typesError.message || error });

            throw new HealthCheckError(typesError.message || 'Unknown error', status);
        }
        if (!isHealthy) {
            const status = this.getStatus(this.key, false);
            throw new HealthCheckError('Simple service check failed!', status);
        }

        return this.getStatus(this.key, true);
    }
}

FAQs

Package last updated on 09 Oct 2023

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

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.