Prometheus简介

前言

Prometheus是一套开源的系统监控报警框架。如今越来越多的公司开始广泛使用Prometheus来提供近实时的、基于动态云环境和容器微服务、服务以及应用程序的内省监控。同时也用于监控传统架构的资源。

Prometheus作为新一代的云原生监控系统,拥有易于管理、查询功能强大、便于可视化、存储高效以及操作简单等特点。

在Prometheus之前市面已经出现了很多的监控系统,如Zabbix、Open-Falcon等。下表通过多维度展现了各自监控系统的优缺点

开发语言 成熟度 高性能 扩展性 社区活跃度 容器支持 企业使用情况 部署维护成本
Zabbix C+PHP
Open-Falcon go+python
Prometheus go

关于Prometheus

Prometheus是一个开源系统监控和警报工具包,最初是在SoundCloud构建的。自2012年成立以来,许多公司和组织都广泛运用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。为了强调这一点,Prometheus在2016年加入了云计算基金会,成为继Kubernetes之后的第二个托管项目。

01-特点

Prometheus有以下几个主要特点:

  • 强大的查询功能:Prometheus灵活的查询语言PromQL能够对收集的时间序列数据进行切片和分片,以便生成特定的图、表和警报。
  • 高效的存储:Prometheus以一种高效的自定义格式将时序数据存储在内存和本地磁盘上。不依赖分布式存储;单服务器节点是自治的。
  • 便于可视化:Prometheus有多种可视化数据的模式:内置表达式浏览器、Grafana集成和控制台模板语言。
  • 操作简单:每台服务器都是独立的,只依赖于本地存储。所有二进制文件都是静态链接的,易于部署。
  • 警报精确:告警是根据Prometheus灵活的PromQL定义并传递到Alertmanager。再由Alertmanager负责管理、整合和分发各种警报到不同地目的地。
  • 大量的集成:现有的Exporters允许将第三方数据连接到Promehteus。示例:系统统计信息,以及Docker、HAProxy、StatsD和JMX metrics。

02-组件

Prometheus生态系统包含多个组件,其中许多是可选的:

  • 抓取并存储时间序列数据的Prometheus主服务器
  • 用于检测应用程序代码客户端库
  • 支持短期工作的pushgateway
  • 诸如HAProxy,StatsD,Graphite等服务器的专用Exporters
  • 用于处理警报的Alertmanager
  • 各种支持工具

大多数Prometheus组件都是用Go编写的,因此易于构建和部署为静态二进制文件。

03-架构

下图说明了Prometheus的架构及其生态系统组件:

img

Prometheus 直接或通过pushgateway抓取metrics。将数据存储在本地,并对这些数据运行规则,以便从现有数据聚合和记录新时间序列,或者生成警报。Grafana或其他API consumers可以用来将抓取的数据可视化。

适用场景

Prometheus非常适合记录任何纯数字时间序列。它既适用于machine-centric监控,也适用于高度动态的service-oriented的架构监控。在微服务的领域,其对多维数据抓取和查询的支持是一种特别的优势。

Prometheus是您在中断期间也能正常使用并快速诊断问题的系统,是十分值得信赖的伙伴。每个Prometheus服务器都是独立的,而不依赖于网络存储或其他远程服务。当基础结构的其他部分损坏时,您仍可以依靠它来进行监控,并且无需设置广泛的基础结构也可使用它,在故障的情况下,仍可以查看系统可用的统计信息。如果您需要100%精确的统计数据的话,Prometheus可能不能完全满足您的需求,如果是这种情况,您可以运用其他系统来抓取和分析这部分需要精确的数据,然后将Prometheus用于余下的监控环节。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容