容器日志,查看容器日志的方法

vbhYIYTMK89032024-04-09 12:43:29

一、Docker日志收集

Docker的应用为我们带来便利的同时,日志集中化问题就越来越有必要性了。

在收集之前,我们先来简单了解下docker日志处理的机制。当启动一个容器的时候,它其实是docker daemon的一个子进程,docker daemon可以拿到你容器里面进程的标准输出,拿到标准输出后,它会通过自身的一个LogDriver模块来处理,LogDriver支持的方式很多,可以写到本地的文件(默认方式),可以发送到syslog等,见下图:

目前,常见的收集方式有下面几种:

在日志收集的过程中,需要特别考虑性能的问题。试想一下,当容器的流量比较大的时候,势必日志也会随着大量地产生,这时就会有个问题,日志收集agent必然会跟容器抢占宿主机的资源,为了避免这个问题,在收集选型的时候就需要注意:

综上所属,最佳实践就是采用旁路模式来收集,并且使用容器方式来运行并限定使用的资源;最终采用了 logspout+Fluentd的方案(架构图见下),采用的理由如下:

logspout通过docker.sock监听本地容器的启动,通过docker API获取到这个新容器的日志流,并将这个日志流通过udp的协议发送给fluentd处理,fluentd处理完成后发送给后续的日志系统。

最后,受阿里云fluentd-pilot的影响,我将官方的logspout进行一些小的修改,请见:

下面个出个docker-compose.yml,通过docker-compose up就可以运行了;

fluent的简单配置:

最后,可以通过查看fluent的log来查看格式化的容器日志;

二、查看容器日志的方法

docker查看容器日志是指使用Docker命令或工具来查看正在运行的容器生成的日志信息。Docker容器是独立运行的应用程序实例,它们可以生成各种日志,包括应用程序输出、错误日志、访问日志等。这些日志对于故障排除、性能监测和应用程序调试非常重要。

要查看Docker容器的日志,可以使用以下方法:

1、使用docker logs命令:这是最简单的方法,通过该命令可以查看容器的日志输出。

例如:要查看名为my-container的容器的日志,可以运行以下命令:

docker logs my-container

默认情况下,docker logs命令将显示容器的全部日志内容。如果你只想查看最新的几行日志,可以使用tail选项指定行数,如:

docker logs--tail 10 my-container //查看最新的10行日志

另外,如果容器在后台运行,可以使用-f选项以实时方式跟踪日志输出:

docker logs-f my-container //实时跟踪日志输出

2、使用Docker管理工具:如果你使用Docker管理工具(如Docker Compose、Kubernetes等),通常可以通过工具提供的命令或界面来查看容器的日志。

例如:使用Docker Compose,可以运行以下命令来查看容器的日志:

docker-compose logs my-container

这将显示指定容器的日志内容。

无论使用哪种方法,通过查看容器的日志,你可以获取有关容器内部运行情况的重要信息,帮助你理解应用程序的行为、问题和监控性能。

三、容器日志找不到路径怎么回事

1、先分离数据库,到数据库存放目录更改一下日志文件名称。

2、server2008,进行附加,会报错。提示找不到日志文件,没有关系,在下方的表格中删除这个日志文件,点击确定,附加成功。

3、server2008r2会自动为找不到日志文件的数据库添加一个日志文件,最后在数据库属性页中设置一下数据库的最大限制就可以了。

四、docker容器日志存储多久

docker容器运行后容器日志会一直存储,时间久后会出现日志文件过大,从而导致查询日志困难,容器日志一般会在docker持久化目录containers下对应不同镜像名称以*-json.log形式展现。Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用,以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

热门标签
    关注我们