热门标签 | 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行业经验。他毕业于安大略省渥太华的卡尔顿大学,拥有系统和计算机工程学位。


推荐阅读
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 华为捐赠欧拉操作系统,承诺不推商用版
    华为近日宣布将欧拉开源操作系统捐赠给开放原子开源基金会,并承诺不会推出欧拉的商用发行版。此举旨在推动欧拉和鸿蒙操作系统的全场景融合与生态发展。 ... [详细]
  • RocketMQ在秒杀时的应用
    目录一、RocketMQ是什么二、broker和nameserver2.1Broker2.2NameServer三、MQ在秒杀场景下的应用3.1利用MQ进行异步操作3. ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • 回顾过去十多年的开发经历,我在技术能力、培训机会、国际视野以及大型企业的工作经验方面都有了显著的提升。特别是从最初的月薪8k到如今的38k,这一过程中,我深刻体会到系统化学习对提升架构能力的重要性。最初踏入职场时,面对众多未知,我主要依赖团队领导的指导,专注于编写代码、管理数据库和进行测试。随着经验的积累和技术的不断进步,我逐渐意识到,只有通过系统化的学习和实践,才能在技术领域取得更大的突破。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
author-avatar
潘巧军_837
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有