opossum-prometheus
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