云端技能包 | 百亿级日志之云原生实时流实战(2)
【云端技能包 | 百亿级日志之云原生实时流实战(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上面去,请关注“云上说禅”。
推荐阅读
- 喂,你结婚我给你随了个红包
- CET4听力微技能一
- 【生信技能树】R语言练习题|【生信技能树】R语言练习题 - 中级
- 放下心中的偶像包袱吧
- 社保代缴公司服务费包含哪些
- Beego打包部署到Linux
- 工具|后天就是七夕节,你准备好了吗(送上几个七夕代码,展示你技能的时候到了!)
- 新媒体时代,你需要掌握的必备技能
- 世界之大,包罗万象--|世界之大,包罗万象-- 读《我不过低配的人生》
- 用npm发布一个包的教程并编写一个vue的插件发布