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 等函数做基本计算。
- 慎用通用指标,善用过滤,不然数据量太大服务器可能会爆炸。
- 可以直接根据 Metric 名字或者带上标签:
- 不需要分布式存储,单机就能运行。
- 能从 HTTP 接口拉数据,也能写数据。
- 架构:Prometheus Server 把数据拉到本地,client library 安装进应用内,然后进行计算,存储,报警,可以用 exporters 导出数据到别的服务。
- 需要注意的是,它也是 TSDB 的一种,意味着数据可能丢失,如果要处理敏感数据(比如账单什么的),最好换一种东西监控。