An open API service indexing awesome lists of open source software.

https://github.com/solvro/lib-backend-solvronis-metrics

Prometheus metrics exporter for adonis
https://github.com/solvro/lib-backend-solvronis-metrics

adonis metrics prometheus request-timings solvro solvronis

Last synced: 11 months ago
JSON representation

Prometheus metrics exporter for adonis

Awesome Lists containing this project

README

          

# solvronis metrics

A request metrics collector & exporter, compatible with prometheus, that we built because the prometheus exporter format is way too simple to justify using an existing library.

## Collected metrics

- response counts (grouped by route, method and response status)
- response timings (available as summaries on the route+method+status level, the route+method level, and the global level)

## How 2 install

To start recording metrics, add the middleware to the global middleware list in `start/kernel.ts`, **as the first item on the list**.
Request timings might not include the run time of middleware above the metrics middleware on the list.

```ts
server.use([
() => import("@solvro/solvronis-metrics"),
// any other middleware you may have goes here
]);
```

To export metrics, register the `emitMetrics` method on the middleware as a controller for the `GET /metrics` route.
If you want to add additional metrics, you can instead write a custom controller, that appends your own metrics to metrics generated by `emitMetrics`.
The `emitMetrics` function is also available as a named export for this purpose.

```ts
const MetricsMiddleware = () => import("@solvro/solvronis-metrics");

router.get("/metrics", [MetricsMiddleware, "emitMetrics"]);
```

## License

This library is licensed under MPL-2.0.

## Special thanx

Special thanks to the editors of the [English Wikipedia page on Percentiles](https://en.wikipedia.org/wiki/Percentile#The_nearest-rank_method),
from which I've taken the method of calculating arbitrary percentiles from a sorted list.