乐趣区

关于k8s:云端技能包-百亿级日志之云原生实时流实战2


上一期内容中,咱们简略为大家介绍了 fluentd、docker 和日志采集器的架构。当初,咱们开始实操。

【SpotMax 解决方案充分利用了云原生个性,基于微服务架构,可在保障用户服务稳固的同时充分利用 Spot 实例,实现云端降本增效。戳链接理解 SpotMax】

首先来看一下 dockerfile,咱们能够去 fluentd 的官网上(docs.fluentd.org)获取根底镜像:

而后咱们能够通过 run 加上一些命令,对容器做初始化:

有了 docker file,咱们就能够通过 docker build,来创立一个镜像。- t 前面是镜像名称,冒号:前面是一个版本:

创立完镜像之后,咱们能够通过 docker image,获取镜像列表:

咱们也能够把镜像推到近程 docker hub 里。Docker hub 是官网的远程管理性能,能够收费注册:

咱们通过 docker login 登录之后,再通过 docker push 就能够把镜像推送到近程了:

当初曾经有了一个镜像,咱们来 run 一个 container。

首先,跑一个长期的容器。–rm 代表运行长期容器,–network host 代表用一个 host 的网络连接模式;- v 代表把本地的一个目录,挂载到容器上的目录; 最初面跟的是一个命令,指的是 fluentd 的 client 端的配置,server 端同理:

咱们来看一下 client 端的配置写了些什么:
source 代表起源;
@type 前面是插件名称(tail)
Path 前面是咱们要去读的本地日志,以及相应的 pos_file、日志 tag(这里取名为 test)

接下来,咱们 match tag,就能够利用 forward(output 插件),通过 tcp、udp 的形式打到另外一个服务集群。


当初,咱们再来看一下 fluentd 的 server 端配置:

通过 forward 插件,咱们能够监听 24224 端口,拿到日志流,再通过 match tag (即后面的 test),用 stdoutput 间接输入,咱们也能够把它打到 kafka,或者运行本人的插件等。
当初来运行一下看看成果:
首先咱们跑一下 fluentd 的 server 端,能够看到曾经在监听了:

再看看 fluentd 的 client 端,如图,能够看到它当初曾经在读容器外面的一个日志文件:

因为这个容器的目录,曾经绑定在宿主机的一个目录上,咱们能够通过下图中标示出的这条命令(每秒钟打一个 just for fun),往日志中打一些音讯:

能够看到,server 端曾经可能失常接管到音讯(just for fun):

咱们整个演示都是跑在 docker 容器上的,咱们能够通过 docker ps 去看容器的列表:如图所示,曾经起了两个容器,咱们能够用 docker kill,去 kill 一个容器:

将来的文章中,咱们将会介绍怎么把日志采集器部署到 k8s 下面去,请关注“云上说禅”。

退出移动版