我要介绍一款用于监视Docker的””监视工具””

image.png

数据在各种形式下是非常强大且有用的。收集到的数据能随时提供惊人的洞察力,对于决策优化、故障识别/容忍度和新功能的开发都非常有帮助。这些数据可能来自企业、软件应用程序的集合或容器。

容器已经成为最新软件架构中不可或缺的一部分,可以在独立的自包含环境中托管数据库、应用程序的一部分,甚至整个应用程序,而不依赖于主机服务器。因此,正确监视容器对于保持容器托管的应用程序的正常和高效运行是绝对必要的。

目前,Docker是容器領域中佔主導地位的力量,在2018年佔據了超過83%的所有生產環境容器。由於其廣受歡迎,Docker容器監控問題變成了一個選擇性的問題,因為存在著各種不同的工具可供選擇。從中進行選擇時,每個工具都有其優點和缺點。

在许多使用情况下,MetricFire是监控Docker容器的出色选择。 MetricFire是一个提供Graphite、Prometheus和Grafana主机版本的平台。MetricFire是基于这些开源工具构建的,它非常可定制化,并且在DevOps和SRE社区中广为人知的敏捷工具。而且,价格也非常实惠。请在这里预订MetricFire的免费演示,如果您有任何关于开始监控Docker容器所需的事项或问题,请随时咨询。

这篇文章的目的是提供细节介绍流行的Docker监控工具,并结合使用案例来帮助确定最佳工具的方法。

MetricFire

度量之火 (Dù zhī huǒ)

基于开源的Prometheus、Graphite和Grafana的MetricFire已经准备好在Docker容器中进行监控,可以立即使用默认的仪表板和插件。MetricFire基本上是提供开源项目的托管版本的服务,因此MetricFire可以执行几乎所有开源项目能做的事情。这包括所有由整个社区开发的适配器和插件。

image.png

MetricFire是一款终极工具,它集成了cAdvisor、Prometheus和Kubernetes,并用于监视Docker容器。MetricFire背后的技术由于开源工具的大规模社区支持,不断得到开发和演进。

简言之,选择MetricFire作为Docker监控工具后,您无需担心由于Docker和Kubernetes的快速发展,监控技术会过时。

MetricFire在中文区有14天的免费试用,您可以先预订免费演示,并咨询您的使用案例。

Docker 命令行界面(docker stats)

让我们来看一下由Docker自身提供的监视工具dockerstats命令。在终端中运行此命令会返回一个实时数据流,该数据流涵盖容器的资源消耗,并提供基本的度量指标。

在这些指标中,包括各种正在运行的容器的容器ID、CPU、内存和网络使用情况。如果要列出单个容器的指标而不是所有正在运行的容器,则只需在命令的最后添加该容器的容器ID。以下是一个例子。

image.png

在上述示例中,我们只获取容器标识为fb649db2dc20的容器的指标。使用–no-stream选项来禁用流统计,并且只拉取第一次的结果。

如果在没有该标志的情况下执行此命令,则会持续轮询和显示这些指标,直到手动停止进程。有关此命令的其他有用标志可以在Docker文档中找到。

然而,docker stats命令不支持任何形式的数据可视化。它仅以原始数据的形式在终端上显示指标。因此,它对于快速查看容器状态和状态非常有用,但在需要详细监控或可视化监控仪表板的情况下,它的价值不高。对于长期监控,我们推荐使用Grafana进行优秀的可视化。

cAdvisor (容器监控)

cAdvisor 是由 Google 管理的开源容器监控工具。由于集成了对 Docker 或者其他类型容器的支持,使用 cAdvisor 可以收集几乎所有类型的正在运行的容器的数据。它由一个单一的执行守护程序组成,用于收集、处理、聚合和导出与正在运行的容器相关的信息。

这些信息可以从内嵌的用户界面进行导出和显示,也可以导出到更大的监控平台进行分析和可视化。但是需要注意的是,cAdvisor只显示与容器性能特定方面相关的常见数据,例如内存和CPU使用率等,尽管在监控容器时会收集大量的指标数据,因此Web用户界面受到相当大的限制。以下是cAdvisor仪表板的示例。

image.png

为了访问cAdvisor收集的详细指标,可以使用存储插件将这些指标导出到更大的监控系统或存储系统中,并且可以从那里进行处理。要了解如何使用cAdvisor监控Docker容器的详细信息,请参阅本文。此外,还可以考虑将cAdvisor与MetricFire集成,以享受两者的优点。

普罗米修斯

Prometheus是一款非常受欢迎的开源监控和告警系统。与大多数监控工具(需要在监控对象上的容器上安装代理来收集和发送指标)使用推送机制来收集指标不同,Prometheus使用拉取机制(轮询)来收集指标。

在Pull-Based系统中,容器/服务器将指标端点公开给Prometheus,而Prometheus会以可配置的间隔从这些端点获取指标数据。

接下来,Prometheus会处理和聚合这些数据,并通过使用内置的表达式浏览器显示数据,或使用可视化工具如Grafana来构建充满洞察力的仪表板。

Prometheus提供了大量的客户端库,通过与轮询机制结合,实现了对各种客户端的集成。

基本上,要將指標引入Prometheus,需要使用適當的客戶端程式庫在應用程式代碼中,使用應用程式實例上的HTTP端點來定義和公開這些指標(由客戶端程式庫創建的指標稱為自訂指標)。

您可以在此处找到一个完整的教程,其中包含将Redis数据库指标导入到Prometheus的示例。Prometheus可以抓取这些指标,并使用表达式浏览器或类似Grafana的可视化工具来对它们进行可视化。以下是Prometheus表达式浏览器的示例。

image.png

通过使用这些客户端库,将适当的库集成并公开想要公开的自定义指标,可以监视在Docker容器中运行的应用程序。然而,无法使用这些库获取以下Docker容器指标,例如容器的CPU或内存使用量。

这是通过使用容器导出程序直接将Docker容器指标导出到Prometheus来实现的。但是,容器导出程序方法已经被弃用,现在使用cAdvisor来监视容器指标,并将它们公开到Prometheus中,就像前面提到的那样。

选择使用Prometheus时,需要权衡许多配置和维护工作。如果您希望优先选择能够立即使用的Prometheus实例,并跳过这些配置和维护的瓶颈,则可以注册MetricFire提供的Prometheus托管工具Hosted Prometheus的免费演示,并与团队直接交流。

总结

考虑到容器化架构和Docker的普遍受欢迎,还有一些其他监控选项可供选择。其中包括Datadog、Sysdig、SolarWinds、NewRelic、SignalFx等等。

每个都有优点和缺点,架构也是不同的。有基于代理的和云主机类型的两种。从众多选项中做出选择可能很困难,但选择哪种在很大程度上取决于用例或最终目标。

如果您需要决策帮助,请预约一场演示并与MetricFire联系。我们是监控专家,将指导您朝着最佳的监控设置迈进。祝您监控愉快!

广告
将在 10 秒后关闭
bannerAds