返回介绍

2 Prometheus

发布于 2024-09-26 00:24:30 字数 2005 浏览 0 评论 0 收藏 0

Prometheus 是一套开源的监控、报警和时间序列数据库的组合,成立于 2012 年,由 SoundCloud 公司开发,此后许多组织接受和采用了 Prometheus,遂将其独立为开源项目。该项目使用 Go 语言开发,社区氛围非常活跃。

关键功能包括

  • 多维数据模型:metric,labels
  • 灵活的查询语言:PromQL, 在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。
  • 可独立部署,拆箱即用,不依赖分布式存储
  • 通过 Http pull 的采集方式
  • 通过 push gateway 来做 push 方式的兼容
  • 通过静态配置或服务发现获取监控项
  • 支持图表和 dashboard 等多种方式

架构

1574519635361

图 10 Prometheus 组件架构

  • Prometheus Server: 采集和存储时序数据

  • client 库: 用于对接 Prometheus Server, 可以查询和上报数据

  • push gateway 处理短暂任务:用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等

  • 定制化的 exporters,比如:HAProxy, StatsD,Graphite 等等, 汇报机器数据的插件

  • 告警管理:Prometheus 可以配置 rules,然后定时查询数据,当条件触发的时候,会将 alert 推送到配置的 Alertmanager

  • 多种多样的支持工具

    1574519657243

图 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文