线上nginx日志无切割引起的祸

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线上nginx日志无切割引起的祸相关的知识,希望对你有一定的参考价值。

状况:lnmp环境下nginx反向代理服务器,部分网站无法访问,重启服务器后ok

拿到权限后安装zabbix监控,负载Ok ,

IO报警:

Disk I/O is overloaded on xss152

使用命令工具查看io状况,top下78%wa........................

[[email protected] /]#  iostat -x 1 10 
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.27    0.00    0.59   21.81    0.00   77.33

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               9.58   152.95  128.06   63.60  1136.57  1732.58    14.97    12.19   63.58   4.44  85.00
dm-0              0.00     0.00  137.10  216.57  1130.05  1732.58     8.09    25.40   71.82   2.40  84.99
dm-1              0.00     0.00    0.08    0.00     0.65     0.00     7.67     0.00    2.45   2.23   0.02
dm-2              0.00     0.00    0.06    0.00     0.51     0.00     8.00     0.00    2.65   2.39   0.02

%util长期达到99%................

查看服务器本身状况,在nginx日志目录下发现,日志无切割,常年积累下来已经达到可怕的大小

-rw-r--r--  1 nobody root  4959870331 5月  18 11:38 access.log.1
[[email protected] logs]# du -sh
37G	

so,先写nginx日志切割,其后强制执行一次.

[[email protected] logrotate.d]# vim /etc/logrotate.d/nginx
/usr/local/nginx/logs/*log{
    daily
    rotate 7
    compress
    notifempty
    nocompress
    postrotate
    /bin/kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` 2> /dev/null || true
endscript
}

强制执行一次,然后查看Io情况.

logrotate -f /etc/logrotate.d/nginx
[email protected] logrotate.d]#  iostat -x 1 10 

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.27    0.00    0.58   20.70    0.00   78.45
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.75    0.00    0.00   99.00

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     3.00    0.00    2.00     0.00    40.00    20.00     0.02    9.00   5.00   1.00
dm-0              0.00     0.00    0.00    5.00     0.00    40.00     8.00     0.05    9.60   2.00   1.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-3              0.00     0.00    0.00    5.00     0.00    40.00     8.00     0.05    9.60   2.00   1.00

TOP下

[[email protected] logrotate.d]# top

top - 11:57:35 up  2:20,  3 users,  load average: 0.00, 0.00, 0.26
Tasks: 142 total,   1 running, 141 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.3%sy,  0.0%ni, 99.3%id,  0.3%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   3917212k total,  3762456k used,   154756k free,  2144812k buffers
Swap:  8388600k total,        0k used,  8388600k free,   774492k cached

0.3%wa  zabbix警报解除.搞定!!



该服务器搭建于2014年,上一任管理员写了nginx切割脚本,但是没有后面由于nginx网站增添,没有添加到脚本,引起nginx日志一直无切割.

本文出自 “海底两万里” 博客,请务必保留此出处http://huwei555.blog.51cto.com/1347480/1774673

以上是关于线上nginx日志无切割引起的祸的主要内容,如果未能解决你的问题,请参考以下文章

线上nginx访问日志切割脚本

Shell脚本切割日志

Nginx日志轮询切割

09Nginx:静态压缩 / 日志切割 / 防盗链 /恶意解析/ 跨域

Logrotate 对服务器日志按照小时切割并压缩

Nginx:Nginx日志切割方法