Prometheus与Grafana VS. Sysdig与Sysdig Monitor


Docker从2013年登场开始人气一路飙升,这家公司已经彻底改变了应用程序的管理方式。如今的文章讨论的不再是采用容器的理由,更多的是如何应对广泛的容器开发所带来的挑战。容器提升了开发过程中的速度和性能,同时也提升了日志、编排、安全及可见度等方面的复杂性。不过,处理容器集群所带来的扩展问题、短暂性质以及庞大的数据量正是容器监控方案(如PrometheusSysdig)所要解决的挑战。

本文旨在对两个用于采集指标的主要解决方案进行比较,探讨Prometheus和Sysdig这两个流行的容器监控方案及为其提供容器完整可见性的可视化工具(分别是GrafanaSysdig Monitor)。

我从易于部署、所提供指标的复杂性、聚合程度以及所提供的告警能力等方面建立了评估这两个容器监控方案的评价标准。对于可视化工具,我评估了其安装、与其宿主机监控方案的整合程度、自定义规格的简易性以及总体布局与观感等几个方面。

Prometheus与Grafana

Soundcloud开发的Prometheus是一款开源的自主托管监控解决方案,它为多维度指标提供了一系列工具集,包括聚合、告警、存储和可视化等。其查询语言相当灵活且易于掌握,绘图与告警可使用相同的语言,从而使得整个容器监控任务变得更加简单。

此外,用户还可以通过在不同的数据中心/区域运行相同的Prometheus服务器来实现Prometheus的高可用性。这样,如果某个区域出现故障,其他区域的监控系统仍然可以访问。

Grafana

Prometheus推荐使用Grafana实现数据可视化。二者相辅相成,因为Grafana与Prometheus一样使用多种数据源类型。使用Grafana建立一个完备的仪表板需要花点时间,不过有大量的文档可以帮助用户完成整个过程。此外,一旦构建完成,Grafana仪表板也可以轻松扩展以覆盖多个Docker宿主机。要监控更多的宿主机,只需在每台宿主机上部署一个Node Exporter和一个cAdvisor容器,然后通知Prometheus服务器进行抓取即可。

Prometheus优点

  • 它是一个功能强大且易于使用的监控工具
  • 它使用容器部署整个技术栈
  • 该方案为分布式系统和基础设施而生
  • 它提供了不依赖于分布式存储的可扩展的数据采集功能
  • 由于采用基于拉取的方法(通过HTTP获取目标的所有指标),其扩展性优良
  • 它使用灵活的服务发现,内置了对Azure、Consul、Docker、EC2和Kubernetes的支持
  • 它具有一个活跃的响应式社区
  • 不涉及成本


Prometheus的生态系统非常庞大,这意味着用户可以找到多种编程语言(包括Java、Go、Python、.NET、PHP、Ruby等)的客户端库。

Prometheus缺点

  • 它未内建仪表盘,要将指标可视化需要使用Grafana
  • 要将二者设置成所需方式需要进行大量的试验和排错
  • 它不提供持久的长期存储或异常检测
  • 它不提供大型企业可能需要的自动水平扩展或用户管理


Prometheus指标回顾

评分表(最高5分)
  • 易于部署:✔✔✔
  • 指标细节:✔✔✔✔✔
  • 聚合程度:✔✔✔✔✔
  • 告警能力:✔✔✔✔


Grafana指标回顾

评分表(最高5分)
  • 易于安装:✔✔✔
  • (与Prometheus的)整合程度:✔✔✔✔
  • 易于定制:✔✔✔✔
  • 布局和观感:✔✔✔✔✔


Sysdig与Sysdig Monitor

另一个自托管服务Sysdig也提供了简化Docker监控所需的容器编排工具,包括指标聚合等等。

Sysdig实际上分成两个部分:开源版本,它需要在宿主机操作系统上安装内核头文件;云端/本地部分,它使用开放版本传输从Sysdig自有服务器采集的指标。由于该方案会挂接到宿主机内核中,它无须从Docker守护进程获取指标。另外,在运行Docker Stats命令并使用cAdvisor时,Sysdig的开源版本可以获得容器的实时视图。

Sysdig Monitor

Sysdig Monitor(此前称之为Sysdig Cloud)会自动发现环境中的所有容器,并将它们显示在用户选择的几个预配置仪表板上。它通过一个单一集合点捕获应用程序、容器、宿主机和StatsD指标。该方案为实时和历史数据提供了强大的可视化工具,部署会以图形或表格形式展示出来。因为能够深入到容器的单独进程,该仪表板具有强大的告警功能应对可能出现的问题。

Sysdig优点

  • 支持所有Linux技术,包括Docker、Kubernetes、Mesos等等
  • 采集所有类型的数据,包括Docker和Kubernetes事件日志以及来自容器编排工具的元数据
  • 具有常见服务的过滤器,包括Apache Tomcat、NGINX、MongoDB、PHP-FPM和PostgreSQL,可深入了解数据库性能
  • 可以深入单个容器中查看单个进程正在使用的资源
  • 可挂接到编排工具中通过pod、集群、名称空间等排除故障
  • 记录并重放系统活动
  • 告警功能可以将不同的警报发送给不同的Email
  • 团队功能让管理员可以控制仪表板、数据和警报的团队访问权限


Sysdig缺点

  • 在宿主机操作系统上安装内核头文件是一件痛苦的事
  • UI需要花点时间才能习惯
  • 付费方案起步价20美元,价格根据需求变化,相比Prometheus算是一个昂贵的解决方案


Sysdig指标回顾

评分表(最高5分)
  • 易于部署:✔✔✔
  • 指标细节:✔✔✔✔✔
  • 聚合程度:✔✔✔✔✔
  • 告警能力:✔✔✔✔


Sysdig Monitor指标回顾

评分表(最高5分)
  • 易于安装:✔✔✔✔
  • (与Sysdig的)整合程度:✔✔✔✔✔
  • 易于定制:✔✔✔✔
  • 布局和观感:✔✔✔


概述

从根本上说,选择合适的容器监控解决方案会涉及很多事情。其中是主要的是需求及(可能是最重要的)预算。在两种监控工具中,Sysdig(与Sysdig Monitor一起)更容易设置并可立即投入使用。相比之下,Prometheus和Grafana则需要更多的时间和耐心进行配置,尽管其回报是该方案将完全根据需求量身定制。

此外,作为托管解决方案,Sysdig每年费用不菲,而Prometheus是开源且免费的。这两种工具都得到了活跃社区的支持,通过这些社区可获得相应帮助和支持,不过,Prometheus的社区更大更成熟。简而言之,请根据成本和偏好选择合适的工具,因为这二者都会继续扩展并可能实现你的需求。

原文链接:Container Monitoring: Prometheus and Grafana Vs. Sysdig and Sysdig Monitor(翻译:梁晓勇

0 个评论

要回复文章请先登录注册