您的位置:首页 >如何设置Debian JS日志监控
发布于2026-04-20 阅读(0)
扫一扫,手机访问

想把Node.js应用在Debian系统上的日志管得明明白白?这事儿其实没那么复杂。关键在于从一开始就选对架构,把日志从产生、收集到分析告警的整条链路打通。下面这份实操指南,就是帮你快速搭建一套既专业又高效的日志监控体系。
一套清晰的架构是成功的一半。通常,我们可以从四个层面来规划:
理论说完了,咱们直接上手,分三步把架子搭起来。
npm i winston。如果需要按日期自动轮转日志文件,可以再加一个:npm i winston-daily-rotate-file。const winston = require('winston');
const { createLogger, format, transports } = winston;
const DailyRotateFile = require('winston-daily-rotate-file');
const logger = createLogger({
level: process.env.LOG_LEVEL || 'info',
format: format.combine(
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.json()
),
transports: [
new DailyRotateFile({
filename: 'logs/application-%DATE%.log',
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
}),
new transports.Console({ format: format.simple() })
]
});
logger.info('应用启动', { pid: process.pid });
/etc/systemd/system/jsapp.service,内容如下:
[Unit]
Description=Node.js JS App
After=network.target
[Service]
ExecStart=/usr/bin/node /opt/jsapp/app.js
Restart=always
User=www-data
Environment=NODE_ENV=production
StandardOutput=journal
StandardError=journal
SyslogIdentifier=jsapp
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now jsapp
sudo journalctl -u jsapp -f
最后这个-f参数很重要,它能让你像tail -f一样实时跟踪日志输出。
nodejs-*),就能在Discover页面进行搜索和查看了。如果你选择了功能更强大的方案B,用Logstash做采集,那么重点来了。
/etc/logstash/conf.d/目录下,例如创建一个nodejs.conf:
input {
file {
path => "/opt/jsapp/logs/*.log"
start_position => "beginning"
sincedb_path => "/var/lib/logstash/sincedb-nodejs"
}
}
filter {
# 可添加 grok/date 解析,若日志已是 JSON 可省略
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "nodejs-logs-%{+YYYY.MM.dd}"
}
}
配置完成后,重启Logstash服务即可:sudo systemctl restart logstash。
http://你的服务器IP:5601。进入路径:Management → Stack Management → Index Patterns。创建一个新的索引模式,例如nodejs-logs-*,并正确选择时间字段(通常是@timestamp)。之后,你就可以在Discover页面自由探索数据,并基于此构建各种直观的图表了。日志管理,可不能只放不收。否则再大的磁盘也有被撑爆的一天。
maxSize(单文件大小)和maxFiles(保留天数),已经能很好地控制日志文件的无限增长。/etc/logrotate.d/jsapp:
/opt/jsapp/logs/*.log {
daily
rotate 14
compress
missingok
notifempty
copytruncate
}
这个配置表示:每天轮转,保留最近14天的日志,压缩旧文件。你可以用sudo logrotate -d /etc/logrotate.conf检查语法,用sudo logrotate -f /etc/logrotate.d/jsapp强制执行一次轮转,看看效果。
即使方案再完善,实际运行中也难免遇到问题。记住下面这几个高频故障点,排查起来能快人一步。
/opt/jsapp/logs)拥有写入权限。journalctl -u service_name -f或tail -f logfile在服务器端确认实时性。同时,注意Kibana界面的刷新间隔和数据延迟设置。/var/log目录和Elasticsearch数据目录的磁盘使用率,并设置合理的告警阈值,别等空间用尽了才手忙脚乱。按照这个流程走下来,一套从生产到消费、兼顾实时与历史的JS日志监控体系就基本成型了。剩下的,就是在实践中根据具体业务需求微调和优化,让日志真正成为你洞察系统、排查问题的利器。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9