docker中使用logrotate对logstash日志切分和过期

昨天发现爬虫的日志太大了,居然每个容器里面,日志都大10G了。   这边的环境是docker,日志收集用的是logstash,切分用的是logrotate 。  日志超过1G之后,logstash会占用的cpu 内存会更多,要及时的清理日志,不然光是logstash的那个java进程就要卡死你了。   在此之前docker里面的日志切分,我都是自己写切分程序,经过我的测试,在性能方面比logrotate差不少的。 不信,你试试?  另外需要注意,有些后端的进程,可能共享了一个logger的fd,这时候,千万不要直接mv,然后再创建一个,不然会引起程序找不到fd,造成崩溃。  madan,天太热,没心情扯淡了…    


http://xiaorui.cc/?p=1518


这是我的Dockerfile配置,我这边精简了很多。 

# Pull base image.
FROM wowuwowuwo/spider_base

COPY ./spider /data/buzzMaster

# Define working directory.
WORKDIR /data/buzzMaster/

# Clean up
RUN rm -rf /tmp/*

ENTRYPOINT ["/data/buzzMaster/entrypoint.sh"]
#ENTRYPOINT ["echo", "welcome to spider container"]

# Define default command.
CMD ["bash"]

这是我启动容器后,启动的脚本.  因为是在docker里面,我就不用crontab来管理logrotate切分了。 

#!/bin/sh
cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
cp conf/logrotate /etc/logrotate.d/spider
export PYTHONPATH=`pwd` && python bin/timer
echo 1
sleep1
export PYTHONPATH=`pwd` && python bin/spider
/usr/local/logstash-1.4.2/bin/logstash -f conf/agent.conf
while true;do
    sleep 3600;
    logrotate /etc/logrotate.d/spider -f
done;

这是我logrotate的配置文件.  这配置文件很好理解,一共切分10次,每次100M

/data/buzzMaster/spider.log
{
sharedscripts
dateext
nocompress
create 2775 root root
size 100M
missingok
notifempty
copytruncate
rotate 10

postrotate
endscript

}


大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注