Nginx日志分割实例

环境:centos 6.6   nginx.1.10.

1、用脚本分割nginx日志
#!/bin/bash
savepath_log='/usr/local/nginx/logs'
mkdir -p $savepath_log/$(date +%Y)/$(date +%m)
mv $savepath_log/access.log $savepath_log/$(date +%Y)/$(date +%m)/access-$(date +%Y%m%d).log
mv $savepath_log/error.log $savepath_log/$(date +%Y)/$(date +%m)/error-$(date +%Y%m%d).log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
 将这段脚本保存后加入到Linux的crontab守护进程,让此脚本在每天凌晨0点执行,就可以实现日志的每天分割了。

2、 用logrotate切割nginx日志

logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。系统自带的日志切割的配置文件在/etc/logrotate.conf 和 /etc/logrotate.d/syslog 里面,观察一下。 

vim /etc/logrotate.d/nginx             #创建配置文件
/usr/local/nginx/logs/*.log {
    daily
    rotate 10
    compress
    delaycompress
    missingok
    notifempty
    dateext
    sharedscripts
    postrotate
    kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    endscript
} 
/usr/local/nginx/logs/*.log Nginx的日志路径
daily 日志文件按日转储
rotate  一次将存储10个转储日志。对于第11个转储,时间最久的转储会被删除。
compress 对转储日志进行gzip压缩
delaycompress 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的转储日志压缩,压缩将在下一次转储周期进行。这在你或任何软件仍然需要读取最新的转储日志时很有用
missingok 在日志转储期间,任何错误将被忽略,例如文件无法找到
notifempty 如果日志文件为空,转储不会进行
dateext 在文件末尾添加当前日期
sharedscripts 对所有日志文件执行一次脚本
postrotate/endscript 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。
 
#
测试,有生成就代表配置成功
logrotate -f /etc/logrotate.d/nginx
最后写入到cron守护进程,每天执行,即可实现日志每天切割了。或将脚本存放到/etc/cron.daily/,如果是在/etc/logrotate.d/中,也会自动执行,原因在/etc/cron.daily/logrotate文件中~
### Nginx 日志备份策略的最佳实践 为了确保 Nginx 日志的安全性和可用性,制定合理的日志备份策略至关重要。以下是基于现有引用内容以及行业标准总结的日志备份最佳实践。 #### 1. 定期轮转日志文件 通过 `logrotate` 工具实现定期轮转日志文件是一个常见的做法[^3]。该工具可以按时间间隔(小时、天等)自动分割并压缩旧的日志文件,从而减少磁盘占用并便于后续处理。配置示例如下: ```bash /var/log/nginx/*.log { daily rotate 7 compress delaycompress missingok notifempty create 0640 www-data adm } ``` 上述配置表示每天执行一次日志轮转操作,并保留最近七天的历史记录。同时启用了压缩功能以节省空间。 #### 2. 远程同步至集中存储位置 除了本地保存外,还应考虑将这些已轮转的日志文件传输到远程服务器上作为冗余副本。可以通过脚本配合 SCP 或 Rsync 实现自动化上传过程。例如下面展示了一个简单的 Bash 脚本用于完成这项任务: ```bash #!/bin/bash SOURCE="/var/log/nginx/" DESTINATION="backup@example.com:/path/to/remote/logs/" rsync -avz --remove-source-files $SOURCE*.gz $DESTINATION ``` 此脚本会查找源目录中的所有 `.gz` 压缩包形式的老化日志条目并将它们发送给指定的目标机器;完成后删除原始项目以防过度积累。 #### 3. 配置状态标记与优先级调整 当设置备份服务时,在某些情况下可能需要修改相关参数来区分主备角色之间的差异。比如对于负载均衡场景下的多个实例而言,则可以在 upstream block 中定义 server entries 并适当降低 backup instance 的 priority 数值以便正常流量不会轻易切换过去除非必要时刻才启用备用方案[^1]: ```nginx upstream backend { server primary.example.com; server secondary.example.com backup; # 设置为备份节点 } server { listen 80; location / { proxy_pass http://backend; } } ``` 以上片段展示了如何声明一个名为 'secondary' 的成员仅充当辅助角色直到主要连接不可达为止才会被调用起来承担请求负担。 #### 4. 数据验证机制 无论采用何种方式实施迁移动作之后都应当加入校验环节确认数据一致性无误。利用 MD5SUMS 文件或者类似的哈希算法可以帮助识别潜在错误情况的发生概率降到最低限度之内。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值