对于容器环境来说 全栈监控究竟意味着什么?
来源:原创 时间:2017-07-28 浏览:5403 次关于大多数人来说,“全栈”(Full Stack)的意思极好了解。可是假如咱们的论题涉及到监控容器环境呢?全部作业就会开端变得有些含糊了。在这篇文章中,笔者探究了在这么的一个环境下,取得全栈可见性的不一样方面和也许会遇到的一些应战。
究竟啥全栈?
“全栈工程师”这个术语在2010年头被提出,表明在全部应用程序仓库中具有广泛技能的开发人员。包含前端和后端应用程序组件的组合,乃至包含基础设施层的代码表现。运用很多不一样的应用程序组件或微效劳的容器化应用程序的趋势,添加了现代应用程序仓库的复杂性。乃至有人批评了“全栈工程师”这个术语。
尽管关于一个人来说,了解应用程序每个有些的开发细节也许是不现实的(除非十分简略),可是应用程序在出产环境中运转时,一般需求仓库的一切层都具有可见性。这答应开发人员在应用程序或基础设施的恰当有些中迅速辨认疑问并采纳相应的举动。所以,在这篇文章中,咱们回来探究一个容器化应用程序的“全栈”可见性或监督方法。例如,仓库一般是啥姿态的?栈的不一样层的有关衡量是啥?搜集和剖析一切这些衡量规范需求啥功用?
容器仓库是啥样的?
在笔者的演示中,常常会运用下面的图画来阐明容器化应用程序中最首要的层是啥,并评论传统的单片应用程序之间的一些首要差异。实际上,跟着容器的运用和一些编列渠道的运用,还引入了额定的笼统层。如今,从一切这些层搜集衡量并将它们绑定在一起是十分首要的,能便利咱们彻底了解一个容器化的应用程序是怎么作业的。
需求搜集哪些目标?
依据上面的图画,为了取得咱们的应用程序的全栈可见性,咱们需求从下面的层中搜集功能目标:
·在基础设施中,咱们期望搜集不一样的资本目标,比方CPU、内存、磁盘、网络等等,也许来自物理效劳器或虚拟效劳器,也也许是云实例。在后一种情况下,这些目标一般能够经过某种API(如Amazon Cloudwatch)来访问,相同包含咱们在云渠道上运用的效劳的别的目标。
·一般,一个和谐器用于协助基础设施上的容器的布置、拓展和办理。Kubernetes(或许是Red Hat OpenShift之类的商品)和Docker Swarm是最受期待的技能。在这一层,咱们期望了解容器计数和容器动态,例如缩放工作。从和谐器中,咱们还能够搜集关于容器怎么与效劳绑定的效劳界说和联系。这答应咱们在效劳等级进行陈述,例如特定效劳的容器数量或别的有关目标。
·关于容器自身,咱们还期望了解每个容器和每个效劳的资本衡量,以及容器生命周期工作。此外,咱们期望了解容器内的应用程序是怎么运转的。这种所谓的容器监控为咱们供给了对于容器内运转的不一样效劳的应用程序特定的衡量规范。
·最终,咱们期望看到对最终用户的影响,并了解作为应用程序的消费者所取得的功能。这一般包含页面加载时刻、过错等前端目标,有时乃至能够添加事务目标来“监督真实首要的作业”。
别的的思考
从这些层搜集不一样的衡量规范自身现已是一个应战。大多数监控东西只重视其间的一个子集,由于它们是为传统的单片应用程序开发的。现代容器监控东西应当与上面说到的一切层进行集成,以供给完好的图画以及避免呈现盲点。
但这并不只是局限于衡量搜集。还有一些别的首要的思考事项,与衡量目标和工作的搜集方法有关。
·自动外表:思考到容器的时间短特性,新容器在启动时自动监控是至关首要的。这包含认识到现已启动了一个新的容器,以及在内部运转的效劳,以及怎么监督这些效劳。例如,在CoScale中,咱们运用一个丰厚的插件库来监控来自已知效劳的应用程序特定目标,如NGINX、Redis、MongoDB和很多别的效劳。
·别的,当将新节点添加到集群时,首要的是这些节点装备,而且装备了准确的监督署理和设置,这么你的监督就能够与环境进行弹性。这能够经过在Kubernetes中运用“DaemonSets”的概念或Docker Swarm的全球效劳来完结。
·另一个首要的思考要素是监督署理运转的方位和它们生成的开支。这是格外有关的,由于容器是轻量级且不可变的构造,应当尽也许少地受到影响。一些监控东西需求将署理添加到容器映像中,或许作为sidecar容器,这一般会添加很多的开支。别的东西,例如CoScale,只需求每个节点上的一个署理(一般是运转它自己的容器),开支添加最小。
·搜集数据是一回事,但了解它则是另一回事。为了取得准确的见地,需求对容器环境进行准确的可视化。一个挤满了一切容器的一切资本目标的图表的外表盘,并不是很有洞察力。你一般期望从高层次的效劳和集群的视图开端,然后在呈现疑问时能够进行深化的研讨。
·一起,对疑问自身的检查也具有应战性。容器和效劳的数量以及它们生成的衡量目标的数量现已致使了数据的众多。将其与容器的动态方面相结合,你就能够理解为啥经典的报警技能常常会失利。因而,在这么的环境中,更多的自我学习剖析技能,例如动态的基底和反常检查,是十分有价值的,而且有助于对疑问的自动检查。
·最终,在发现疑问的一起,还应当对它们进行修正。为此,需求搜集恰当数量的上下文信息来进行毛病扫除。这包含在疑问发作时发作的别的工作的有关性。是不是一切的特定效劳的容器都受到了影响,或许只是是一个?在哪里也有下流效劳的疑问?更具体的日志数据或盯梢信息能够协助解决疑问效劳的毛病。
定论
容器环境的完好仓库监控与单片应用程序监控是不一样的。典型的监控东西一般不能供给一切不一样层次的准确见地,而且很难处理容器环境的规划和动态。不管您方案运用开源解决方案仍是商业商品,上面的不一样思考都能够协助您挑选准确的东西,以确保您的环境彻底可见