Prometheus Introduction

查看原文

Prometheus 是一款开源的监控和报警工具,出自 SoundCloud,继 Kubernetes 之后成为第二个 Cloud Native Computing Foundation 的项目。

  • Data Model: Prometheus 中的基础数据是和 OpenTSDB 格式兼容的时间序列,以 [a-zA-Z_:][a-zA-Z0-9_:]* 为 Metric 名称,附带诸如 {method="POST", handler="/messages"} 这样的格式作为 Label。每一个数据点都是 [精确到millisecond的时间戳,float64]
  • Query: Query 表达式的数据可用于图表或者自己从 API 拿。
    • 可以直接根据 Metric 名字或者带上标签: metric_name{label="mylabel"} 获取数据。Label 操作符可有 =, !=, =~(正则), !~ 四种。
    • 可以用区间和偏移获取某段时间的数据:http_requests_total[5m] offset 1w
    • 可以在表达式外面套上 sum, avg 等函数做基本计算。
    • 慎用通用指标,善用过滤,不然数据量太大服务器可能会爆炸。
  • 不需要分布式存储,单机就能运行。
  • 能从 HTTP 接口拉数据,也能写数据。
  • 架构:Prometheus Server 把数据拉到本地,client library 安装进应用内,然后进行计算,存储,报警,可以用 exporters 导出数据到别的服务。
  • 需要注意的是,它也是 TSDB 的一种,意味着数据可能丢失,如果要处理敏感数据(比如账单什么的),最好换一种东西监控。