溫馨提示×

Ubuntu Node.js日志中如何分析請求響應時間

小樊
55
2025-03-03 21:36:36
欄目: 編程語言

在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');
});

使用日志庫記錄請求響應時間

可以使用諸如winston、pino等日志庫來記錄請求響應時間。這些庫提供了豐富的日志管理功能,包括日志級別、格式化和存儲等。

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請求的響應時間,從而優化應用性能并快速定位問題。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女