容器监控平台概览
1. 监控的意义和目的
监控是管理基础设施的核心工具。没有监控,我们将无法了解系统环境、进行诊断故障、制定容量计划,最糟的就是,故障发生了也不会被发现。
在上一节中,我们已经使用weaveScope搭建了一个容器监控管理系统,并带有一些基本的监控功能。但它对于自定义数据获取、自动告警、细化监控指标和展示的时候,生态、功能性和扩展性都有欠缺,系统及需求复杂时难以满足我们的定制化的监控需求。这时,我们就需要围绕Premetheus,配合其生态及相关工具,配置我们的监控平台。
2. Prometheus
Prometheus 的灵感来自 Google 的 Borgmon, 是由前 Google 工程师从 2012 年开始在 Soundcloud以开源软件的形式进行研发的系统监控和告警工具包,自此以后,许多公司和组织都采用了 Prometheus 作为监控告警工具。Prometheus 的开发者和用户社区非常活跃,它现在是一个独立的开源项目,可以独立于任何公司进行维护。
Prometheus 已被全球众多企业广泛使用,以满足上面提到的复杂的监控需求,当然,它也可以用来监控属于传统架构的资源。
Prometheus 的整体架构以及生态系统组件如下图所示:
2.1 基本原理
Prometheus 专注于现在正在发生的事情,而不是追踪数周或数月前的数据。Prometheus 通常不用于长期数据保留,默认保存 15 天的时间序列数据。它有这样一个前提,即大多数监控查询和警报都是从最近的数据中生成的。
Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。
大致工作流程如下:
2.2 Prometheus 的优势
Prometheus 的主要优势有:
3. Prometheus 的组件与生态
3.1 cAdvisor
Prometheus 支持了多种方法来监控 Docker,推荐的方法是使用 Google 的 cAdvisor 工具。cAdvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行cAdvisor用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。
cAdvisor是一个简单易用的工具,用户不用再登录到服务器中即可以可视化图表的形式查看主机上所有容器的运行状态。cAdvisor 作为 Docker 容器运行,它可以对宿主机上的资源及容器进行实时监控和性能数据采集,包括cpu使用情况、内存使用情况、网络吞吐量及文件系统使用情况。
3.2 Grafana
Prometheus本身的界面比较简洁,为了给 Prometheus 添加一个功能更全面的可视化界面,我们可以与开源仪表板工具 Grafana 集成。
Grafana 接受来自不同数据源的数据,提供可视化仪表板。它支持多种数据源。
Tips:
数据可视化既是一门非常强大的分析和解释技术。我们在查看可视化图像时,往往会从随机无关联的数据中找到有价值的联系,而数据的颗粒度或分辨率、表示数据的方式以及数据的规模可能会进一步加剧这种飞跃。
理想的可视化应该能够清晰地显示数据,避免不重要的数据堆砌,突出重点。
3.3 Alertmanager
Prometheus 服务器没有内置警报工具,而是将警报从 Prometheus 服务器推送到 Alertmanager警报管理器的单独服务器。Alertmanager 可以管理、整合和分发各种警报到不同目的地,并能够防止重复发送。
4. 小结
目前,Prometheus 已成为企业构建容器云架构的首选开源监控工具。下一节我们将进入实战环节,运用这些工具,搭建一个完整的监控平台。