文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
2 Prometheus
Prometheus 是一套开源的监控、报警和时间序列数据库的组合,成立于 2012 年,由 SoundCloud 公司开发,此后许多组织接受和采用了 Prometheus,遂将其独立为开源项目。该项目使用 Go 语言开发,社区氛围非常活跃。
关键功能包括 :
- 多维数据模型:metric,labels
- 灵活的查询语言:PromQL, 在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。
- 可独立部署,拆箱即用,不依赖分布式存储
- 通过 Http pull 的采集方式
- 通过 push gateway 来做 push 方式的兼容
- 通过静态配置或服务发现获取监控项
- 支持图表和 dashboard 等多种方式
架构
图 10 Prometheus 组件架构
Prometheus Server: 采集和存储时序数据
client 库: 用于对接 Prometheus Server, 可以查询和上报数据
push gateway 处理短暂任务:用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等
定制化的 exporters,比如:HAProxy, StatsD,Graphite 等等, 汇报机器数据的插件
告警管理:Prometheus 可以配置 rules,然后定时查询数据,当条件触发的时候,会将 alert 推送到配置的 Alertmanager
多种多样的支持工具
图 11 Prometheus 的整体技术架构
Prometheus 的整体技术架构可以分为几个重要模块:
- Main function:作为入口承担着各个组件的启动,连接,管理。以 Actor-Like 的模式协调组件的运行
- Configuration:配置项的解析,验证,加载
- Scrape discovery manager:服务发现管理器同抓取服务器通过同步 channel 通信,当配置改变时需要重启服务生效。
- Scrape manager:抓取指标并发送到存储组件
- Storage:
- Fanout Storage:存储的代理抽象层,屏蔽底层 local storage 和 remote storage 细节,samples 向下双写,合并读取。
- Remote Storage:Remote Storage 创建了一个 Queue 管理器,基于负载轮流发送,读取客户端 merge 来自远端的数据。
- Local Storage:基于本地磁盘的轻量级时序数据库。
- PromQL engine:查询表达式解析为抽象语法树和可执行查询,以 Lazy Load 的方式加载数据。
- Rule manager:告警规则管理
- Notifier:通知派发管理器
- Notifier discovery:通知服务发现
- Web UI and API:内嵌的管控界面,可运行查询表达式解析,结果展示。
本章参考
[1]. 时序数据库连载系列:指标届的独角兽 Prometheus https://blog.csdn.net/weixin_43970890/article/details/87938347
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论