docker日志处理

检查docker日志情况
容器日志一般存放在/var/lib/docker/containers/container_id/下面,以json.log结尾的文件(业务日志)很大,查看各个日志文件大小的脚本docker_log_size.sh,内容如下:
#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
        do
                echo "clean logs : $log"
                cat /dev/null > $log
        done
echo "======== end clean docker containers logs ========"
日志处理:
如果docker容器正在运行,那么使用rm -rf方式删除日志后,通过df -h会发现磁盘空间并没有释放。原因是在Linux或者Unix系统中,通过rm -rf或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink)。如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。正确姿势是cat /dev/null > *-json.log,当然你也可以通过rm -rf删除后重启docker。
设置Docker容器日志大小(治本)
要从根本上解决问题,需要限制容器服务的日志大小上限。这个通过配置容器docker-compose的max-size选项来实现

全局设置:
编辑vim /etc/docker/daemon.json,若有就不用新建了。添加log-dirver和log-opts参数,样例如下
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"} # max-size=500m,意味着一个容器日志大小上限是500M,max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。
注意:设置的日志大小,只对新建的容器有效。

原文地址:https://www.cnblogs.com/kylingx/p/12242292.html

时间: 2024-11-08 23:19:29

docker日志处理的相关文章

docker日志引擎说明

docker原生支持众多的日志引擎,适用于各种不同的应用场景,本篇文档对其作一个简单的说明. Docker日志引擎说明 docker支持的日志引擎如下: none:关闭docker的回显日志, docker logs 看不到任何输出.使用这种方式也就意味着无法查看任何容器输出的日志 json-file:把每个容器的回显日志打到每个容器的内部, 形式为json 文件.在实际使用中, 有些容器在启动后有大量的回显日志, 尤其在程序内部报错时打出的日志信息尤其巨大, 很可能会因为某几个容器的json

docker 日志分析

日志分两类,一类是 Docker 引擎日志:另一类是 容器日志. Docker 引擎日志 Docker 引擎日志 一般是交给了 Upstart(Ubuntu 14.04) 或者 systemd (CentOS 7, Ubuntu 16.04).前者一般位于 /var/log/upstart/docker.log 下,后者一般通过 jounarlctl -u docker 来读取.不同系统的位置都不一样,SO上有人总结了一份列表,我修正了一下,可以参考: 系统 日志位置Ubuntu(14.04)

ELK学习实验018:filebeat收集docker日志

Filebeat收集Docker日志 1 安装docker [[email protected] ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 [[email protected] ~]# yum update [[email protected] ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/d

运维之我的docker-使用ELK处理docker日志

因为docker产生的容器不是一个永久存储的文件,所以无法保证你的文件永久保存.建议大家把容器产生的日志通过fluentd,flume,logstash等工具传送到一个日志仓库,这样保证方便保证数据的安全和管理.由于docker官方的推荐,我们本次讲解是fluentd日志收集组件. 具体使用如下: 安装ES 1. 初始化环境 [[email protected] src]# vim /etc/sysctl.conf vm.max_map_count = 290000 [[email protec

Docker日志那点事

一套软件系统的整个生命周期中,其中超过80%的时间都是在运维.运维中有几块不可缺,其中监控和日志,虽然没有这么复杂,但却是运维的基础. docker的出现,颠覆了原基础架构以及应用部署的模式.今天聊一下docker环境的日志. 我们先准备个测试环境 先在我们的docker host上起一个tomcat的容器 输入命令docker search tomcat 我们选择STARS最高的一个镜像 然后pull下来 docker pull docker.io/tomcat 我们使用docker imag

Docker 日志位置

日志分两类,一类是 Docker 引擎日志:另一类是 容器日志. Docker 引擎日志 Docker 引擎日志 一般是交给了 Upstart(Ubuntu 14.04) 或者 systemd (CentOS 7, Ubuntu 16.04).前者一般位于 /var/log/upstart/docker.log 下,后者一般通过 jounarlctl -u docker 来读取.不同系统的位置都不一样,SO上有人总结了一份列表,我修正了一下,可以参考: 系统 日志位置 Ubuntu(14.04)

docker 日志方案

docker logs默认会显示命令的标准输出(STDOUT)和标准错误(STDERR).下面使用echo.sh和Dockerfile创建一个名为echo.v1的镜像,echo.sh会一直输出"hello" [[email protected] docker]# cat echo.sh #!/bin/sh while true;do echo hello;sleep 2;done [[email protected] docker]# cat Dockerfile FROM busyb

docker日志清理

前言:docker运行久了,会发现它的映射磁盘空间爆满,尤其是yum安装的docker的 解决方法: 1. 用脚本清理,一般yum安装的docker,其存储空间一般都在/var/lib/docker/containers下面,不同id对应不同容器,这个适用于docker容器运行时 下面是样本: #!/bin/sh logs=$(find /var/lib/docker/containers/   -name  *-json.log) for var  in $logs do echo"clean

公司使用graylog来收集Docker日志

学习一下 Graylog 相信大部分的人都用过或者听说过ELK这个强大的日志栈架构,我们要用的graylog和ELK非常的相似,但是算是后起之秀. 为什么要选择graylog来作为Docker的日志收集平台呢? Docker原生支持graylog协议,直接将日志发送到graylog(通过gelf协议) graylog官方提供了将本身部署在Docker的支持 graylog官方提供了Dockerfile供我们快速的在Docker上部署日志系统dokerFile. 原文地址:https://www.