网站首页 > 技术文章 正文
logrotate软件简介
logrotate 是一个 Bash 的 SHELL 脚本,可对日志文件进行切分,并将切分后的日志放在统一目录。
logrotate 要求 GNU bash、GNU gzip 和 GNU date。
logrotate 实用程序旨在简化在生成大量日志文件的系统上对日志文件的管理。允许自动循环压缩,删除和邮寄日志文件。可以将logrotate设置为每小时、每天、每周、每月或当日志文件达到一定大小时处理日志文件。
一般来说,logrotate是linux自带的服务,根据不同日志服务配置独立的配置文件,一般是在/etc/logrotate.d。
切割nginx日志的配置文件内容如下:(nginx安装在宿主机上)
/var/log/nginx/*log {
daily
rotate 10
dateext
missingok
notifempty
# compress
delaycompress
create 640 root root
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || :
endscript
}
切割nginx日志的配置文件内容如下:(nginx安装在docker容器上)
vi /etc/logrotate.d/docker_nginx
/data/docker/nginx/logs/*log {
daily
rotate 10
dateext
missingok
notifempty
# compress
delaycompress
create 640 root root
sharedscripts
postrotate
docker exec nginx/ bash -c "if [ -f /run/nginx.pid ]; then kill -USR1 `docker exec nginx/ cat /run/nginx.pid`; echo Nginx日志打包完毕; fi"
endscript
}
脚本说明:
"nginx"为容器名称,可以按实际调整
文件中“/var/log/nginx/”为nginx日志默认目录,由于在nginx.conf文件中可以调整日志目录,所以需要跟据需求调整。
检测命令:
logrotate -d -f /etc/logrotate.d/docker_nginx
手动执行命令:
logrotate -f /etc/logrotate.d/docker_nginx
配置自定义的crontab任务
把 logrotate 的任务计划删掉,在每天凌晨00:00进行切割nginx日志
rm -rf /etc/cron.daily/logrotate
crontab -e
#Nginx logs cut
00 00 * * * /sbin/logrotate -f /etc/logrotate.d/nginx
logrotate参数:
daily #指定转储周期为每天
weekly #指定转储周期为每周;
monthly #指定转储周期为每月;
rotate count #指定日志文件删除之前转储的次数,0指没有备份,5指保留5个备份;
compress #通过gzip压缩转储以后的日志;
nocompress #不需要压缩时,用这个参数;
delaycompress #延迟压缩,和compress一起使用时,转储的日志文件到下一次转储时才压缩;
nodelaycompress #覆盖delaycompress选项,转储同时压缩;
copytruncate #用于还在打开中的日志文件,把当前日志备份并截断;
nocopytruncate #备份日志文件但是不截断;
create mode owner group #转储文件,使用指定的文件模式创建新的日志文件;
nocreate #不建立新的日志文件;
errors address #专储时的错误信息发送到指定的Email地址;
ifempty #即使是空文件也转储,这个是logrotate的缺省选项;
notifempty #如果是空文件的话,不转储;
mail address #把转储的日志文件发送到指定的E-mail地;
nomail #转储时不发送日志文件;
olddir directory #转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统;
noolddir #转储后的日志文件和当前日志文件放在同一个目录下;
prerotate/endscript #在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行;
postrotate/endscript #在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行;
tabootext [+] list #让logrotate不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave,v,和~ ;
size size #当日志文件到达指定的大小时才转储,Size可以指定bytes(缺省)以及KB(sizek)或者MB(sizem);
postrotate <s> endscript #日志轮换过后指定指定的脚本,endscript参数表示结束脚本;
sharedscripts #共享脚本,下面的postrotate <s> endscript中的脚本只执行一次即可;
猜你喜欢
- 2025-01-15 IT运维面试问题总结-运维(Ceph、Docker、Apache、Nginx等
- 2025-01-15 用Nginx反向代理Docker化你的IP地理定位服务
- 2025-01-15 zabbix通过自定义脚本监控Linux服务、docker nginx容器,图文详细
- 2025-01-15 将.NET Core 微服务和 Kubernetes 、 NGINX、Docker进行部署集成
- 2025-01-15 docker环境的nginx,配置了一个反向代理后端服务,访问 404,解决
- 2025-01-15 Nginx Proxy Manager - Docker 建站最佳伴侣
- 2025-01-15 Docker实战-使用NGINX实现4层的负载均衡
- 2025-01-15 docker安装nginx搭建简单文件共享服务
- 2025-01-15 Docker部署web服务器之Nginx与PHP联合篇(三)
- 2025-01-15 Docker下安装超常用的nginx容器(alpine版)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)