- monorepo: pnpm workspace + go.work + pyproject.toml + commitlint/husky - infra: docker-compose (minimal + full profiles) + init-sql + prometheus - arch-scan: multi-language scanner skeleton (TS/Go/Python/Proto) - shared-proto: buf v2 + classes.proto (ClassService CRUD contract) - api-gateway: Go/Gin + JWT HS256 auth + reverse proxy + request ID - classes: NestJS golden template (error system + observability + middleware + CRUD + tests) - teacher-portal: Next.js + paper-feel UI design system - CI/CD: 4 workflows (go/ts/py/proto) - docs: migration guide + project_rules + coding-standards + git-workflow + ui-design-system + 004 + 9 module READMEs + known-issues + spec/plan migration + roadmap
25 lines
704 B
TypeScript
25 lines
704 B
TypeScript
import promClient from 'prom-client';
|
||
|
||
const registry = new promClient.Registry();
|
||
// 修复:在本地 registry 上设置默认标签(原代码误用全局 register)
|
||
registry.setDefaultLabels({ service: 'classes' });
|
||
|
||
registry.registerMetric(
|
||
new promClient.Counter({
|
||
name: 'classes_requests_total',
|
||
help: 'Total number of class requests',
|
||
labelNames: ['method', 'endpoint', 'status'],
|
||
}),
|
||
);
|
||
|
||
registry.registerMetric(
|
||
new promClient.Histogram({
|
||
name: 'classes_request_duration_seconds',
|
||
help: 'Class request duration in seconds',
|
||
labelNames: ['method', 'endpoint'],
|
||
buckets: [0.01, 0.05, 0.1, 0.3, 0.5, 1, 3, 5],
|
||
}),
|
||
);
|
||
|
||
export { registry as metricsRegistry };
|