什么是Prometheus
prometheus是一个开源的监控和告警的系统,很多互联网公司已经开始使用,得益于非常活跃的社区,很多开发人员和用户都参与到了这项目中。
特征
- 以kv的形式来确定时间序列的多维度数据模型
- 灵活的查询语言
- 不依赖分布式存储,单个服务节点是单独存在的
- 以HTTP的方式,通过pull模型拉取时间序列数据
- 也支持通过中间网关的形式推送时间序列数据
- 通过服务发现和静态配置来发现监控对象
- 有多种模式的图表和仪表盘的web展示
组件
- 主服务Prometheus Server抓取和存储时间序列的数据
- 客户端调用应用程序代码
- 支持短期job的push网关
- 专用的出口服务,比如HAproxy/StatsD/Graphite等等
- 告警管理器处理告警
- 其他各种支持工具
架构
prometheus服务,可以直接通过目标拉取数据,或者间接地通过中间网关拉取数据。它在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中,PromQL和其他API可视化地展示收集的数据
适用场景
Prometheus在记录纯数字时间序列方面表现非常好。它既适用于面向服务器等硬件指标的监控,也适用于高动态的面向服务架构的监控。对于现在流行的微服务,Prometheus的多维度数据收集和数据筛选查询语言也是非常的强大。
Prometheus是为服务的可靠性而设计的,当服务出现故障时,它可以使你快速定位和诊断问题。它的搭建过程对硬件和服务没有很强的依赖关系。
不适用场景
Prometheus,它的价值在于可靠性,甚至在很恶劣的环境下,你都可以随时访问它和查看系统服务各种指标的统计信息。 如果你对统计数据需要100%的精确,它并不适用,例如:它不适用于实时计费系统