@iamelevich/opossum-prometheus
TypeScript icon, indicating that this package has built-in type declarations

1.3.1 • Public • Published

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 circuit*breaker_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

Package Sidebar

Install

npm i @iamelevich/opossum-prometheus

Weekly Downloads

246

Version

1.3.1

License

MIT

Unpacked Size

26.3 kB

Total Files

11

Last publish

Collaborators

  • iamelevich