Skip to content

Commit f4aca04

Browse files
committed
feat: willsoto/nestjs-prometheus by prom-client, use originalUrl for logs
1 parent 1ef6e34 commit f4aca04

File tree

7 files changed

+56
-32
lines changed

7 files changed

+56
-32
lines changed

.github/workflows/docker-publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,4 @@ jobs:
3535
uses: docker/build-push-action@v3
3636
with:
3737
push: true
38-
tags: mtsrus/image-optimize:latest, mtsrus/image-optimize:1, mtsrus/image-optimize:1.4, mtsrus/image-optimize:1.4.0
38+
tags: mtsrus/image-optimize:latest, mtsrus/image-optimize:1, mtsrus/image-optimize:1.4, mtsrus/image-optimize:1.4.1

package-lock.json

Lines changed: 7 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "image-optimize",
3-
"version": "1.4.0",
3+
"version": "1.4.1",
44
"description": "",
55
"author": "MobileTeleSystems",
66
"homepage": "https://github.com/MobileTeleSystems/image-optimize",
@@ -39,8 +39,7 @@
3939
"@nestjs/common": "^9.2.0",
4040
"@nestjs/core": "^9.2.0",
4141
"@nestjs/platform-express": "^9.2.0",
42-
"@willsoto/nestjs-prometheus": "^4.7.0",
43-
"prom-client": "^14.1.0",
42+
"prom-client": "^14.2.0",
4443
"reflect-metadata": "^0.1.13",
4544
"rimraf": "^3.0.2",
4645
"rxjs": "^7.5.7",

src/app.module.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1+
import { MetricsController } from "./controllers/metrics/metrics.controller";
12
import { Module } from "@nestjs/common";
23
import { OptimizeController } from "./controllers/optimize-controller/optimize.controller";
34
import { OptimizeService } from "./services/optimize.service";
45
import { AllowService } from "./services/allow.service";
5-
import { PrometheusModule } from "@willsoto/nestjs-prometheus";
66
import { NestModule, MiddlewareConsumer } from "@nestjs/common";
77
import { RequestLoggerMiddleware } from "./middleware/RequestLoggerMiddleware";
88
import { ImgLoaderService } from "./services/img-loader.service";
99

1010
@Module({
11-
imports: [PrometheusModule.register()],
12-
controllers: [OptimizeController],
11+
imports: [],
12+
controllers: [OptimizeController, MetricsController],
1313
providers: [OptimizeService, AllowService, ImgLoaderService],
1414
})
1515
export class AppModule implements NestModule {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { Test, TestingModule } from "@nestjs/testing";
2+
import { PrometheusService } from "../../services/prometheus.service";
3+
import { MetricsController } from "./metrics.controller";
4+
5+
describe("MetricsController", () => {
6+
let appController: MetricsController;
7+
8+
beforeEach(async () => {
9+
const app: TestingModule = await Test.createTestingModule({
10+
controllers: [MetricsController],
11+
providers: [PrometheusService],
12+
}).compile();
13+
14+
appController = app.get<MetricsController>(MetricsController);
15+
});
16+
17+
describe("root", () => {
18+
it('should return "Hello World!"', () => {
19+
expect("Hello World!").toBe("Hello World!");
20+
});
21+
});
22+
});
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { Controller, Response, Get } from "@nestjs/common";
2+
import { Response as EResponse } from "express";
3+
import { collectDefaultMetrics, Registry } from "prom-client";
4+
5+
const register = new Registry();
6+
collectDefaultMetrics({
7+
register: register,
8+
eventLoopMonitoringPrecision: 100,
9+
});
10+
11+
@Controller("metrics")
12+
export class MetricsController {
13+
@Get()
14+
public async getMetrics(@Response() response: EResponse) {
15+
return response
16+
.set("Content-Type", register.contentType)
17+
.send(await register.metrics());
18+
}
19+
}

src/middleware/RequestLoggerMiddleware.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export class RequestLoggerMiddleware implements NestMiddleware {
88
private logger = new JsonLogger();
99

1010
use(request: Request, response: Response, next: NextFunction): void {
11-
const { ip, method, url, query } = request;
11+
const { ip, method, originalUrl, query } = request;
1212
const userAgent = request.get("user-agent") || "not set";
1313
const startTime = performance.now();
1414
const traceId = request.get("x-trace-id") || void 0;
@@ -27,7 +27,7 @@ export class RequestLoggerMiddleware implements NestMiddleware {
2727

2828
this.logger.extraLogs("Request", level, {
2929
method: method,
30-
url: url,
30+
url: originalUrl,
3131
query: query,
3232
statusCode: statusCode,
3333
contentLength: contentLength,

0 commit comments

Comments
 (0)