热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

容器领域的十大监控系统对比(上)

容器监测环境有多种形态和大小。有些是开源的,而另一些则是商业性质的。有些可以借助平台一键部署(例如在Rancher容器管理平台的应用目录中一键部署这些监控应用),而另一些则需要手动配置。有些是通用的,有些是专门针对容器环境的。有些托管在公有云中,而另一些则需要在自己的集群主机上安装。

在本文中,我将对容器领域的10个监控解决方案进行全面的分析对比。监控解决方案的数量之多令人望而生畏。新的解决方案不断涌现,同时现有的解决方案不断发展。我没有深入研究每个解决方案,而是采取了high-level的对比方法。通过这种方法,读者可以“缩小列表”,并能针对自身需求进行更认真的评估,从而选出最适合的解决方案。


本文将介绍并对比的监控解决方案包括:

  • 原生Docker
  • cAdvisor

  • Scout

  • Pingdom

  • Datadog

  • Sysdig

  • Prometheus

  • Heapster / GrafanaPingdom

  • ELK

  • Sensu

在本篇中将介绍前5个解决方案。
在以下章节中,我提出了一个对比监控解决方案的架构,并对每个解决方案进行了高级对比,然后通过讨论每个解决方案将如何与Rancher协同工作,从而更详细地讨论每个解决方案的细节。我还会在最后谈谈一些其它的监控解决方案,这些方案未被纳入本文的“十大”中,但你也可能遇到过。

对比架构

客观地对比监控解决方案面临的一个挑战是,解决方案的架构、功能、部署模型和成本可能会有很大的差异。一个解决方案可以从单个主机提取和绘制docker相关的数据,而另一个解决方案则可以从许多主机收集数据,测量应用程序响应时间,并在特定条件下发送自动警报。

在对比解决方案时,先确定一个对比架构,将会为后期的对比工作带来很大帮助。我有些武断地提出了如下图的对比架构,以大多数监控解决方案都具有的功能层,来作为我对比的基础。这个对比架构可以分为7层:

容器领域的十大监控系统对比(上)

主机代理——主机代理代表监控解决方案的“肢体”,它会从各种来源(如API和日志文件)提取时间序列数据。主机代理通常安装在每个集群主机上(无论是本地还是云端),并且它们通常被打包成Docker容器,以便部署和管理。

数据收集架构——虽然单主机数据有时很有用,但管理员可能需要所有主机和应用程序的统一视图。监控解决方案通常具备一些机制来收集每个主机的数据,并将其保存在共享数据存储区中。

数据存储——数据存储可能是传统的数据库,但更常见的一种形式是可伸缩的分布式数据库,由键值对组成的时间序列数据进行了优化。有些解决方案具有原生数据存储,而其他解决方案则使用的是开源的数据存储插件。

聚合引擎——要存储来自数十个主机的原始数据,可能遇见的一大问题是数据量会变得过大。监控架构通常提供数据聚合功能,定期将原始数据转换为统一的度量标准(比如每小时或每日进行汇总),清除不再需要的旧数据,或以某种方式重新分解数据,以支持预期的查询和分析。

过滤和分析——一个监控解决方案就像是你从数据中获得的洞察力。不同的监控解决方案之间,筛选和分析的能力常常差别很大。有些解决方案仅支持以简单的时间序列图表的形式来进行一些预先打包的查询, 而另一些则具有可自定义的仪表板、嵌入式查询语言和复杂的分析功能。

可视化层——监控工具通常具有可视化层,用户可以在其中与 web 界面进行交互以生成图表、制定查询以及在某些情况下定义警报条件。可视化层可能与筛选和分析功能紧密耦合, 也可能根据解决方案而与其分开。

告警和通知——很少管理员有时间整天坐着、时刻关注监控图表。监控系统的另一个常见特性是告警子系统,如果达到或超过了预定义的阈值,可以向管理员发出通知。

除了解每个监控解决方案如何实现上述基本功能之外,如下方面也是用户在选择监控解决方案时应该注意与考量的:
解决方案的完整性

  • 是否易于安装和配置

  • 关于web用户界面的详细信息

  • 是否能够将警报转发至外部服务

  • 社区支持和参与程度(若该方案为开源项目)

  • Rancher应用程序目录中的可用性

  • 支持监控非容器环境和应用程序

  • 原生Kubernetes支持(Pods、Services、Namespaces等)
  • 可扩展性(API,其他接口)
  • 部署模式(自主托管、云上托管)

  • 成本

10大监控解决方案的对比

下图以high-level的形式展示了我们提出的的10个监控解决方案如何对应我们在上文提出的七层对比模型,哪些组件实现了每层功能,以及组件的所在位置。每个框架都是极其复杂的,下图的对比方式毋庸置疑是一种简化,不过它也会给大家提供一个有用的视角来了解各个组件的功能。

容器领域的十大监控系统对比(上)

下图的摘要介绍了每个监控解决方案的附加属性。其中某些解决方案有多个部署选项,所以它们之间的对比就变得更加细微。

容器领域的十大监控系统对比(上)

个解决方案的深入研究

1,DOCKER STATS

https://www.docker.com/docker-community
Docker通过docker stats命令为Docker主机提供了内置命令监控功能。管理员可以查询Docker守护进程,并获取有关容器资源消耗数据的详细实时信息,包括CPU和内存使用、磁盘和网络I/O以及正在运行的进程数。Docker stats利用Docker引擎API来检索这些信息。Docker统计信息没有历史概念,它只能监控单个主机,但聪明的管理员可以编写脚本从多个主机收集数据

Docker stats本身用处有限,但Docker统计数据可以与其他数据源(如Docker日志文件和Docker事件)结合使用,以满足更高级别的监控服务。Docker只能得到单个主机报告的数据,所以Docker stats对于使用多主机应用程序服务的Kubernetes或对Swarm集群进行监控的能力有限。由于没有可视化界面,没有聚合,没有数据存储,也无法从多个主机收集数据,所以Docker的统计数据对我们的七层模型来说并不太适用。由于Rancher在Docker上运行,Rancher用户可以自动使用基本的docker stats功能。

2,CADVISOR

https://github.com/google/cadvisor
cAdvisor是一个开源项目,好比 Docker stats向用户提供关于运行容器的资源使用信息。cAdvisor最初是由谷歌开发的,用于管理其lmctfy容器,但它现在也支持Docker。作为守护进程,它收集、聚集、处理和导出关于运行容器的信息。

cAdvisor有一个web界面,可以生成多个图表,但是像Docker stats一样,它只监控一个Docker主机。它可以作为容器安装在Docker machine上,也可以在Docker主机本身上安装。

cAdvisor本身只保留60秒的信息。需要将cAdvisor设置为将数据记录到外部数据存储库中。常用于cAdvisor数据的数据存储库包括Prometheus和InfluxDB。虽然cAdvisor本身并不是一个完整的监控解决方案,但它通常是其他监控解决方案的组成部分。在Rancher版本1.2前,Rancher在Rancher agent中嵌入了cAdvisor(用于Rancher的内部使用),但现在已经不是这样了。最新版本的Rancher使用Docker统计来收集通过Rancher UI公开的信息,因为它们可以减少开销。

管理员可以轻松地在Rancher上部署cAdvisor,它是几个综合监控堆栈的一部分,但是cAdvisor不再是Rancher本身的一部分。

3,SCOUT

http://scoutapp.com
Scout是一家总部位于科罗拉多州的公司,它提供基于云的应用程序和数据库监控服务,主要针对Ruby和Elixir环境。其现有的监控和警报架构使其能够监控Docker容器。

我们提到Scout,因为之前在比较监控Docker的解决方案时就提到了它。通过灵活的告警和与第三方告警服务的集成,Scout提供全面的数据收集、过滤和监控功能。

Scout的团队提供了如何使用Ruby和StatsD编写脚本的指导,以利用Docker Stats API、Docker Event API和传递数据来监控这些脚本。他们还打包了一个Docker - scout容器,可以在Docker Hub(scoutapp / Docker - scout)上使用,这就使安装和配置scout代理变得更简单。易用性取决于用户是自行配置StatsD代理,还是使用打包的docker-scout容器。

作为一种托管云服务,ScoutApp可以在快速启动并运行容器监控解决方案时省去许多麻烦。如果您正在部署Ruby应用程序或运行Scout支持的数据库环境,使用Scout解决方案,可以帮助您很好地整合您的Docker、应用程序和数据库级别的监控。

但是,用户可能需要注意一些事项。在大多数服务级别上,该平台只允许保留30天的数据,而不是每个被监控的主机。至于价格,每月定价的标准套餐价格从99美元到299美元不等。这一开箱即用的解决方案只能提取和传递有限的指标,也不太适用于Kubernetes相关的监控。此外,虽然docker-scout在Docker Hub上可用,但开发是由Pingdom完成的,在过去的两年中,Scout的代理组件只有很小的更新。

Rancher自身并不默认原生支持Scout,但由于Scout是云服务,所以它在Rancher中很容易部署和使用,特别是当使用基于容器的代理时。目前,docker-scout代理不在Rancher应用程序目录中。

4,PINGDOM

http://pingdom.com
上文中我们提到Scout作为云托管的应用程序,因此还需要提到一个类似的解决方案,称为Pingdom。Pingdom是由德克萨斯州奥斯汀市的SolarWinds公司运营的托管云服务,它是一家专注于监控IT基础架构的公司。Pingdom的主要用例是网站监控,作为服务器监控平台的一部分,Pingdom提供了大约90个插件。事实上,Pingdom维护docker-scout,同样地,Scout也使用 StatsD代理。

Pingdom值得关注的原因在于,它灵活的定价方案似乎更适合监控Docker环境。用户可以根据计划收集到的StatsD数据数(每10个数据每月要价1美元)在基于每个服务器的计划之间进行选择。Pingdom易于设置和管理,对于需要一个完整的监视解决方案的用户以及希望监控容器管理平台之外的其他服务的用户而言,Pingdom非常合适。像Scout一样,Pingdom是一种云服务,并且易于同Rancher结合使用。

5,DATADOG

https://www.datadoghq.com/
Datadog是另一个类似于Scout和Pingdom的商业托管云监控服务。 Datadog还提供了一个Dockerized agent,用于在每个Docker主机上进行安装;然而,Datadog并没有像前面提到的云监控解决方案那样使用StatsD,而是开发了一种增强的StatsD,称为DogStatsD。Datadog代理收集并传递Docker API提供的完整数据,从而进行更详实、细致的监控。

虽然Datadog不能原生支持Rancher,但是Rancher UI中有Datadog目录,用户可以在Rancher上轻松地安装和配置Datadog agent。用户还可以使用Rancher 标签,Datadog中的报告反映了您在Rancher中用于主机和应用程序的标签。与前面提到的云服务相比,Datadog能够提供更好的数据访问权限和更精细的定义警报条件。与其他服务一样,Datadog也可用于监视其他服务和应用程序,并拥有超过200个集成的库。Datadog还能保留18个月的全分辨率数据,这比云服务要更长。

与其他云服务相比,Datadog的优势在于它具有超越Docker的集成功能,并且可以从Kubernetes、Mesos、etcd和其他在您的Rancher环境中运行的服务中收集数据。对于在Rancher上运行Kubernetes的用户来说,这种多功能性是很重要的,因为他们希望能够监控诸如Kubernetes pods、服务、名称空间和kubelet health之类的数据。Datadog-Kubernetes监控解决方案通过Kubernetes中的DaemonSets,能够自动将数据收集代理部署到每个集群节点。

Datadog的定价为每台主机每月约15美元,总价会根据用户需要的服务和每个主机监控的容器数量相应增加。

结 语

在下篇文章中,我们将继续对比另外五大监控方案:Sysdig、Prometheus、Heapster/GrafanaPingdom、ELK和Sensu,敬请保持关注。

【作者简介】

Gord Sissons,加拿大多伦多咨询公司StoryTek的首席顾问。Gord在HPC、大数据和集群管理等领域拥有超过25年的IT行业经验。他毕业于安大略省渥太华的卡尔顿大学,拥有系统和计算机工程学位。


推荐阅读
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • Parallels Desktop for Mac 是一款功能强大的虚拟化软件,能够在不重启的情况下实现在同一台电脑上无缝切换和使用 Windows 和 macOS 系统中的各种应用程序。该软件不仅提供了高效稳定的性能,还支持多种高级功能,如拖放文件、共享剪贴板等,极大地提升了用户的生产力和使用体验。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 为开发者提供了一系列实用的参考网站和资源链接,包括HTML速查手册( 和 ),帮助开发者快速查找和学习相关技术知识。此外,还涵盖了其他重要的开发工具和文档,为编程工作提供全面支持。 ... [详细]
  • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • RancherOS 是由 Rancher Labs 开发的一款专为 Docker 设计的轻量级 Linux 发行版,提供了一个全面的 Docker 运行环境。其引导镜像仅 20MB,非常适合在资源受限的环境中部署。本文将详细介绍如何在 ESXi 虚拟化平台上安装和配置 RancherOS,帮助用户快速搭建高效、稳定的容器化应用环境。 ... [详细]
  • 本书《.NET Core 2.* 开发者指南》是面向开发者的全面学习与实践手册,涵盖了从基础到高级的各个层面。书中详细解析了 .NET Core 的核心概念,包括如何创建 .NET Core 网站,并通过视频教程直观展示操作过程。此外,还深入探讨了 Startup 类的作用、项目目录结构的组织方式以及如何在应用中使用静态文件等内容。对于希望深入了解 .NET Core 架构和开发技巧的开发者来说,本书提供了丰富的实践案例和详尽的技术指导。 ... [详细]
  • prometheus09-k8s部署grafana
    1.部署grafana?apiVersion:?appsv1?kind:?StatefulSet?metadata:??name:?grafana??namespace:?kube-systemspec:??serviceName:?grafana??repl ... [详细]
  • Linux下安装grafana并且添加influxdb监控的方法
    这篇文章主要介绍了Linux下安装grafana并且添加influxdb监控的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值, ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
author-avatar
尖塔顶的Cat
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有