深入浅出Prometheus:原理、应用、源码与拓展详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1 第1篇 Prometheus原理

第1章 监控

1.1 监控系统概览

监控系统在这里特指对数据中心的监控,主要针对数据中心内的硬件和软件进行监控和告警。企业的IT架构逐步从传统的物理服务器,迁移到以虚拟机为主导的IaaS云,抑或当前流行的容器云PaaS平台。无论基础架构如何调整,都离不开监控系统的支撑。不仅如此,越来越复杂的数据中心环境,对监控系统提出了越来越高的要求:需要监控不同的对象,例如容器、分布式存储、SDN 网络、分布式系统、各种应用程序等,种类繁多;还需要采集和存储大量的监控数据,例如每天数 TB数据的采集汇总,以及基于这些监控数据的智能分析、告警及预警等。

监控系统除了能提供实时监控和告警,还能辅助决策,所有决策都以数据为支撑,而非主观臆断。在大数据时代,数据变得越来越重要,监控数据不仅能提供实时状态展现,更能帮助故障回溯和预测风险等。当我们充分了解当前数据中心的真实资源使用情况时,才能决定是否需要迁移服务、重新调度资源、清理垃圾数据及采购新的服务器。在故障发生后,通过分析历史监控数据,可以准确定位故障源,确定故障的发生时间及持续时间等,从而避免后续相关故障的发生。

在每个企业的数据中心内或多或少都会使用一些开源或者商业的监控系统。从监控对象的角度来看,可以将监控分为网络监控、存储监控、服务器监控和应用监控等。因为需要监控数据中心的各个方面,所以监控系统需要做到面面俱到,在数据中心里充当“天眼”角色。

从程序设计的角度来看,可以将监控分为基础资源监控、中间件监控、应用程序监控和日志监控,如图1-1所示。

图1-1

每种监控都涉及不同的监控指标,并使用了不同的数据采集方式。要做到全栈监控,我们还需要不断加强开发能力并积累运维经验。虽然当前有很多开源监控项目能够帮助企业迅速搭建监控系统,但在选择开源监控项目时需要保持谨慎,优先选择社区活跃度较高、落地案例较多、容易扩展的监控项目。

另外,对监控指标也不要一味求多求全,没有必要采集所有监控指标。笔者很不赞同囫囵吞枣、眉毛胡子一把抓的做法,因为这样不仅增加了采集的复杂度,还增加了数据传输及存储的压力。我们应该根据自己的业务场景,采集关联的核心指标,做到有的放矢。