Prometheus中文教程

半兽人 发表于: 2019-07-23   最后更新时间: 2021-03-19 19:01:51  
{{totalSubscript}} 订阅, 39,496 游览

Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包。从2012年开始,许多公司和组织开始使用Prometheus。该项目的开发人员和用户社区非常活跃,越来越多的开发人员和用户参与到该项目中。目前它是一个独立的开源项目,且不依赖与任何公司。 为了强调这点和明确该项目治理结构,Prometheus在2016年继Kurberntes之后,加入了Cloud Native Computing Foundation。

prometheus

Prometheus的基本原理是通过HTTP周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口并且符合Prometheus定义的数据格式,就可以接入Prometheus监控。

prometheus

Prometheus Server负责定时在目标上抓取metrics(指标)数据并保存到本地存储里面。Prometheus采用了一种Pull(拉)的方式获取数据,不仅降低客户端的复杂度,客户端只需要采集数据,无需了解服务端情况,而且服务端可以更加方便的水平扩展。

Prometheus自研一套高性能的tsdb时序数据库,在V3版本可以达到每秒千万级别的数据存储,通过对接第三方时序数据库扩展历史数据的存储。

Prometheus的主要特征有:

  1. 多维度数据模型
  2. 灵活的查询语言
  3. 不依赖分布式存储,单个服务器节点是自主的
  4. 以HTTP方式,通过pull模型拉去时间序列数据
  5. 也通过中间网关支持push模型
  6. 通过服务发现或者静态配置,来发现目标服务对象
  7. 支持多种多样的图表和界面展示,grafana也支持它

Prometheus生态包括了很多组件,它们中的一些是可选的:

  1. 主服务Prometheus Server负责抓取和存储时间序列数据
  2. 客户库负责检测应用程序代码
  3. 支持短生命周期的PUSH网关
  4. 基于Rails/SQL仪表盘构建器的GUI
  5. 多种导出工具,可以支持Prometheus存储数据转化为HAProxy、StatsD、Graphite等工具所需要的数据存储格式
  6. 警告管理器
  7. 命令行查询工具
  8. 其他各种支撑工具

多数Prometheus组件是Go语言写的,这使得这些组件很容易编译和部署。

架构

下面这张图说明了Prometheus的整体架构,以及生态中的一些组件作用:

screenshot

Prometheus服务,可以直接通过目标拉取数据,或者间接地通过中间网关拉取数据。它在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中,PromQL和其他API可视化地展示收集的数据

适用场景

Prometheus在记录纯数字时间序列方面表现非常好。它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,Prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。

Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。它的搭建过程对硬件和服务没有很强的依赖关系。

不适用场景

Prometheus,它的价值在于可靠性,甚至在很恶劣的环境下,你都可以随时访问它和查看系统服务各种指标的统计信息。 如果你对统计数据需要100%的精确,它并不适用,例如:它不适用于实时计费系统

更新于 2021-03-19

星火燎愿 1年前

整完了k8s,开始刚prometheus (`^´)ノ

半兽人 2年前

2022开工大吉。
「时间在流逝。」 --- 《哈佛图书馆二十条训言》

查看Prometheus更多相关的文章或提一个关于Prometheus的问题,也可以与我们一起分享文章