docker swarm集群日志管理ELK实战

本文介绍了如何在Docker Swarm集群中管理日志,通过部署ELK(Elasticsearch、Logstash、Kibana)堆栈实现日志收集、处理和可视化。详细步骤包括修改内存限制、创建docker-compose文件、配置Logstash、部署和验证ELK服务,以及清理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker默认日志管理

        docker部署完成后,运行docker info命令,如下图所示:


        上图中红框内的"json-file",指的是当启动某个容器时,如果不特别指定容器所采用的log驱动,则使用json-file这种方式。当采用这种方式的容器在创建时,docker daemon会首先在宿主机上创建一个与这个容器相关联的文件,当容器运行时,docker daemon会转储容器在运行过程中向stdout与stderr输出的内容,并保存在刚才创建的那个文件中。当在宿主机中运行“docker logs -f 容器名”时,docker daemon就会跟踪宿主机文件的内容,并显示在终端上。

        以nginx为例,首先看一下Dockerfile文件,会发现如下内容:

# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
	&& ln -sf /dev/stderr /var/log/nginx/error.log
        nginx默认会将日志输出到文件/var/log/nginx/access.log与/var/log/nginx/error.log。在以上代码中,这两个文件分别被软件链接到了stdout与stderr,实际结果就相当于nginx直接将日志输出到标准输出与标准错误输出。如果在nginx的Dockerfile中没有以上内容的话,则nginx在运行过程中,实际会把日志写入到容器的可读写层中而不是容器的stdout与stderr,这样json-file驱动就拿不到到数据,运行docker logs命令的话也不会看到日志输出。

        以上是docker默认管理容器日志的方式。在docker集群中,容器的数量很多,容器的生命周期及运行时进驻的node也是动态变化的,以上方式并不能满足大规模docker集群的日志管理要求。

创建docker swarm集群

        参考https://blog.csdn.net/dkfajsldfsdfsd/article/details/79923218创建包含三个node的docker集群,结果如下图所示:

<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值