Prometheus 监控工具

2019-08-23 0 By admin

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

一、特征

Prometheus的主要特点是:

  1. 一种多维数据模型,其中时间序列数据由度量名称和键/值对标识。
  2. PromQL,一种灵活的查询语言, 可以利用这一维度。
  3. 不依赖分布式存储; 单个服务器节点是自治的。
  4. 时间序列集合通过HTTP协议的的PULL方式获取数据。
  5. 推送时间序列通过中间网关(gateway)支持。
  6. 通过服务发现或静态配置发现目标(targets)。
  7. 多种图形和仪表板支持模式。

二、组件

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

  1. 主要的Prometheus server,用于存储时间序列数据。
  2. 用于检测应用程序代码的客户端库。
  3. 用于支持short-lived工作的推送网关(push gateway)。
  4. 针对HAProxy,StatsD,Graphite等服务的exporters。
  5. 一个alertmanager处理警报管理器。
  6. 各种支持工具

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

三、架构

此图说明了Prometheus的体系结构及其一些生态系统组件:

Prometheus 监控工具架构图

Prometheus 根据配置的作业,直接从数据源pull拉取或者通过中间推送网关(push gateway),获取度量值Metrics。
它在本地存储所有获取的样本,并在此数据上运行规则,以从现有数据聚合和记录新的时间序列,或者生成警报。
Grafana或其他API使用者可用于可视化收集的数据。

四、什么时候适合?

Prometheus适用于录制任何纯数字时间序列。它适用于以机器为中心的监控以及高度动态的面向服务架构的监控。在微服务的世界中,它对多维数据收集和查询的支持是一种特殊的优势。
Prometheus专为提高可靠性而设计,是您在停电期间可以快速诊断问题的系统。每个Prometheus服务器都是独立的,不依赖于网络存储或其他远程服务。当基础架构的其他部分损坏时,您可以依赖它,并且您不需要设置大量的基础架构来使用它。

五、什么时候不合适?

Prometheus重视可靠性。即使在故障情况下,您也可以随时查看有关系统的可用统计信息。如果您需要100%的准确度,例如按请求计费,Prometheus不是一个好的选择,因为收集的数据可能不够详细和完整。在这种情况下,您最好使用其他系统来收集和分析数据以进行计费,并使用Prometheus进行其余监控。