Linux日志管理基础
Linux日志管理基础
日志的重要性
日志是系统运行的记录,对于故障排查、安全审计和性能分析至关重要。
系统日志文件
| 文件 | 说明 |
|---|---|
| /var/log/syslog | 系统日志 |
| /var/log/auth.log | 认证日志 |
| /var/log/kern.log | 内核日志 |
| /var/log/dmesg | 启动日志 |
| /var/log/cron.log | 定时任务日志 |
| /var/log/boot.log | 启动日志 |
journalctl
systemd的journal工具是查看日志的主要方式。
基本查询
# 查看所有日志
journalctl
# 查看最近的日志
journalctl -n 100
# 实时跟踪
journalctl -f
# 按时间过滤
journalctl --since "2024-01-01"
journalctl --since "1 hour ago"
journalctl --since "2024-01-01" --until "2024-01-02"
按服务过滤
# 查看特定服务日志
journalctl -u nginx
# 查看多个服务
journalctl -u nginx -u mysql
# 实时跟踪服务日志
journalctl -u nginx -f
日志级别
# 按优先级过滤
# emerg, alert, crit, err, warning, notice, info, debug
journalctl -p err # 错误及以上
journalctl -p warning # 警告及以上
日志分析
使用grep
# 搜索错误信息
grep "error" /var/log/syslog
grep -i "error" /var/log/syslog
# 统计错误数量
grep -c "error" /var/log/syslog
# 查看特定IP的访问
grep "192.168.1.100" /var/log/nginx/access.log
使用awk
# 提取特定字段
awk '{print $1, $4}' /var/log/auth.log
# 统计登录失败
awk '/Failed password/ {print $11}' /var/log/auth.log | sort | uniq -c | sort -rn
使用sed
# 提取时间段的日志
sed -n '/2024-01-01 10:00/,/2024-01-01 11:00/p' /var/log/syslog
日志轮转
logrotate负责日志文件的轮转和压缩。
配置文件
# /etc/logrotate.conf
daily # 每天轮转
rotate 7 # 保留7份
compress # 压缩
delaycompress # 延迟压缩
missingok # 文件缺失不报错
notifempty # 空文件不轮转
create 0644 root root # 创建新文件权限
自定义配置
# /etc/logrotate.d/myapp
/var/log/myapp/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0644 myapp myapp
postrotate
systemctl reload myapp
endscript
}
日志远程发送
rsyslog配置
# 发送端配置
# /etc/rsyslog.d/client.conf
*.* @@192.168.1.100:514
# 接收端配置
# /etc/rsyslog.d/server.conf
$ModLoad imtcp
$InputTCPServerRun 514
实践:Nginx日志分析
#!/bin/bash
LOG="/var/log/nginx/access.log"
echo "=== 访问统计 ==="
echo "总请求数: $(wc -l < $LOG)"
echo ""
echo "=== 状态码分布 ==="
awk '{print $9}' $LOG | sort | uniq -c | sort -rn
echo ""
echo "=== 访问最多的IP ==="
awk '{print $1}' $LOG | sort | uniq -c | sort -rn | head -10
echo ""
echo "=== 访问最多的URL ==="
awk '{print $7}' $LOG | sort | uniq -c | sort -rn | head -10
总结
日志管理是运维工作的重要组成部分。掌握日志查看和分析技能,能够快速定位和解决问题。