首页主机资讯如何在Ubuntu上监控Node.js日志流量

如何在Ubuntu上监控Node.js日志流量

时间2025-12-10 14:37:04发布访客分类主机资讯浏览1348
导读:在 Ubuntu 上监控 Node.js 日志流量 一 目标与总体思路 明确“日志流量”的度量口径:常见为请求量(QPS)、响应时间分布、错误率、状态码分布、来源 IP/接口路径等。 日志采集与结构化:让 Node.js 输出结构化日志(...

在 Ubuntu 上监控 Node.js 日志流量

一 目标与总体思路

  • 明确“日志流量”的度量口径:常见为请求量(QPS)响应时间分布错误率状态码分布来源 IP/接口路径等。
  • 日志采集与结构化:让 Node.js 输出结构化日志(JSON),便于后续统计与可视化。
  • 实时查看与告警:本地用命令行工具快速排查,集中式方案做长期存储、聚合、仪表盘与阈值告警。

二 本地实时查看与快速排查

  • 直接跟踪日志文件:
    • 实时查看:tail -f /var/log/myapp.log
    • 多文件与高亮:sudo apt-get install multitail;multitail app.log
    • 定时刷新:watch -n 1 ‘cat app.log
  • 使用进程管理器的日志功能(如用 PM2 启动):
    • 实时日志:pm2 logs
    • 指定应用:pm2 logs < app_name>
    • JSON 格式:pm2 logs --json
  • 若应用由 systemd 托管,可用 journalctl 查看服务日志:journalctl -u your-service.service

三 结构化日志与采集配置

  • 在 Node.js 中输出结构化日志(示例用 Winston,也可选 pino/morgan):
    • 安装:npm install winston
    • 配置要点:level 设为 info,format 用 winston.format.json(),按级别拆分文件(如 error/combined)。
  • 将日志送入集中系统(二选一或并用):
    • 直连 Logstash/TCP:使用 winston-logstash 将日志以 JSON Lines 发到 Logstash TCP 5000 端口,再由 Logstash 写入 Elasticsearch
    • 文件采集:Logstash/Fluentd 以 tail 方式读取日志文件,解析后写入 Elasticsearch,在 Kibana 做可视化与告警。

四 集中式日志平台与关键指标

  • 方案选型与部署要点:
    • ELK Stack(Elasticsearch + Logstash + Kibana):Logstash 负责采集与解析(如 grok 解析时间戳/级别/消息),ES 存储,Kibana 建立索引模式与仪表盘。
    • Fluentd:轻量采集,支持直接写入 Elasticsearch 或转发至 Loki/Graylog。
    • 远程 Syslog:通过 rsyslog/syslog-ng 将日志发往远程日志服务器(UDP/TCP 514),便于统一汇聚与审计。
  • 在 Kibana/Grafana 中关注的典型面板与指标:
    • QPS/每分钟请求数响应时间 P50/P95/P99HTTP 状态码分布错误率Top URL/来源 IP每分钟错误数日志级别分布

五 命令行流量分析速查表

  • 统计每分钟请求数(假设日志含 ISO8601 时间戳与请求行):
    • grep -oP ‘\d{ 4} -\d{ 2} -\d{ 2} T\d{ 2} :\d{ 2} :\d{ 2} ’ app.log | sort | uniq -c
  • 统计响应时间 P95(假设字段为 responseTimeMs 的 JSON 日志):
    • awk -F’“responseTimeMs”:’ ‘{ print $2} ’ app.log | cut -d’,’ -f1 | sort -n | awk ‘{ a[NR]=$1} END{ print “P95:”,a[int(NR*0.95)]} ’
  • 统计 5xx 错误数:
    • grep -c ‘“statusCode”:5[0-9]{ 2} ’ app.log
  • 统计 Top 10 URL(假设字段为 url):
    • awk -F’“url”:“’ ‘{ print $2} ’ app.log | cut -d’”’ -f1 | sort | uniq -c | sort -nr | head
  • 按分钟统计各状态码数量(假设字段为 timestampstatusCode):
    • awk -F’“timestamp”:“’ '{ t=$2; gsub(/T.*/,”“,t); a[t”,“$0]++} END{ for(i in a){ split(i,b,”,"); print b[1],b[2]} } ’ app.log | sort | uniq -c

以上路径可覆盖从“本地快速排查”到“集中化长期观测”的完整链路:先在 Node.js 侧输出结构化日志,再用 tail/multitail/PM2 实时查看,随后通过 Logstash/Fluentd 汇聚到 Elasticsearch,最终在 Kibana 配置指标面板与阈值告警,实现“日志即流量”的可观测性。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在Ubuntu上监控Node.js日志流量
本文地址: https://pptw.com/jishu/768295.html
Node.js日志在Ubuntu中的合规性要求 Node.js日志分析工具有哪些Ubuntu推荐

游客 回复需填写必要信息