1.3.1 • Published 3 months ago

@iamelevich/opossum-prometheus v1.3.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

opossum-prometheus

Test codecov

This library add Prometheus metrics to the opossum circuit breaker. It based on opossum-prometheus with some improvements:

  • No direct dependencies, only peer dependencies on prom-client and opossum
  • Written in typescript
  • Custom labels
  • Blacklist events if you don't need them
  • Customization of metric names and default labels

ToC

Install

With NPM:

npm i -s @iamelevich/opossum-prometheus

With Yarn:

yarn add @iamelevich/opossum-prometheus

With PNPM:

pnpm add @iamelevich/opossum-prometheus

Back to top

Usage

import CircuitBreaker from 'opossum';
import promClient from 'prom-client';
import { CircuitBreakerMetrics } from '@iamelevich/opossum-prometheus';

const myCircuitBreaker = new CircuitBreaker(
    async () => /* Do something */,
    {
        name: 'my-circuit-breaker',
    }
);

const myCircuitBreakerMetrics = new CircuitBreakerMetrics({
    enabled: true,
    client: promClient,
    registry: promClient.register,
    circuitBreakers: [myCircuitBreaker],
});

await myCircuitBreaker.fire();

console.log(await myCircuitBreakerMetrics.metrics);

// # HELP circuit_breaker_counter Circuit breaker counter
// # TYPE circuit_breaker_counter counter
// circuit_breaker_counter{name="my-circuit-breaker",event="fire"} 1
// circuit_breaker_counter{name="my-circuit-breaker",event="success"} 1

// # HELP circuit_breaker_performance Circuit breaker performance summary
// # TYPE circuit_breaker_performance summary
// circuit_breaker_performance{quantile="0.01",name="my-circuit-breaker",event="success"} 0
// circuit_breaker_performance{quantile="0.05",name="my-circuit-breaker",event="success"} 0
// circuit_breaker_performance{quantile="0.5",name="my-circuit-breaker",event="success"} 0
// circuit_breaker_performance{quantile="0.9",name="my-circuit-breaker",event="success"} 0
// circuit_breaker_performance{quantile="0.95",name="my-circuit-breaker",event="success"} 0
// circuit_breaker_performance{quantile="0.99",name="my-circuit-breaker",event="success"} 0
// circuit_breaker_performance{quantile="0.999",name="my-circuit-breaker",event="success"} 0
// circuit_breaker_performance_sum{name="my-circuit-breaker",event="success"} 0
// circuit_breaker_performance_count{name="my-circuit-breaker",event="success"} 1

Back to top

Docs

Full documentation you can find in docs folder

Options: | Property | Type | Description | | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- | | circuitBreakers? | CircuitBreaker[] | (Optional) List of circuit breakers to collect metrics for | | client | typeof PromClient | Prometheus client | | customLabels? | Record<string, string> | (Optional) Custom labels | | enabled? | boolean | (Optional) If disabled - will not collect metrics | | eventsBlacklist? | string[] | (Optional) List of opossum circuit breaker events to ignore | | exposePerformanceMetrics? | boolean | (Optional) Expose performance metrics circuitbreaker_performance for events success and failure | | overrides? | CircuitBreakerMetricsOptionsOverrides | (Optional) Overrides for metrics. Let you change metric name and default labels | | prefix? | string | (Optional) Prefix for metrics. Will be added to the beginning of metric name if no override provided | | registry? | PromClient.Registry | (Optional)_ Prometheus registry |

Back to top

License

Licensed under MIT.

Back to top

1.3.1

3 months ago

1.3.0

10 months ago

1.2.0

1 year ago

1.1.0

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago