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
- Host: GitHub
- URL: https://github.com/solvro/lib-backend-solvronis-metrics
- Owner: Solvro
- License: mpl-2.0
- Created: 2025-06-07T20:44:32.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-07T21:43:38.000Z (about 1 year ago)
- Last Synced: 2025-07-09T15:23:06.736Z (11 months ago)
- Topics: adonis, metrics, prometheus, request-timings, solvro, solvronis
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/@solvro/solvronis-metrics
- Size: 94.7 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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.