fix(infra): resolve NestJS dist build and Prometheus target issues
NestJS: disable incremental in 6 services tsconfig.json to fix dist not emitted when nest-cli deleteOutDir conflicts with tsc tsbuildinfo. classes/iam: import HealthModule in AppModule to fix /healthz 404. classes: rewrite HealthController to Drizzle getDb from TypeORM DI. teacher-bff: add /metrics endpoint for Prometheus scraping. infra: add node/mysql/redis exporters to observability profile. mysql-exporter v0.15.1 uses command-line flags not DATA_SOURCE_NAME. prometheus: enable web.enable-lifecycle for hot reload.
This commit is contained in:
26
services/teacher-bff/src/shared/observability/metrics.ts
Normal file
26
services/teacher-bff/src/shared/observability/metrics.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import promClient from "prom-client";
|
||||
|
||||
const registry = new promClient.Registry();
|
||||
registry.setDefaultLabels({ service: "teacher-bff" });
|
||||
|
||||
registry.registerMetric(
|
||||
new promClient.Counter({
|
||||
name: "teacher_bff_requests_total",
|
||||
help: "Total number of teacher-bff requests",
|
||||
labelNames: ["method", "endpoint", "status"],
|
||||
}),
|
||||
);
|
||||
|
||||
registry.registerMetric(
|
||||
new promClient.Histogram({
|
||||
name: "teacher_bff_request_duration_seconds",
|
||||
help: "Teacher-bff request duration in seconds",
|
||||
labelNames: ["method", "endpoint"],
|
||||
buckets: [0.01, 0.05, 0.1, 0.3, 0.5, 1, 3, 5],
|
||||
}),
|
||||
);
|
||||
|
||||
// 自动收集 Node.js 进程级指标(CPU/内存/事件循环/GC等)
|
||||
promClient.collectDefaultMetrics({ register: registry });
|
||||
|
||||
export { registry as metricsRegistry };
|
||||
Reference in New Issue
Block a user