温馨提示×

Ubuntu Node.js日志中如何分析请求响应时间

小樊
34
2025-03-03 21:36:36
栏目: 编程语言
前端开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Ubuntu系统中使用Node.js记录和分析HTTP请求的响应时间,可以通过以下几种方法实现:

使用Koa中间件记录响应时间

在Koa应用中,可以利用中间件机制来记录服务器响应时间。以下是一个简单的示例代码,展示了如何在Koa应用中计算并打印请求的响应时间:

const Koa = require('koa');
const app = new Koa();

// 记录服务器响应时间的中间件
app.use(async (ctx, next) => {
  let stime = new Date().getTime(); // 记录当前时间戳
  await next(); // 事件控制权中转
  let etime = new Date().getTime(); // 所有中间件执行完成后记录当前时间
  console.log(`请求地址: ${ctx.path}, 响应时间: ${etime - stime}ms`);
});

app.use(async (ctx, next) => {
  console.log('中间件 doSomething');
  await next();
  console.log('中间件执行 over');
});

app.listen(3000, () => {
  console.log('server is running at http://localhost:3000');
});

使用日志库记录请求响应时间

可以使用诸如winstonpino等日志库来记录请求响应时间。这些库提供了丰富的日志管理功能,包括日志级别、格式化和存储等。

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'combined.log' }),
  ],
});

app.use((ctx, next) => {
  const start = Date.now();
  return next().then(() => {
    const ms = Date.now() - start;
    logger.info(`${ctx.method} ${ctx.url} - ${ms}ms`);
  });
});

使用Prometheus监控和记录请求响应时间

Prometheus是一个开源的监控告警系统,可以通过其客户端库prom-client来记录和监控Node.js应用的请求响应时间。

const promClient = require('prom-client');
const httpRequestDurationMicroseconds = new promClient.Histogram({
  name: 'http_request_duration_ms',
  help: 'Duration of HTTP requests in ms',
  labelNames: ['method', 'route', 'code'],
  buckets: [0.10, 5, 15, 50, 100, 200, 300, 400, 500],
});

app.use((ctx, next) => {
  const start = Date.now();
  const route = ctx.request.method + ' ' + ctx.url;
  return next().then(() => {
    const ms = Date.now() - start;
    httpRequestDurationMicroseconds
      .labels(route, ctx.status)
      .observe(ms);
  });
});

日志分析

对于已经记录的日志,可以使用日志分析工具如ELK(Elasticsearch, Logstash, Kibana)堆栈来进行分析。这些工具可以帮助你可视化日志数据,并进行复杂的查询和分析。

通过上述方法,你可以在Ubuntu系统上使用Node.js记录和分析HTTP请求的响应时间,从而优化应用性能并快速定位问题。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:Ubuntu Node.js日志中的请求处理时间如何分析

0