在Linux系统中,日志管理是系统监控、故障排查和安全审计的核心环节。以下是针对不同场景的日志管理工具和技术方案,分为 采集/传输、存储/索引、分析/可视化 三个层级:
系统原生工具
/etc/rsyslog.conf
+ 自定义规则目录 /etc/rsyslog.d/
journalctl -u service_name --since "1 hour ago" -p err
mkdir /var/log/journal
+ 修改 /etc/systemd/journald.conf
轻量级日志收集
bash
multitail -l "ssh root@server 'tail -f /var/log/nginx/access.log'" /var/log/syslog
分布式采集工具
@type tail
path /var/log/nginx/access.log
tag nginx.access
<parse> @type nginx </parse>
</source>
<match nginx.*>
@type elasticsearch
host localhost
port 9200
</match>
```
- Filebeat (ELK生态专用) - 低资源占用,支持背压控制
本地存储优化
conf
/var/log/nginx/*.log {
daily
rotate 30
compress
missingok
sharedscripts
postrotate
systemctl reload nginx
endscript
}
bash
zstd --fast=3 /var/log/large.log
集中式存储方案
命令行工具
bash
awk '$9 == 500 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
bash
cat app.log | jq '. | select(.level == "ERROR") | .timestamp'
高级分析工具
安全监控专项
ini
[sshd]
enabled = true
maxretry = 3
日志切割策略
copytruncate
保证服务不中断I/O优化
buffer
插件)网络传输
compression_level
)transport tls
)快速定位错误
# 查找最近1小时错误日志
grep -i "error\|exception" /var/log/*.log --color -A 2 -B 2 | less
# 统计HTTP状态码
awk '{print $9}' access.log | sort | uniq -c | sort -rn
追踪服务启动问题
journalctl -u docker --boot --no-pager | grep -C 5 "failed"
分析高延迟请求
# 提取处理时间超过1s的Nginx请求
awk '$NF > 1 {print $1,$7,$NF}' access.log | column -t
场景 | 推荐工具组合 |
---|---|
单机简单日志 | rsyslog + lnav + logrotate |
微服务分布式日志 | Fluentd/Fluent Bit + Loki + Grafana |
安全合规审计 | Wazuh + ELK |
资源受限环境 | Filebeat + SQLite |
通过合理组合这些工具,可以构建从实时监控到长期归档的完整日志管理体系。对于关键生产系统,建议至少实现日志集中存储和异常告警功能。