What is Prometheus?
1.Introduce
Prometheus最初是由SoundCloud创建的开源的系统监控以及告警工具。从2011年开始,很多公司和组织开始使用Prometheus,该项目拥有活跃的开发者和用户社区。现在Prometheus是一个独立的开源项目,任意公司都可以独立维护。为了强调这一点并阐明项目的管理结构,Prometheus在Kubenetes之后作为第二个托管项目在2016年加入了CNCF。
2.Features
- 由metric名称和key/value对构成并标识的支持多维度数据模型的时序数据
- PromQL,一个复杂的查询语言
- 不依赖分布式存储,单节点可自治
- 使用HTTP协议通过pull的方式拉取时序数据
- 通过一个中间网关,也可以支持推送数据
- 数据采集目标通过服务发现或者静态配置来查找
- 支持多种模式的图形和仪表盘
- Components
- prometheus server,用来拉数据和存数据,required
- client libraries,应用代码集成,提供Prometheus需要的格式的指标和对应数据,required
- push gateway,支持短生命周期的job,optional
- 针对某些组件或服务(node,mysql,k8s,haproxy)的特定目的的exporter,optional
- alertmanager,处理告警的组件,optional
- 其他多种多样的支持工具
-
Architecture
When does it fit or not fit?
Prometheus非常适合纯粹的数值型时序数据,既支持中心化的监控也支持高度面向服务化架构的监控,Prometheus被设计成一个可靠的,在遇到异常情况的时候方便快速诊断问题的系统,每个节点都是独立的,不依赖外部存储和服务,使用成本低。如果你需要100%的准确性,例如记录每次账单请求的场景,Prometheus是不合适的,因为它采集的数据可能不够精细和完整(比如是定时拉数据)。这些场景最好使用其他的系统,把监控交给Prometheus。