Appearance
日志管理
本节介绍Nginx日志的管理。
查看日志
查看访问日志
bash
sudo tail -f /var/log/nginx/access.log查看错误日志
bash
sudo tail -f /var/log/nginx/error.log查看最近的日志
bash
sudo tail -100 /var/log/nginx/access.log清空日志
清空访问日志
bash
sudo truncate -s 0 /var/log/nginx/access.log清空错误日志
bash
sudo truncate -s 0 /var/log/nginx/error.log日志轮转
配置日志轮转
bash
sudo vi /etc/logrotate.d/nginx添加以下内容:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}手动轮转
bash
sudo logrotate -f /etc/logrotate.d/nginx完整示例
日志管理脚本
bash
#!/bin/bash
# Nginx日志管理脚本
LOG_DIR="/var/log/nginx"
BACKUP_DIR="/backup/nginx/logs"
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份访问日志
sudo cp $LOG_DIR/access.log $BACKUP_DIR/access.log.$DATE
# 备份错误日志
sudo cp $LOG_DIR/error.log $BACKUP_DIR/error.log.$DATE
# 清空日志
sudo truncate -s 0 $LOG_DIR/access.log
sudo truncate -s 0 $LOG_DIR/error.log
echo "日志备份和清空完成"日志分析脚本
bash
#!/bin/bash
# Nginx日志分析脚本
LOG_FILE="/var/log/nginx/access.log"
echo "访问量前10的IP:"
awk '{print $1}' $LOG_FILE | sort | uniq -c | sort -nr | head -10
echo -e "\n访问量前10的URL:"
awk '{print $7}' $LOG_FILE | sort | uniq -c | sort -nr | head -10
echo -e "\n状态码统计:"
awk '{print $9}' $LOG_FILE | sort | uniq -c | sort -nr
echo -e "\n错误日志统计:"
grep "error" /var/log/nginx/error.log | wc -l常见问题
日志文件过大
原因: 日志记录过多
解决: 配置日志轮转
bash
sudo vi /etc/logrotate.d/nginx日志未记录
原因: 日志配置错误
解决: 检查日志配置
nginx
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;总结
日志管理的关键点:
- 查看日志:使用tail命令查看日志
- 清空日志:使用truncate命令清空日志
- 日志轮转:配置logrotate自动轮转日志
- 备份日志:定期备份日志文件
- 分析日志:分析日志获取有用信息
掌握Nginx日志管理方法,管理Nginx日志。