万能日志数据收集器 Fluentd - 每天5分钟玩转 Docker 容器技术(91)

前面的 ELK 中我们是用 Filebeat 收集 Docker 容器的日志,利用的是 Docker 默认的 logging driver json-file,本节我们将使用 fluentd 来收集容器的日志。

Fluentd 是一个开源的数据收集器,它目前有超过 500 种的 plugin,可以连接各种数据源和数据输出组件。在接下来的实践中,Fluentd 会负责收集容器日志,然后发送给 Elasticsearch。日志处理流程如下:

这里我们用 Filebeat 将 Fluentd 收集到的日志转发给 Elasticsearch。这当然不是唯一的方案,Fluentd 有一个 plugin fluent-plugin-elasticsearch 可以直接将日志发送给 Elasticsearch。条条道路通罗马,开源世界给予了我们多种可能性,可以根据需要选择合适的方案。

安装 Fluentd

同样的,最高效的实践方式是运行一个 fluentd 容器。

docker run -d -p 24224:24224 -p 24224:24224/udp -v /data:/fluentd/log fluent/fluentd

fluentd 会在 TCP/UDP 端口 24224 上接收日志数据,日志将保存在 Host 的 /data 目录中。

重新配置 Filebeat

编辑 Filebeat 的配置文件 /etc/filebeat/filebeat.yml,将 /data 添加到监控路径中。

重启 Filebeat。

systemctl restart filebeat.service

监控容器日志

启动测试容器。

docker run -d \
--log-driver=fluentd \
--log-opt fluentd-address=localhost:24224 \
--log-opt tag="log-test-container-A" \
busybox sh -c 'while true; do echo "This is a log message from container A"; sleep 10; done;'

docker run -d \
--log-driver=fluentd \
--log-opt fluentd-address=localhost:24224 \
--log-opt tag="log-test-container-B" \
busybox sh -c 'while true; do echo "This is a log message from container B"; sleep 10; done;'

--log-driver=fluentd 告诉 Docker 使用 Fluentd 的 logging driver。

--log-opt fluentd-address=localhost:24224 将容器日志发送到 Fluentd 的数据接收端口。

--log-opt tag="log-test-container-A" 和 --log-opt tag="log-test-container-B" 在日志中添加一个可选的 tag,用于区分不同的容器。

容器启动后,Kibana 很快就能够查询到容器的日志。

Fluentd 咱们就讨论到这里,下一节开始学习 Graylog。

书籍:
1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

时间: 2024-11-10 00:47:43

万能日志数据收集器 Fluentd - 每天5分钟玩转 Docker 容器技术(91)的相关文章

数据收集利器 cAdvisor - 每天5分钟玩转 Docker 容器技术(82)

cAdvisor 是 google 开发的容器监控工具,我们来看看 cAdvisor 有什么能耐. 在 host 中运行 cAdvisor 容器. docker run \   --volume=/:/rootfs:ro \   --volume=/var/run:/var/run:rw \   --volume=/sys:/sys:ro \   --volume=/var/lib/docker/:/var/lib/docker:ro \   --publish=8080:8080 \   --

部署 Graylog 日志系统 - 每天5分钟玩转 Docker 容器技术(92)

Graylog 是与 ELK 可以相提并论的一款集中式日志管理方案,支持数据收集.检索.可视化 Dashboard.本节将实践用 Graylog 来管理 Docker 日志. Graylog 架构 Graylog 架构如下图所示: Graylog 负责接收来自各种设备和应用的日志,并为用户提供 Web 访问接口. Elasticsearch 用于索引和保存 Graylog 接收到的日志. MongoDB 负责保存 Graylog 自身的配置信息. 与 ELK 一样,Graylog 的部署方案很灵

Docker 如何支持多种日志方案?- 每天5分钟玩转 Docker 容器技术(88)

将容器日志发送到 STDOUT 和 STDERR 是 Docker 的默认日志行为.实际上,Docker 提供了多种日志机制帮助用户从运行的容器中提取日志信息.这些机制被称作 logging driver.  Docker 的默认 logging driver 是 json-file. # docker info |grep 'Logging Driver'Logging Driver: json-file 如果容器在启动时没有特别指明,就会使用这个默认的 logging driver. jso

日志管理之 Docker logs - 每天5分钟玩转 Docker 容器技术(87)

高效的监控和日志管理对保持生产系统持续稳定地运行以及排查问题至关重要. 在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要.考虑到容器短暂和不固定的生命周期,当我们需要 debug 问题时有些容器可能已经不存在了.因此,一套集中式的日志管理系统是生产环境中不可或缺的组成部分. 本章我们将讨论监控容器的各种可用技术和方案,首先会介绍 Docker 自带的 logs 子命令,然后讨论 Docker 的 logging driver,接下来通过实践学习几个已经广泛应用

Swarm 如何存储数据?- 每天5分钟玩转 Docker 容器技术(103)

service 的容器副本会 scale up/down,会 failover,会在不同的主机上创建和销毁,这就引出一个问题,如果 service 有要管理的数据,那么这些数据应该如何存放呢? 选项一:打包在容器里. 显然不行.除非数据不会发生变化,否则,如何在多个副本直接保持同步呢? 选项二:数据放在 Docker 主机的本地目录中,通过 volume 映射到容器里. 位于同一个主机的副本倒是能够共享这个 volume,但不同主机中的副本如何同步呢? 选项三:利用 Docker 的 volum

验证 Swarm 数据持久性 - 每天5分钟玩转 Docker 容器技术(104)

上一节我们成功将 Rex-Ray Volume 挂载到了 Service.本节验证 Failover 时,数据不会丢失. Scale Up 增加一个副本: docker service update --replicas 2 my_web 运行之前我们先推测一下,理想的结果应该是:swarm 在 swarm-worker2 上启动第二个副本,同时也将挂载 volume my_web. 对比一下实际的运行结果: 出现了一点复杂的状况: swarm 首先尝试在 swarm-worker2 上启动第二

如何共享数据?- 每天5分钟玩转 Docker 容器技术(41)

数据共享是 volume 的关键特性,本节我们详细讨论通过 volume 如何在容器与 host 之间,容器与容器之间共享数据. 容器与 host 共享数据 我们有两种类型的 data volume,它们均可实现在容器与 host 之间共享数据,但方式有所区别. 对于 bind mount 是非常明确的:直接将要共享的目录 mount 到容器.具体请参考前面 httpd 的例子,不再赘述. docker managed volume 就要麻烦点.由于 volume 位于 host 中的目录,是在

用 volume container 共享数据 - 每天5分钟玩转 Docker 容器技术(42)

volume container 是专门为其他容器提供 volume 的容器.它提供的卷可以是 bind mount,也可以是 docker managed volume.下面我们创建一个 volume container: 我们将容器命名为 vc_data(vc 是 volume container 的缩写).注意这里执行的是 docker create 命令,这是因为 volume container 的作用只是提供数据,它本身不需要处于运行状态.容器 mount 了两个 volume: b

SQL Server 2008中数据收集器和管理数据仓库

08年8月份发布的SQL Server 2008充满了许多新特性.其中一个新特性就是数据收集器.与这一新特性相关联的是管理数据仓库(MDW).数据收集器功能非常强大,数据库管理员借助这一工具,能够收集不同来源的统计数据,而管理数据仓库就是用来存放存储这些数据. 一.什么是数据收集器? 数据收集器是SQL Server 服务器上的一个核心组件,它收集来自多种来源的数据,并将收集的数据存储在称为管理数据仓库的关系数据库中.数据采集器使用SSIS和SQL 代理的作业来实现这一功能. 数据收集器按照不同