# egg-prometheus
**Repository Path**: mirrors_eggjs/egg-prometheus
## Basic Information
- **Project Name**: egg-prometheus
- **Description**: Prometheus plugin for Egg.js
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-11-23
- **Last Updated**: 2026-03-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# egg-prometheus
[![NPM version][npm-image]][npm-url]
[](https://github.com/eggjs/egg-prometheus/actions/workflows/nodejs.yml)
[![Test coverage][codecov-image]][codecov-url]
[![npm download][download-image]][download-url]
[npm-image]: https://img.shields.io/npm/v/egg-prometheus.svg?style=flat-square
[npm-url]: https://npmjs.org/package/egg-prometheus
[codecov-image]: https://codecov.io/gh/eggjs/egg-prometheus/branch/master/graph/badge.svg
[codecov-url]: https://codecov.io/gh/eggjs/egg-prometheus
[download-image]: https://img.shields.io/npm/dm/egg-prometheus.svg?style=flat-square
[download-url]: https://npmjs.org/package/egg-prometheus
为 egg 提供 [Prometheus](https://prometheus.io) 功能支持
## 安装
```bash
npm i egg-prometheus --save
```
## 用法
### 开启插件
通过 `${app_root}/config/plugin.js` 配置启动 Prometheus 插件:
```js
exports.prometheus = {
enable: true,
package: "egg-prometheus",
};
```
### 配置
```js
exports.prometheus = {
timeout: 3000,
scrapePort: 3000,
scrapePath: '/metrics',
defaultHttpMetricsFilter: ({ method, status, routerName, path }) => true,
defaultLabels: { ... },
};
```
- `timeout`: metrics 数据的拉取超时时间
- `scrapePort`: 监听的用于采集 metrics 的端口
- `scrapePath`: 监听的采集 metrics 的服务路径
- `defaultLabels`: 默认的 metrics 标签,全局生效
- `defaultHttpMetricsFilter`: 默认的 http metrics 的过滤函数,自定义过滤逻辑,返回 true 就是不过滤,返回 false 就是过滤
## 内置的 Metrics
- `http_response_time_ms summary`: http 请求耗时
- `http_request_rate counter`: http 请求数
当 egg-rpc-base 插件开启时,还会提供下面 metrics
- `rpc_consumer_response_time_ms summary`: rpc 客户端请求耗时
- `rpc_consumer_request_rate counter`: rpc 客户端请求数
- `rpc_consumer_fail_response_time_ms summary`: rpc 客户端失败的请求耗时
- `rpc_consumer_request_fail_rate counter`: rpc 客户端失败的请求数
- `rpc_consumer_request_size_bytes summary`: rpc 请求大小统计
- `rpc_consumer_response_size_bytes summary`: rpc 响应大小统计
- `rpc_provider_response_time_ms summary`: rpc 服务端处理时间
- `rpc_provider_request_rate counter`: rpc 服务端收到请求数
- `rpc_provider_fail_response_time_ms summary`: rpc 服务端失败的请求处理时间
- `rpc_provider_request_fail_rate counter`: rpc 服务端失败的请求数
## 自定义 Metrics
可以通过下面 API 自定义业务 metrics
```js
const counter = new app.prometheus.Counter({
name: "xxx_total",
help: "custom counter",
labelNames: ["xxx"],
});
const gauge = new app.prometheus.Gauge({
name: "xxx_gauge",
help: "custom gauge",
labelNames: ["xxx"],
});
const histogram = new app.prometheus.Histogram({
name: "xxx_histogram",
help: "custom histogram",
labelNames: ["xxx"],
});
const summary = new app.prometheus.Summary({
name: "xxx_summary",
help: "custom summary",
labelNames: ["xxx"],
});
```
## 如何贡献
请告知我们可以为你做些什么,不过在此之前,请检查一下是否有[已经存在的 Bug 或者意见](https://github.com/eggjs/egg/issues)。
如果你是一个代码贡献者,请参考[代码贡献规范](CONTRIBUTING.md)。
## License
[MIT](LICENSE)
## Contributors
|[
gxcsoccer](https://github.com/gxcsoccer)
|[
xujihui1985](https://github.com/xujihui1985)
|[
popomore](https://github.com/popomore)
|[
nightink](https://github.com/nightink)
|[
sjfkai](https://github.com/sjfkai)
|[
jgchenu](https://github.com/jgchenu)
|
| :---: | :---: | :---: | :---: | :---: | :---: |
This project follows the git-contributor [spec](https://github.com/xudafeng/git-contributor), auto updated at `Fri Dec 15 2023 17:58:23 GMT+0800`.