Skip to content
Snippets Groups Projects
Select Git revision
  • 9a7091e89dc23f27e846b6473938a27b74145a51
  • main default protected
2 results

index.ts

Blame
  • index.ts 3.65 KiB
    import * as express from 'express'
    
    export interface Options {
      ignore: string[]
      disableRouteCounter: boolean
      disableErrorCounter: boolean
      disableDurationCounter: boolean
      disableDefaultMetrics: boolean
    }
    
    export class Metrics {
      public readonly _ignore: string[]
      public readonly _disableRouteCounter: boolean
      public readonly _disableErrorCounter: boolean
      public readonly _disableDurationCounter: boolean
      public readonly _disableDefaultMetrics: boolean
    
      public readonly _client: any
    
      public readonly _httpRequestDurationMicroseconds: any
      public readonly _numOfRequests: any
      public readonly _numOfErrors: any
    
      constructor (options: Partial<Options> = {}) {
        this._client = require('prom-client')
    
        if (typeof options.ignore !== 'undefined') {
          this._ignore = options.ignore
          this._ignore.push('/_metrics')
          this._ignore.push('/favicon.ico')
        } else {
          this._ignore = ['/_metrics', '/favicon.ico']
        }
        if (typeof options.disableRouteCounter !== 'undefined') {
          this._disableRouteCounter = options.disableRouteCounter
        } else {
          this._disableRouteCounter = false
        }
        if (typeof options.disableErrorCounter !== 'undefined') {
          this._disableErrorCounter = options.disableErrorCounter
        } else {
          this._disableErrorCounter = false
        }
        if (typeof options.disableDurationCounter !== 'undefined') {
          this._disableDurationCounter = options.disableDurationCounter
        } else {
          this._disableDurationCounter = false
        }
        if (typeof options.disableDefaultMetrics !== 'undefined') {
          this._disableDefaultMetrics = options.disableDefaultMetrics
        } else {
          this._disableDefaultMetrics = false
        }
        if (!this._disableDefaultMetrics) {
          this._client._collectDefaultMetrics = this._client.collectDefaultMetrics
        }
        if (!this._disableErrorCounter) {
          this._numOfErrors = new this._client.Counter({
            name: 'numOfErrors',
            help: 'Number of errors',
            labelNames: ['error']
          })
        }
        if (!this._disableRouteCounter) {
          this._numOfRequests = new this._client.Counter({
            name: 'numOfRequests',
            help: 'Number of requests made to a route',
            labelNames: ['route']
          })
        }