Ubuntu系统如何监控Node.js日志与运行状态
时间:2026-08-21 | 作者:深海捕梦者 | 阅读:0在Ubuntu系统上监控Node.js应用日志,方法其实不少。从最基础的原生命令,到生产级的进程管理工具,再到集中式日志分析平台,各有各的适用场景。
今天就一口气捋清楚,帮你找到最适合自己项目的那一套。
1. 使用系统原生命令实时查看日志
Ubuntu自带的几个命令,就能快速盯住日志文件的实时更新。
tail -f:这是最常用的实时查看工具,直接显示日志文件末尾新增的内容。比如tail -f /var/log/nodejs/app.log,按Ctrl+C退出即可。less+ 跟踪模式:用less app.log打开日志文件,然后输入Shift+F进入跟踪模式,就能实时看到新增内容;退出跟踪按Ctrl+C,再按q退出 less。grep过滤:如果想只看特定关键词(比如错误信息),可以把tail和grep组合起来:tail -f app.log | grep "ERROR",这样屏幕上只会显示包含“ERROR”的行。
2. 利用PM2进程管理器监控
PM2是Node.js应用的生产级进程管理工具,日志管理功能也是一把好手。
- 安装与启动:全局安装PM2后,启动应用时可以指定日志文件路径:
npm install pm2 -g
pm2 start app.js --name "my-node-app" --log /var/log/nodejs/app.log
- 查看实时日志:直接用
pm2 logs查看所有应用的实时日志;想看特定应用就用pm2 logs my-node-app。加上--lines 100可以显示最近100行日志。 - 日志轮换:日志文件会越积越大,用
pm2 install pm2-logrotate安装日志轮换插件,自动切割并压缩旧日志,省心不少。
3. 采用Winston/Bunyan等日志库增强记录
Winston和Bunyan是Node.js生态中最流行的日志库,支持灵活的日志级别、多传输方式和结构化日志输出。
Winston配置示例
安装 winston 和 winston-daily-rotate-file 后,可以配置文件输出、控制台输出和错误日志分离:
const winston = require('winston');
const { DailyRotateFile } = require('winston-daily-rotate-file');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.Console({ format: winston.format.simple() }),
new DailyRotateFile({
filename: '/var/log/nodejs/app-%DATE%.log',
datePattern: 'YYYY-MM-DD',
maxSize: '20m',
maxFiles: '14d'
}),
new DailyRotateFile({
filename: '/var/log/nodejs/error-%DATE%.log',
datePattern: 'YYYY-MM-DD',
level: 'error',
maxSize: '20m',
maxFiles: '30d'
})
]
});
logger.info('Application started on port 3000');
logger.error('Database connection failed');
Bunyan特点
日志输出为JSON格式,便于后续解析和集成ELK等工具,特别适合大型应用。
4. 部署ELK Stack集中式日志管理
如果应用规模较大,需要集中管理所有节点的日志,ELK(Elasticsearch + Logstash + Kibana)是经典的开源方案。
组件作用
- Elasticsearch负责存储和索引日志
- Logstash负责收集和解析日志
- Kibana负责可视化展示
集成步骤
- 1. 安装Elasticsearch和Kibana:
sudo apt install elasticsearch kibana,启动服务并配置访问权限。 - 2. 配置Winston发送日志到Logstash:使用
winston-logstash库,示例代码:
const winston = require('winston');
const LogstashTransport = require('winston-logstash').Logstash;
const logger = winston.createLogger({
transports: [
new LogstashTransport({
host: 'localhost',
port: 5044,
node_name: 'nodejs-app'
})
]
});
- 3. 在Kibana中创建索引模式(如
logstash-*),通过Dashboard可视化日志指标(如请求次数、错误率)。
5. 结合Prometheus+Grafana监控指标
如果不仅要看日志,还要监控应用性能指标(如请求延迟、内存使用),Prometheus配合Grafana是绝配。
安装prom-client
npm install prom-client,在Node.js应用中定义指标,比如HTTP请求计数和延迟直方图:
const promClient = require('prom-client');
const httpRequestDuration = new promClient.Histogram({
name: 'http_request_duration_seconds',
help: 'Duration of HTTP requests in seconds',
labelNames: ['method', 'route'],
buckets: [0.1, 0.5, 1, 2, 5]
});
app.use((req, res, next) => {
const start = Date.now();
res.on('finish', () => {
httpRequestDuration.observe(
{ method: req.method, route: req.route req.route.path : req.path },
(Date.now() - start) / 1000
);
});
next();
});
// 暴露 /metrics 端点,供Prometheus抓取
app.get('/metrics', async (req, res) => {
res.set('Content-Type', promClient.register.contentType);
res.end(await promClient.register.metrics());
});
部署Prometheus与Grafana
- 1. 安装Prometheus,在
prometheus.yml中添加Node.js应用的/metrics端点作为抓取目标。 - 2. 安装Grafana,添加Prometheus作为数据源,然后创建Dashboard。可以导入现成的Node.js监控模板(如ID: 1860),直接可视化请求率、延迟分布、内存使用等指标。
6. 使用Log.io实时日志流
Log.io是一款基于Web的实时日志监控工具,支持多服务器日志集中查看,轻量又直观。
安装与配置
- 1. 安装Log.io服务器和文件输入模块:
npm install -g log.io-server log.io-file-input。 - 2. 配置
log.io-server/config.js,添加Node.js日志文件路径(如/var/log/nodejs/app.log)。 - 3. 启动服务:
logio-server(服务器),logio-file-input(文件监控),然后通过浏览器访问http://server-ip:6688即可查看实时日志流。
总结
以上几套方案,从简单到复杂,从单机到集群,覆盖了Node.js日志监控的常见需求。
实际项目中可以根据团队规模、运维能力和预算灵活选择,也可以组合使用。
- 开发阶段可用
tail -f配合grep - 线上环境可用PM2加Winston
- 规模大了再上ELK或Prometheus
关键是要让日志真正“活”起来,而不是躺在磁盘里睡大觉。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- Ubuntu下使用Git管理Swagger项目的完整指南
- 时间:2026-08-31
-
- Ubuntu下GIMP滤镜使用全指南:从基础操作到批量处理
- 时间:2026-08-31
-
- Ubuntu下使用Telnet进行远程管理的完整指南
- 时间:2026-08-31
-
- Ubuntu中如何查看磁盘I/O对CPU的影响:cpustat替代方案
- 时间:2026-08-31
-
- Ubuntu系统使用cpustat查看多核CPU信息的方法
- 时间:2026-08-31
-
- Ubuntu中Rust日志系统配置指南
- 时间:2026-08-27
-
- Ubuntu下Rust集成第三方库完整指南
- 时间:2026-08-27
-
- Ubuntu下Rust跨平台开发:从环境搭建到自动化测试指南
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 以下哪种食材被称为“地下苹果” 蚂蚁庄园今日答案9.18
- 时间:2026-09-17
-
- 蚂蚁庄园今天答题答案2026年9月18日
- 时间:2026-09-17
-
- 蚂蚁庄园答题今日答案2026年9月18日
- 时间:2026-09-17
-
- 蚂蚁庄园小课堂2026年9月18日最新题目答案
- 时间:2026-09-17
-
- 小鸡答题今天的答案是什么2026年9月18日
- 时间:2026-09-17
-
- 蚂蚁庄园每日答题答案2026年9月18日
- 时间:2026-09-17
-
- 蔬菜洗完掉色,说明是被染色了,是真的吗 蚂蚁庄园今日答案9月18日
- 时间:2026-09-17
-
- 满襟蜡绘花纹巧染就花纹当绣裳说的是哪种传统技艺 蚂蚁新村今日答案2026.9.17
- 时间:2026-09-17