展开菜单
首页 精品内容 本月促销 装机必备 Windows macOS软件 IOS软件 Android AI PDF教程 专题
全部分类

当前位置:

首页 > 编程开发 > 如何通过日志监控Ubuntu上的Node.js

如何通过日志监控Ubuntu上的Node.js

在Ubuntu上监控Node.js应用日志,可从本地实时查看入手,使用tail、grep等命令。生产环境推荐使用PM2进程管理器统一收集与轮转日志。采用Winston等库实现结构化日志输出,并可集成至系统syslog。对于多服务器场景,可搭建ELK等集中式日志平台进行统一管理。实践中需统一格式、设置轮转策略并注意安全合规。

在Ubuntu上部署Node.js应用,日志监控是运维工作中既基础又关键的一环。无论是开发调试还是生产运维,一套清晰的日志管理策略都能让你在问题发生时快速定位,而不是在海量的文本里“大海捞针”。今天,我们就来系统地梳理一下,从本地查看、进程管理到集中化平台,如何高效地监控你的Node.js日志。

如何通过日志监控Ubuntu上的Node.js

一 本地实时查看与过滤

当问题刚出现时,最直接的方式就是登录服务器,实时查看日志流。这里有几个经典命令组合,堪称运维人员的“瑞士军刀”。

使用 tail -f 可以实时跟踪日志文件的末尾新增内容,比如 tail -f /var/log/myapp.log。如果想在滚屏的信息中快速捕捉错误,可以配合 grep 进行关键字过滤:tail -f /var/log/myapp.log | grep 'ERROR'。如果不需要实时流,只想定期刷新查看最后几行,watch 命令会很方便:watch -n 2 "tail -n 20 /var/log/myapp.log"

面对多个需要同时关注的日志文件时,multitail 工具就派上用场了。它不仅能分屏显示多个日志,还能高亮关键字,让重要信息一目了然。安装命令是 sudo apt-get install multitail,使用起来也很简单:multitail /var/log/myapp.log

对于开发环境,频繁重启应用查看日志很麻烦。这时,nodemon 这类工具就非常合适。它监听文件变更并自动重启应用,同时将控制台输出(包括日志)直接显示在终端,非常适合开发期的调试:nodemon app.js

二 使用进程管理器 PM2 统一收集与轮转

当应用正式上线,一个可靠的进程管理器就不可或缺了。PM2 不仅能守护进程,其内置的日志管理功能也让日常运维轻松不少。

首先全局安装并启动你的应用:sudo npm install -g pm2,然后 pm2 start app.js --name my-api。之后,查看日志就变得非常统一。

运行 pm2 logs 可以查看所有被PM2管理的应用日志;pm2 logs my-api 则只查看指定应用。如果需要原始的、未经PM2格式化的输出,可以加上 --raw 参数。当然,过滤功能也少不了:pm2 logs | grep error

PM2 会自动将应用的标准输出和错误输出记录到 ~/.pm2/logs/ 目录下。随着时间推移,单个日志文件可能会变得巨大。这时,可以运行 pm2 logrotate 来配置日志轮转策略,支持按文件大小或时间进行切分,有效避免磁盘空间被单个日志文件占满。

三 结构化日志与系统日志集成

纯文本日志虽然直观,但在进行自动化分析和检索时就不够友好了。将日志结构化,并与系统日志服务集成,是走向专业运维的重要一步。

在代码层面,推荐使用 Winston 或 Bunyan 这类日志库。它们能输出结构化的JSON格式日志,并支持分级(如info、error、debug),极大方便了后续的日志聚合与检索。以下是一个Winston的配置示例:

首先安装:npm install winston

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

logger.info('Server started', { port: 3000 });
logger.error('DB connection failed', { err: err.message });

更进一步,可以将应用日志写入系统的 syslog 服务(如 rsyslog 或 syslog-ng)。这样,你的Node.js应用日志就能和系统其他服务的日志统一管理,甚至方便地转发到远程服务器。这需要用到 syslog 传输插件:

安装:npm install winston syslog-transport

const winston = require('winston');
const SyslogTransport = require('syslog-transport');
const logger = winston.createLogger({
  transports: [
    new SyslogTransport({
      host: 'localhost',
      app_name: 'my-node-app',
      facility: 'local0'
    })
  ]
});
logger.info('Hello, syslog');

日志写入系统后,就可以使用 systemd 的 journalctl 工具来查看了。例如,实时跟踪你的服务日志:journalctl -u my-node-app -f

四 集中式日志平台搭建与远程转发

服务器数量增多,登录每一台机器看日志就变得不现实。搭建一个集中式日志平台,将所有日志汇聚一处进行搜索、分析和可视化,是中型以上项目的标配。

市面上有几种主流方案,可以根据团队技术栈和需求来选择:

方案 组件与部署 关键配置 适用场景
ELK Elasticsearch + Logstash + Kibana Logstash 从文件采集并写入 ES;Kibana 建立索引模式与可视化 复杂查询、全文检索、可视化分析
EFK Elasticsearch + Fluentd + Kibana Fluentd 以 tail 采集并输出到 ES;Kibana 展示 轻量采集、云原生友好
Syslog 远程 rsyslog/syslog-ng → 远程日志服务器 将应用或系统日志通过 UDP/TCP 发送到集中日志主机 合规审计、统一落盘与转发

这里提供各方案的快速上手配置:

ELK方案:在 Logstash 的配置目录(如 /etc/logstash/conf.d/nodejs.conf)中添加如下配置,指定日志文件路径和Elasticsearch输出。

input {
  file {
    path => "/var/log/myapp/*.log"
    start_position => "beginning"
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "nodejs-logs-%{+YYYY.MM.dd}"
  }
}

启动后,在 Kibana(通常访问 http://:5601)中配置索引模式即可查看日志。

EFK方案:使用 Fluentd 作为采集端,配置类似。在 /etc/td-agent/td-agent.conf 中配置 source 和 match。


  @type tail
  path /var/log/myapp/*.log
  pos_file /var/log/td-agent/nodejs.log.pos
  tag nodejs.log
  
    @type none
  


  @type elasticsearch
  host localhost
  port 9200
  logstash_format true
  flush_interval 10s

Syslog 远程转发:这是最轻量的集中化方式。在客户端的 /etc/rsyslog.conf 末尾添加一行 *.* @:514(UDP协议),即可将所有日志转发到远程服务器。使用 syslog-ng 也可实现类似功能,定义好 destination 和 log 路径即可。记得修改配置后重启服务。

五 生产落地建议

掌握了工具,最后聊聊在生产环境中落地日志监控时的一些最佳实践和思考。

统一日志格式:这是后续所有自动化处理的基础。强烈建议在应用层就使用 Winston/Bunyan 输出结构化的 JSON 日志,确保包含时间戳(timestamp)、日志级别(level)、服务名(service)、请求追踪ID(trace_id)等关键字段。格式统一了,无论是检索、聚合还是关联分析,都会事半功倍。

日志轮转与保留:日志不能无限增长。除了使用 PM2 自带的 logrotate,也可以利用 Linux 系统自带的 logrotate 工具,按日或按文件大小进行切割,并设置合理的保留天数(如30天),这是防止磁盘被日志写满的最基本操作。

安全与合规:集中式日志平台往往存储了大量敏感信息。务必启用认证和授权机制。如果使用远程 Syslog,出于可靠性和安全性考虑,建议优先选择 TCP 或 TLS 加密传输,并在服务器端配置防火墙规则,限制可连接的客户端IP网段。

告警与可视化:日志不能只存不看。可以在 Kibana 中基于特定错误关键字设置告警规则。如果需要对应用性能指标(如请求延迟、错误率、内存占用)进行监控,可以结合 Prometheus(收集指标)和 Grafana(可视化)来搭建更完整的可观测性体系。

故障排查流程:当线上出现问题,一个高效的排查动线很重要。通常可以遵循这样的顺序:首先通过 tail -fpm2 logs 快速查看实时错误,定位问题应用;接着检查 journalctl 查看系统级关联日志和资源状态(如 dmesg);最后,登录到 ELK/EFK 等集中日志平台,根据时间线和 trace_id 回溯完整的请求链路和上下文信息,进行根因分析。

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
编程开发
相关文章 更多
精品专题 更多
本月促销

正软商城本月促销专区,汇集办公、设计、安全、影音、系统工具及AI软件等正版软件优惠活动,提供限时折扣、特价授权和优惠购买信息,活动库存及价格以页面实时展示为准。

装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
灵活计算器
灵活计算器

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

图几
图几

图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

Menuist
Menuist

Menuist 是一款面向 macOS 的 Finder 右键菜单增强工具,主要用来补充新建文件、快捷导航等常用操作,让日常文件管理和访问路径时更高效、更顺手。

Mole
Mole

Mole 是一款专为 Mac 设计的深度清理优化工具,涵盖缓存清理、应用管理及实时状态监控等功能。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

WINDOWS 更多
Windows 10
Windows 10

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

傲梅轻松备份
傲梅轻松备份

傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Wise Folder Hider Pro
Wise Folder Hider Pro

Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

PinStack
PinStack

PinStack是一款轻量级的Windows平台剪贴板管理工具,优化您的剪贴板使用体验。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

Seer
Seer

Seer是一款在Win平台下的空格键功能增强效率工具,只需轻敲空格键,就能预览几乎任何格式的文件。它更适合把零散的小功能集中起来使用,处理高频琐碎任务时会更省事。