一、前置准备:安装必要工具 在Debian上配置JS日志分析工具前,需先安装基础工具和依赖:
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -添加NodeSource仓库,再执行sudo apt install -y nodejs安装。npm install winston安装,配置文件示例:const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(), // 结构化日志(便于后续分析)
transports: [
new winston.transports.File({ filename: '/var/log/my-js-app/error.log', level: 'error' }),
new winston.transports.File({ filename: '/var/log/my-js-app/combined.log' })
]
});
module.exports = logger;
```。
二、收集与存储日志
sudo npm install -g pm2;启动应用并指定日志路径:pm2 start app.js --name my-js-app --out /var/log/my-js-app/out.log --err /var/log/my-js-app/err.log;保存进程列表以实现开机自启:pm2 save。/etc/logrotate.d/my-js-app,内容如下:/var/log/my-js-app/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root adm
}
```(每日轮转、保留7天、压缩旧日志)。
三、使用ELK Stack进行高级分析与可视化 ELK(Elasticsearch+Logstash+Kibana)是Debian上常用的JS日志分析解决方案,步骤如下:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -;echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list),执行sudo apt install elasticsearch,启动服务:sudo systemctl start elasticsearch并设置开机自启。sudo apt install kibana安装,启动服务:sudo systemctl start kibana,默认通过http://your-server-ip:5601访问。sudo apt install logstash安装,创建配置文件/etc/logstash/conf.d/js-logs.conf,内容如下:input {
file {
path => "/var/log/my-js-app/*.log" # 日志文件路径
start_position => "beginning" # 从文件开头读取(首次运行)
}
}
filter {
grok { # 解析日志格式(根据实际日志调整)
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }
}
date { # 转换时间戳格式
match => [ "timestamp", "ISO8601" ]
}
}
output {
elasticsearch { # 发送数据到Elasticsearch
hosts => ["localhost:9200"]
index => "js-logs-%{+YYYY.MM.dd}" # 按日期分索引
}
}
```;重启Logstash:`sudo systemctl restart logstash`。
http://your-server-ip:5601,进入“Management”→“Stack Management”→“Index Patterns”,点击“Create index pattern”,输入js-logs-*(匹配Logstash输出的索引),选择时间字段(如timestamp),完成创建。loglevel: "error")、过滤(如timestamp >= "now-1d/d")和可视化日志数据(如通过“Visualize”创建错误数量趋势图)。四、基础命令行分析(可选) 若无需复杂可视化,可使用以下命令行工具快速分析日志:
grep "ERROR" /var/log/my-js-app/combined.log。awk '/ERROR/ {count++} END {print "Error count:", count}' /var/log/my-js-app/combined.log。sed 's/error/warning/g' /var/log/my-js-app/combined.log。