当前位置: 首页>后端>正文

Prometheus (五)对比 Graphite

  • https://prometheus.io/docs/introduction/comparison/
  • https://toutiao.io/posts/fsjq8t/preview

总结:白盒监控,或者需要监控一个动态的云环境,Prometheus更优。

一、适用范围

Graphite:

  • 一个Python写的web应用,企业级的系统监控工具,可以在廉价机硬件上运行
  • 作为被动机制的时间序列数据库,有自己的查询语言和绘图方式。其他特性需要通过外部组件来实现
  • 由三个软件组件组成:
    • carbon:一个Twisted守护进程,监听并接收时间序列数据
    • whisper:固定大小文件的数据库,用来存储时间序列数据,在设计上类似于RRD(Round Robin Database,一种环形数据库,专门设计来存储时序数据)
    • graphite-web:Django框架实现的一个webapp,可以从whisper数据库获取时间序列数据并且进行展示

小结:Graphite是一个被动接收的时间序列数据库,但提供了数据展示的功能。数据采集agent、警报等其它的功能,需要引入第三方软件来支持。

Prometheus

  • 有一套完整的监控和趋势系统,在时序数据基础上内建主动抓取,搜索,绘图和报警系统,有丰富的官方和第三方贡献的监控收集工具(exporters).

  • 全能监控,提供了基于时间序列数据的数据采集、存储、查询、画图和告警的功能

  • 采用主动(pull)采集的方式,知道被监控的系统是什么样子的(哪个endpoints应该存在,那种时间序列模式意味着出问题),能够为问题诊断提供强力的支持

二、数据模型

  1. 两者大体一致,Prometheus提供更加丰富的metadata模型:
  • Graphite 的metric名称以点"."分割组件,这种方式是一种维度的编码方式,通过"."来潜在的提供分割数据标识。
  • Prometheus 在提供metric名称之外,明确的通过标签键值对标识metric不同的维度,更易于通过查询语句来过滤、分组、匹配metrics。
  1. 当Graphite和StatsD结合使用时,它存储的数据一般是聚合过后的数据(维度降低),Prometheus存原维度数据(这些数据有不同的维度,能够根据这些数据来定位更细节的问题)。
    例子
  • 使用Graphite/StatsD存储状态码为500、方法是POST、路径是"/tracks"、服务名称为api-server(api-server有多个实例)的http请求数,这样一个监控指标:
    stats.api-server.tracks.post.500 -> 93
  • 使用Prometheus存储同样的监控指标:
api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample1>"} -> 34
api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample2>"} -> 28
api_server_http_requests_total{method="POST",handler="/tracks",status="500",instance="<sample3>"} -> 31

即:Prometheus支持更高维度的监控指标

三、存储

  • Graphite 使用Whisper格式在本地磁盘存储时间序列数据。Whisper是RRD-style database,它要求到达的采样数据间隔固定。每一个时间序列存储在一个单独的文件,在一定时间之后新的采样数据会覆盖老得数据。
  • Prometheus 也为每一个时间序列创建一个本地文件,但是允许以任意时间间隔存储采样数据(数据采集、规则计算评估时间任意)。旧数据可以是任意长度,新的采样数据只是简单的附加在老数据的后面。Prometheus针对短生命周期、频繁更改标签集合的时间序列也能和好的支持。

四、总结

  • Prometheus提供更丰富的数据模型和查询语句,此外还易于运行、整合到已有环境中。
  • 如果想要集群化的解决方案,能够存储长期的历史数据,Graphite可能是更好的选择。
  • 白盒监控,或者需要监控一个动态的云环境,Prometheus更优。

https://www.xamrdz.com/backend/3vu1936992.html

相关文章: