在Linux系统中,实时监控和分析日志是系统管理和故障排查的重要任务。以下是几种高效的方法和工具组合:
tail -f /var/log/syslog # 跟踪文件末尾
tail -f -n 50 /var/log/nginx/access.log # 显示最后50行并跟踪
multitail -s 2 /var/log/syslog /var/log/nginx/error.log
# 分屏显示多个日志文件(-s 2表示分成2列)
less +F /var/log/auth.log # 进入实时跟踪模式(Ctrl+C退出跟踪,F键返回)
lnav /var/log/apache2/*.log # 自动检测日志格式,支持SQL查询
tail -f /var/log/nginx/access.log | grep -E '404|500' --color=auto
tail -f /var/log/apache2/access.log | awk '{print $1, $7, $9}' | sort | uniq -c
tail -f /var/log/messages | sed -n '/error/Ip' # 不区分大小写过滤error
journalctl -f -u nginx.service # 跟踪特定服务
journalctl --since "1 hour ago" -p err # 时间范围+优先级过滤
logwatch --range Today --detail High # 生成详细日报
goaccess /var/log/nginx/access.log -o report.html --real-time-html
ssh user@remote-server "tail -f /var/log/remote.log" | tee local_copy.log
# 接收端
nc -l 10514 > /tmp/aggregated.log
# 发送端
tail -f /var/log/app.log | nc monitoring-host 10514
CustomLog "|/usr/bin/rotatelogs /var/log/httpd/access.%Y%m%d.log 86400" combined
while true; do
inotifywait -e modify /var/log/nginx/access.log
echo "日志文件已更新,重新加载分析..."
done
tail -f /var/log/auth.log | grep --line-buffered "sshd.*session" | awk '{print strftime("%Y-%m-%d %H:%M:%S"), $0}'
tail -f /var/log/secure | grep --line-buffered "Failed password" | xargs -I {} notify-send "安全警报" {}
这些方法可以根据实际需求组合使用,例如:
tail -f /var/log/cluster.log | grep -v "heartbeat" | awk '/ERROR/ {print $1, $3}' | tee -a errors.log
通过以上工具的组合,可以构建从简单到复杂的实时日志监控分析解决方案。