← 中文资源

简体中文版本

用默认注册表导出 Prometheus 指标

在默认注册表注册计数器与直方图,对请求路径埋点,并以 Prometheus 抓取的文本格式暴露 /metrics。

阅读英文原文

注册、埋点、暴露

在默认注册表注册计数器与直方图,对请求路径埋点,以文本格式暴露 /metrics。Prometheus 按其间隔抓取该端点。

const requests = new Counter({ name: 'http_requests_total', help: 'Total requests', labelNames: ['method', 'route'] });
const latency = new Histogram({ name: 'http_request_duration_seconds', help: 'Latency', labelNames: ['method', 'route'], buckets: [0.01, 0.1, 1] });

标签保持低基数

用模板路由如 /users/:id 作标签,而非原始路径。每请求唯一标签会使序列数爆炸并耗尽 Prometheus 内存。

app.get('/metrics', async (req, res) => res.set('Content-Type', register.contentType).end(await register.metrics()));

预期结果

GET /metrics 返回含计数器与直方图序列的文本格式,仪表盘显示请求速率与延迟分位,标签基数有界。按固定间隔抓取并据速率与分位告警。默认注册表为进程全局,长跑进程累积的序列需重启重置;直方图桶在注册时固定,更改需重新部署。