集装箱时代的分布式记录(第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 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

【Golang语言社区】GO1.9 map并发安全测试

var m sync.Map //全局 func maintest() { // 第一个 YongHuomap := make(map[st...

6418
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

46010
来自专栏转载gongluck的CSDN博客

cocos2dx 打灰机

#include "GamePlane.h" #include "PlaneSprite.h" #include "BulletNode.h" #include...

8976
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.6K7
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

3346
来自专栏张善友的专栏

LINQ via C# 系列文章

LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C...

3565
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

3277
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

5598
来自专栏一个会写诗的程序员的博客

Spring Reactor 项目核心库Reactor Core

Non-Blocking Reactive Streams Foundation for the JVM both implementing a Reactiv...

3502
来自专栏魂祭心

原 canvas绘制clock

5904

扫码关注云+社区