集装箱时代的分布式记录(第3部分)

你参加集装箱革命吗?开始利用Platform9对Kubernetes部署的最终指导来利用容器管理 。

所以,我们已经看到了微服务和容器在日志记录方面的问题。我们还介绍了如何为您的项目选择正确的聚合体系结构可以提供帮助。但现在,我们要看看实现这一目标的工具 - Fluentd。

锁和密钥:Docker + Fluentd

Treasure Data首席架构师Sadayuki Furuhashi开发并开放了  Fluentd  框架。Fluentd是一个数据收集系统 - 一个像syslogd一样的守护进程,它监听来自服务的消息并以各种方式路由它们。但是与syslogd不同的是,  Fluentd是从微服务统一日志源的,因此可以有效地用于生产和分析。在收集器或聚合器模式下可以使用相同的性能代码,只需对配置进行一次调整即可,因此在整个系统中进行部署非常简单。

由于Fluentd在Docker Machine上本机支持,因此可以收集所有容器日志,而无需在单个容器中运行任何“代理”。只需使用“-log-driver = fluentd”选项启动Docker容器,并确保主机或指定的“日志”容器运行Fluentd。这种方法确保大多数容器可以运行“精简”,因为不需要在源容器上安装日志代理。

Fluentd的轻量和可扩展性使其适用于在“扩展”或“扩展”配置中汇总源端和目标端的日志。再次,哪种味道最适合你,取决于你现在的设置和你未来的需求。我们来看看每一个。

简单转发+扩展

为了便于安装,很难 在应用程序中从Fluentd记录器库中包含几行配置代码,  并且可以即时启用每个容器的单个Fluentd实例的直接日志转发。因为它几乎毫不费力,对初创企业来说,这可能是一个很大的好处,通常这些企业只有少量的服务和数据量,可以存储在标准的MySQL数据库中,并且只有少量的并发连接。

但是冒着严重死马的风险,这样的系统可以扩展多少是有限度的。 如果你的创业真的起飞呢? 根据数据驱动您的业务的方式,您可能需要事先投入实施(或考虑  将问题外包给托管数据基础架构堆栈),以避免以后发生恐慌攻击。

源聚合+扩展

另一种可能的配置是使用Fluentd汇总源代码,并使用Fluentd的400多个社区贡献的插件之一将汇总的日志发送到NoSQL数据存储区。 这个例子我们来看看  Elasticsearch,因为它很受欢迎。这种配置(使用Kibana进行可视化)称为  EFK堆栈,例如  Kubernetes  运行。这是相当简单的,它适用于中等数据量。通常。

Elasticsearch的一个警告:作为一个很好的搜索平台,作为数据基础架构的核心组件,它  并不是最佳选择。 当您尝试加载大量的重要数据时尤其如此。在生产规模上,Elasticsearch已被证明存在关键的摄入问题,包括导致数据丢失。在EFK配置中,由于Fluentd在源上而不是目的地上进行聚合,因此如果商店丢弃数据,则无法执行此操作。

对于生产规模分析,您可能会考虑更容错的平台,如  Hadoop  或Cassandra,这两个平台都针对大容量写入负载进行了优化。

源/目标聚合+扩展

如果您需要处理大量的复杂数据,最好的办法是同时设置源端和目标端汇聚节点,并利用Fluentd的各种配置模式  。通过与Docker绑定的  Fluentd日志记录驱动程序,您的应用程序可以将其日志写入STDOUT。Docker会自动将它们转发到本地主机上的Fluentd实例,然后聚合并通过TCP将它们转发到目标端Fluentd聚合器。

这就是Fluentd的力量和灵活性真正进入自己的地方。在此体系结构中,默认情况下,Fluentd使用自动故障转移实现循环负载平衡。这有助于向外扩展体系结构,因为每个新节点都由下游实例提供负载平衡。此外,内置的  缓冲架构  为其在传输过程的每个阶段提供了自动防故障保护,防止数据丢失。它甚至包括自动损坏检测(启动上传重试,直到完整的数据集被传输),以及重复数据删除API。

什么配置适合你?

这取决于你的预算和你必须移动多快。你是一个资源匮乏的启动处理少量的数据?您可能能够直接从源代码转移到单个节点的MySQL数据库。如果您的需求比较温和,而不需要进行故障安全数据捕获,那么EFK堆栈就足够了。

然而,随着各种规模的组织变得更加以数据为导向,值得花时间考虑您的长期目标。当你每天开始处理数十亿个事件时,你需要确保你的数据管道不会窒息吗?您希望将来可以添加的任何数据源的最大可扩展性?那么你可能想要考虑实现源和目的地聚合。你的未来的自我(和同事)会感谢你,当你的数据量开始爆炸。

无论您的配置如何,Fluentd的简单性,可靠性和可扩展性使其成为数据转发和聚合的绝佳选择。而且它内置Docker的事实使得它对于任何基于微服务的系统来说都是不容小觑的。

原文链接:https://dzone.com/articles/distributed-logging-in-the-container-era-part-3

原文作者:Glenn Davis

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏NetCore

自己做的一个小程序 可采集、导出、模板、配置

去年老婆要开个店铺,卖化妆品的,不过输入数据的时候真的头疼,因为我们是没有货源的,都是从代理那里找图片、介绍等,不过好在代理有个网站,闲来无事,就开发了这个小程...

2066
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合基础篇(九)版本控制

作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载。 前言 还好在第一篇文章...

2868
来自专栏Java架构师历程

Docker与CI持续集成/CD持续部署

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器...

1092
来自专栏Java架构师历程

推介7个CI / CD(持续集成和持续部署)工具

越来越多的工程团队正在采用敏捷开发,推动更短,更快的发布周期。代码库增长和创建新生产构建的频率导致持续集成和持续部署/交付工具的兴起。

2772
来自专栏Hongten

给你八分钟搞定dedeCMS(织梦内容管理系统)

织梦内容管理系统(DedeCms) 以简单、实用、开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,在经历了二年多的发展,...

1922
来自专栏Android群英传

推送,从入门到放弃

802
来自专栏糊一笑

【react】开发一款城市选择组件

3623
来自专栏张善友的专栏

.NET应用服务器(中间件)来到

       Windows Server 2008 RTM发布了,迫不及待的安装了一个企业版本的,第一感觉不错,看到了激动人心的应用服务器。        应...

2185
来自专栏木子昭的博客

网盘可以良心到什么程度? 试试MEGA吧!

另外mega的浏览器插件也非常强大,如果你没有同步本地文件的需求, 可以安装浏览器插件https://chrome.google.com/w...

2403
来自专栏不想当开发的产品不是好测试

jacoco初探

覆盖率是衡量自动化用例效果产品的一个指标,但只是一个辅助指标,覆盖率高并不意味着质量好,但覆盖率低却能说明一些问题,

873

扫码关注云+社区