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

相关文章

来自专栏小白课代表

Proe5.0安装教程。

17930
来自专栏小程序解决方案的专栏

基于腾讯云智能语音的实时语音识别微信小程序的开发

微信小程序的基础库升级到了 1.6.0 之后,提供了许多新的 API,其中新增了录音管理的 API,不同于以前只有 wx.startRecord 和 wx.st...

11.7K140
来自专栏运维前线

阿里&百度&腾讯&facebook&Microsoft&Google开源项目汇总

BAT && YMFT Tencent GitHub地址:https://github.com/Tencent/tinker Tinker是Android的...

48180
来自专栏blackpiglet

如何在 Kubernetes 环境中搭建 MySQL (一):简介

  最近因为工作上的需求,搭建了一套部署在 Kubernetes 环境中的 MySQL,可能听起来就是让 MySQL 的 docker image 跑在 Kub...

16450
来自专栏Spark学习技巧

开源消息中间件Kafka在华泰证券的探索与实践

33230
来自专栏SAP最佳业务实践

SAP最佳业务实践:MM–有JIT交货计划的采购(230)-2计划协议

3、流程概览表 流程步骤业务角色事务代码预期结果创建计划协议采购员ME31L已创建计划协议维护交货计划采购员ME38已保存交货计划创建计划协议发布采购员ME84...

49550
来自专栏程序你好

微服务架构入门(Micro-Architecture)

14450
来自专栏XAI

初识Bluemix-基于Bluemix快速开发可具有Watson认知能力的IOT应用

参与IBM的“第八格”技术论坛,体验了一把基于Bluemix如何快速将一个IOT服务应用开发出来,用Node-red工具创建一个可视化应用。 NODE-RED ...

39380
来自专栏IT笔记

从零开始搭建ELK+GPE监控预警系统

前言 本文可能不会详细记录每一步实现的过程,但一定程度上可以引领小伙伴走向更开阔的视野,串联每个环节,呈现予你不一样的效果。 业务规模 8个平台 100+台服务...

63470
来自专栏极客猴

高并发的那些事

"高并发"对后台开发同学来说,既熟悉又陌生。熟悉是因为面试和工作经常会提及它。陌生的原由是服务器因高并发导致出现各位问题的情况少之又少。同时,想收获这方面的经验...

60430

扫码关注云+社区

领取腾讯云代金券