云端技能包 | 百亿级日志之云原生实时流实战(1)

网友投稿 240 2022-10-23

云端技能包 | 百亿级日志之云原生实时流实战(1)

随着云原生技术的快速发展,微服务架构、容器及 Kubernetes 等技术的不断迭代,对于海量日志的管理提出了更高的要求,包括容器内磁盘是否持久化、HPA 时如何保证数据不丢失、海量日志如何进行可靠的传输、微服务数量达到一定规模时日志该如何管理、如何了解不同云商的收费策略以最大化节省成本,等等。

【云资源优化服务 SpotMax 充分利用云原生特性,基于微服务架构,可在保障用户服务稳定的同时充分利用Spot实例,实现云端降本增效​​。戳链接了解SpotMax】​​

“云原生日志流实战”将会通过实操+讲解,探讨云计算背景下收集海量日志的架构及实现细节。

下文中将为大家展示的这套架构,目前已经经过实践检验,稳定支撑了线上每日百亿至千亿级别的日志的收集。沿着这一架构,我们将一步步带领大家动手完成一个部署在 k8s 集群的日志采集器。

fluentd 与 Docker

市面上常用的开源日志采集工具一般有logstash、FLUME、 fluentd。其中 FLUME、 fluentd 的设计理念比较相像。fluentd 是基于C + Ruby的一套开源工具,FLUME是分布式的、可靠、可用的 Apache 项目,但是相对 fluentd来说,配置较为复杂。本次课程我们主要使用的是较为轻量级的开源工具 fluentd。

fluentd 配置简单,对日志的预处理也非常方便。我们来看一下fluentd官网的document(docs.fluentd.org):

首先来看input、output插件。使用input插件,我们可以从本地、或者通过tcp、udp流获取到日志,然后我们会给每一个日志打tag,后面通过match 该tag可以做进一步的处理:如过滤、格式化等。最终我们可以通过Output插件完成落地。 例如落到本地文件,或者存到亚马逊的s3,或打到kafka,等等。

左侧菜单栏中可见container deployment,其中有docker image——这就是docker的一个基础镜像。我们在后面的实操中会从这里获取到基础镜像,来生成一个容器。

简单介绍一下Docker的特性:docker采用的是沙盒机制,即每个运行的程序是做资源隔离的,不同程序之间不会互相影响。

如下图所示,docker采用了一种远程管理方式。这里有两个概念:image镜像、container容器,他们的关系就像一个类和对象的关系一样,一个image可以生成多个container。

我们可以通过dockerbuild的方式来build一个镜像,可以通过docker pull/push的方式,以及dockerhub(类似github)做一个远程的提交,也可以用docker run指定一个镜像,运行一个容器。

日志采集器架构

首先,我们看一下采集器的简单架构,假设我们有一个下一期,我们将带领大家完成简单的实操演示。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何在CUDA中使用驱动程序API
下一篇:身份证核验(电信身份证核验)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~