Linux运维之日志管理
有时候不注意,SpringBoot程序以及nacos文件就回产生很多的日志文件,如果不定期删除,就会出现磁盘空间被占满的情况,导致很多的程序无法运行,最近就遇到了这样的问题,被披头盖脸的骂了一顿,老板很生气,我也很生气,但是工作还是要做的啊。
主要的日志:
nacos的access日志
tomcat的catalina日志
springboot的logback日志
1.磁盘空间查看
出现最常见的磁盘空间沾满的情况,可以使用下面的几条命令查看磁盘空间的使用情况。
1 | ## 查看磁盘剩余情况 |
2.nohup不记录日志
有时候如果使用了logback进行日志文件记录,我觉得可能就不需要输出nohup.out文件了,因为使用nohup命令后台执行java程序,默认的就会产生nohup.out文件,有时候会变的很大,可以使用linux的重定向讲错误输出到 /dev/null 中。
1 | ## 只输出错误信息到日志文件 |
1.nohup不输出日志信息的方法,及linux重定向学习
3.tomcat日志
tomcat的catalina.out文件也有可能变的很大,可以进行相应的精简和删除。
1.解决catalina.out文件过大的问题 (这篇文章是说如何才能解决tomcat的日志文件输出过大的问题,使用日志切割工具cronolog、logrotate,使用脚本进行日志切割,或者是定义日志级别的版本)
2.Tomcat清理日志文件无法立即释放磁盘空间
4.定时脚本
根据参考文章2中的脚本,我改造了相关的脚本。可以遍历directory.txt文件中指定的目录(每一个目录一行),判断最后修改时间是否比当前时间要早5天,如果是,则自动删除。
(1) 脚本
1 |
|
(2) 其中的directory.txt
1 | /usr/local/tomcat9.0.30/logs |
1.shell脚本:遍历删除
2.linux脚本监视指定日志目录,删除目录下15天之前的日志文件 (这篇文章的脚本,我没有运行成功,好处是支持遍历文件夹)
3.linux定时删除日志脚本 (这个其实利用的是find方法,然后查找文件,执行删除任务,不好的地方就是不能遍历文件夹)
4.shell:读取文件的每一行内容并输出
5.Linux获取文件最后修改时间 (这里有一点就是 awk ‘{print $6 “-“ $7 “-“ $8 }’ 这个用法还是让我知道了如何打印某一个片段)
6.linux下查看和修改文件时间 (这里提供了一个 grep -i Modify 可以查看文件的修改时间)
(3) 定时任务
1 | ## 编辑定时任务 |
1.linux 让 crontab 每天03点00 访问一次指定的url
2.关于定时执行任务:Crontab的20个例子
3.windows服务器自动删除日志文件 (这里是windows上使用bat文件自动执行删除文件的脚本:forfiles -p “D:\Logs” -s -m *.log -d -7 -c “cmd /c del @path”,需要在系统任务计划程序中,设置定时任务)
4.Windows 2008 计划任务配置 (如何设置windows的定时计划任务)
5.Docker清理
(1) 手动清理
手动清理,也是使用docker提供的命令进行的,主要就是prune命令,执行后,会询问是否要进行清理,输入y就可以了。
1 | ## 这样会让你输入y |
(2) 日志文件
容器的日志 则可以通过 docker logs 命令来访问,而且可以像 tail -f 一样,使用 docker logs -f 来实时查看。如果使用 Docker Compose,则可以通过 docker-compose logs <服务名> 来查看。如果深究其日志位置,每个容器的日志默认都会以 json-file 的格式存储于 /var/lib/docker/containers/<容器id>/<容器id>-json.log 下,不过并不建议去这里直接读取内容,因为 Docker 提供了更完善地日志收集方式 - Docker 日志收集驱动。
编写日志清理脚本clear_docker_logs.sh
1 |
|
编辑定时任务,加入crontab 每隔半小时清理日志
1 | ## 赋予执行权限 |
【1】./var/lib/docker/overlay2 占用很大,清理Docker占用的磁盘空间,迁移 /var/lib/docker 目录 使用:docker system prune 命令进行清理。
【2】.【已解决】docker overlay2占用大量磁盘空间处理方法 通过手动或定时任务进行清除,当然这篇文章中没有介绍自动清理的方法,只是使用了:cat /dev/null > *-json.log 进行手动清理。
【3】.docker清理大杀器/docker的overlay文件占用磁盘很大??_昨天在梦里-程序员宅基地_docker overlay 方法一:docker system prune -a,方法二:安装portainer,使用portainer进行管理。
【4】.docker目录迁移及docker日志自动清理 修改了Docker 的根目录,还提供了进行自动清理日志文件的脚本,并添加了定时任务,我看脚本的内容,也是主要清理的 *-json.log 文件。
【4】.【已解決】docker overlay2佔用大量磁碟空間處理方法 處理方式1:也是清理json.log文件,方式二,就是用prune命令进行清理
【5】.docker 日志位置
【6】./var/lib/docker/overlay2 占用很大,清理Docker占用的磁盘空间
6./var/log/journal/ 垃圾日志清理
1 | ## 只保留近一周的日志 |