场景: 当我们在实际业务场景中,是用docker 或者使用k8s 部署我们的服务时, 服务在运行过程中打印的 print 日志,实际上是被记录的 在 “/var/lib/container/docker/overlay2/{dockerid}/” 路径下的 *-json.log 日志中. 如果不控制当前服务日志的输出量级以及应用日志向控制台日志输出级别, 那么 docker 中的 日志文件的增量是巨大的。
如下shell 脚本 直接运行,清理服务器中的docker 已产生的日志,如果你的应用是群集时,你可以将如下脚本 通过POERJOB 或者 XXL-JOB 或者 在构建一个
ansible shell 定时脚本来清理群集中每台机子的 docker日志。- delete-docker-logs.sh
#!/bin/bash for i in `find /var/lib/docker/containers -name *-json.log`;do cat /dev/null > $i;done
下面介绍下 通过 ansible 执行多台机子的脚本 delete-docker-logs.sh
- 安装 ansible
yum install ansible
- 配置hosts,ansible 安装完成默认配置文件在/etc/ansible里面,需要配置host才能进行脚本分发
cat /etc/ansible/hosts [all] 填写ip ansible_ssh_port=22 ansible_ssh_user=用户名 ansible_ssh_pass=密码 填写ip ansible_ssh_port=22 ansible_ssh_user=用户名 ansible_ssh_pass=密码
- ansible-delete-logs.sh
#!/bin/bash ansible all -m copy -a "src=/etc/ansible/delete-docker-logs.sh dest=/tmp/" ansible all -m shell -a 'chmod u+x /tmp/delete-logs.sh && sh /tmp/delete-logs.sh' echo $(date +"%Y-%m-%d:%T") >> /tmp/delete-k8s-log.txt
最后还是建议大家通过 POWERJOB 来群集管理多台机子的运维脚本,会更加方便。
标签:清理,sh,ansible,ssh,docker,日志,delete From: https://www.cnblogs.com/davidchild/p/17085740.html