用于监视Kubernetes和Docker的六大开源工具

6-tools1.jpg

Kubernetes和Docker是现代DevOps中最常听到的两个流行词。 Docker是使您可以容器化和运行应用程序的工具,而Kubernetes为您提供了一个平台来编排或管理这些容器--由于使用Docker CLI手动管理成千上万个容器是一个现实的噩梦。数据库

可是,仅运行数千个容器并经过Kubernetes管理它们是不够的。您必须正确观察和分析它们,以确保您的服务正常运行。此过程称为站点可靠性工程(SRE),这是Google发起并推广的术语。可观察性和分析是SRE的主要内容。它能够细分为如下三个领域:安全

  • 监控,您能够从应用程序和资源中提取数值指标,而后能够对其进行可视化和分析,以显示资源的当前状态。提取度量后,就能够将它们用于设置警报规则,简化配置和调试以及作出更好的SRE决策。
  • 日志 使开发人员能够在发生故障时调试其容器。容器是短命的,日志也是如此。 Kubernetes和Docker确实提供了一种浏览容器日志的本地方法,可是其功能很是有限。所以,在任何面向容器的环境中,都必须有一个集中式日志平面。
  • 跟踪 使您能够调试网络上运行的服务,并遵循请求跟踪,直到能够肯定问题的根源。在微服务体系结构中,当多个服务/容器相互发送请求以执行一项业务任务时,适当的跟踪解决方案是必要的。

本文将描述用于监视和分析容器形态运行的服务最有效的开源工具。服务器

Prometheus

Prometheus是讨论开源监控解决方案时想到的第一个工具。它在开发社区中很是受欢迎,而且是CNCF项目的毕业生,该项目专一于SRE的监视方面。 Prometheus最初是由SoundCloud建立并开源的,它简化了从给定指标端点基于时间序列提取数字指标的过程。它旨在监视高度动态的容器环境。网络

Prometheus分为三个元素:Prometheus服务器,Alertmanager和Exporter。Exporter是独立的,独立的进程/容器,能够在目标资源上运行,以经过度量标准API生成和导出度量标准。而后,Prometheus服务器负责服务发现以及从Exporter程序中提取指标以存储在Prometheus DB中,并随后用于可视化或警报。 Alertmanager负责设置警报规则,分析Prometheus DB中的数据,并在触发特定规则时将警报消息发送给多个接收者。这里列出了大量Exporters,这些Exporters都获得了普罗米修斯的正式支持和社区的维护。架构

Prometheus已成为监视云原生架构的行业标准。虽然它以其服务发现的简单性,易用性,警报能力以及与Kubernetes的集成而闻名,但其轮询体系结构并不理想。当前,Prometheus服务器必须能够访问度量标准终结点。可是,在Prometheus中实现了一个Pushgateway,它支持度量推送而不是轮询。普罗米修斯的另外一个缺点是伸缩性很差。这个问题能够在Prometheus的Thanos中获得解决。分布式

相关工具和技术:Grafana,Cortex,Thanos,Prometheus exporter,Alertmanager,Istio,Prometheus operator。ide

Ribenzaft_1.png

Grafana

Grafana是一个开源指标分析和可视化套件。它容许您使用从多个来源(例如Prometheus,Elasticsearch,MySQL,Postgres和Redis)得到的数据建立自定义仪表板。此外,Grafana拥有本身的警报系统和基于角色的软件访问控制(RBAC)系统。做为数据可视化工具,Grafana在Prometheus用户中享有盛誉,由于它们使他们可以有效地可视化Prometheus中存储的指标。 Grafana中有各类官方和社区构建的自定义仪表板,可用于各类数据源,使用户能够轻松设置仪表板(在此连接中找到)并继续进行监视。 Grafana提供了另外一个名为Loki的关联产品,该产品在Kubernetes中汇总日志并与Grafana UI很好地集成。微服务

相关工具和技术:Loki,Prometheus。工具

Ribenzaft_2.png

Elastic Stack

Elastic Stack是Elastic的一组开源产品,旨在帮助用户实时搜索,分析和可视化来自任何类型的源的任何格式的数据。该产品之前被认为是ELK堆栈,首字母缩写词表明该公司的主要产品之一:Elasticsearch,Logstash和Kibana。 Elastic Stack借助其大数据数据库Elasticsearch提供监视和日志记录解决方案。性能

为了聚合日志,人们倾向于使用Elasticsearch进行存储,使用Logstash或Fluentd进行日志流传输,以及使用Kibana进行可视化。 Fluentd不是Elastic Stack的一部分,可是它普遍用于Kubernetes,以代替Logstash(Elastic Stack提供的工具)流式传输日志。一样,Metricbeat用于刮擦指标并在Kibana上设置可视化效果。企业版Elastic Stack随附X-Pack,X-Pack是一组附加工具,可用于报告,警报和基于角色的访问控制(RBAC)等功能。默认状况下,Elastic Stack GUI Kibana不支持RBAC。您必须使用前面提到的Elastic Stack企业版来启用它。

相关工具和技术:X-pack,Metricbeat,Logstash,Kibana。

Ribenzaft_3.png

Sensu Go

Sensu Go是用于大规模多云监视的遥测和服务运行情况检查解决方案。它使您能够了解任何公共或私有云中的服务器,容器,服务,应用程序,功能和链接的设备。 Sensu能够与Prometheus一块儿运行以从两种解决方案中得到最大收益,也能够在没有Prometheus的状况下本机运行。 Sensu与Prometheus一块儿工做得最好,由于将应用程序级别指标导出到Prometheus须要将Prometheus SDK加载到您的应用程序代码库并公开指标端点。而后将端点刮擦并存储在Prometheus Server中。这听起来可能须要作不少工做,有时确实如此。 Sensu经过使用Sidecar概念避免了这种复杂性。 Sensu代理与您的应用程序一块儿部署。代理不断收集指标并将其公开给Prometheus服务器,而无需更改应用程序代码库。

Sensu没有Prometheus。它能够在Kubernetes中本地运行,在Kubernetes中,它拥有本身的服务器来存储和可视化由前面提到的Sensu代理公开的指标数据。

相关工具和技术:Prometheus。

Ribenzaft_4.png

Sysdig Inspect

Sysdig有两个开源产品:Sysdig Inspect和Falco。在这里,咱们将重点关注Inspect,它能够监视和捕获系统中运行的容器进程,并容许您深刻研究这些进程以进行事件后取证。这使您可以分析应用程序性能,排除错误并监视可能出现异常的全部处理器。此外,若是系统受到破坏,则Sysdig可以让您了解破坏发生的方式以及在此过程当中获取了哪些数据。 Sysdig Inspect是一个很是强大的工具,专一于系统的性能调整和安全检测。

相关工具和技术:Grafana,Sysdig,Sysdig Falco。

Ribenzaft_5.png

Jaeger

Jaeger是Uber Engineering开源的端到端分布式跟踪解决方案。它使您能够监视复杂的分布式系统中的事务并进行故障排除。在现代微服务体系结构中,大多数操做问题都属于网络和可观察性的范畴。发生服务故障时,您不知道请求如何经过网络在服务之间传递以完成单个业务事务。这使得调试很是困难。 Jaeger目前正在CNCF下孵化,Jaeger使用跟踪来启用根本缘由分析,性能和延迟优化以及分布式事务监视。 Jaeger与Istio开箱即用,Istio是Google开源的一种流行的服务网格实现。

相关工具和技术:Prometheus,Jaeger,Zipkin,Istio。

Ribenzaft_6-1536x1071.png

结论

这些工具在技术行业中被普遍使用,而且它们都有本身的优点。可是,这些解决方案中的大多数都须要熟练的实施和持续的手动维护,这可能会对DevOps团队形成负担,并分散企业的精力。没有一种解决方案能够知足您的全部需求,由于每种工具都专一于可观察性和分析的一个或两个特定方面。经过将这些工具混合在一块儿,能够为您的我的业务需求提供独特的解决方案。

为了便于比较,下面的图表概述了本文讨论的每种工具提供的功能。

Ribenzaft_7.jpg

相关文章
相关标签/搜索