写点什么

03 Prometheus 之架构及数据模型

  • 2022 年 1 月 03 日
  • 本文字数:1044 字

    阅读完需:约 3 分钟

03 Prometheus之架构及数据模型

Prometheus 专注于现在正在发生的事情,而不是追踪数周或数月前的数据。它基于这样一个前提,即大多数监控查询和警报都是从最近的(通常是一天内的)数据中生成的。


Prometheus 通过抓取或拉取应用程序中暴露的时间序列数据来工作。时间序列数据通常由应用程序本身通过客户端库或称为 exporter(导出器)的代理来作为 HTTP 端点暴露。Prometheus 还有一个推送网关(push gateway),可用于接收少量数据——例如,来自无法拉取的目标数据(如临时作业或者防火墙后面的目标)。

Prometheus 架构

Prometheus 称其可以抓取的指标来源为端点(endpoint)。端点通常对应单个进程、主机、服务或应用程序。为了抓取端点数据,Prometheus 定义了名为目标(target)的配置。生成的时间序列数据将被收集并存储在 Prometheus 服务器本地,也可以设置从服务器发送数据到外部存储器或其他时间序列数据库。


Prometheus 服务器没有内置警报工具,而是将警报从 Prometheus 服务器推送到名为 Alertmanager(警报管理器)的单独服务器。Alertmanager 可以管理、整合和分发各种警报到不同目的地——例如,它可以在发出警报时发送电子邮件,并能够防止重复发送。


冗余和高可用性侧重弹性而非数据持久性。Prometheus 团队建议将 Prometheus 服务器部署到特定环境和团队,而不是仅部署一个单体 Prometheus 服务器。如果你确实要部署高可用 HA 模式,则可以使用两个或多个配置相同的 Prometheus 服务器来收集时间序列数据,并且所有生成的警报都由可消除重复警报的高可用 Alertmanager 集群来处理。

Prometheus 冗余架构

标签共有两大类:插桩标签(instrumentation label)目标标签(targetlabel)插桩标签来自被监控的资源——例如,对于与 HTTP 相关的时间序列,标签可能会显示所使用的特定 HTTP 动词。这些标签在由诸如客户端或 exporter 抓取之前会被添加到时间序列中。目标标签更多地与架构相关——它们可能会识别时间序列所在的数据中心。目标标签由 Prometheus 在抓取期间和之后添加。


时间序列的真实值是采样(sample)的结果,它包括两部分:一个 float64 类型的数值一个毫秒精度的时间戳


Prometheus 及其组件不提供任何服务器端的身份验证、授权或加密。如果你在一个更加安全的环境中工作,则需要自己实施安全控制——例如,通过反向代理访问 Prometheus 服务器或者正向代理 exporter。


Prometheus 官网https://prometheus.io/

Prometheus 文档https://prometheus.io/docs/

Prometheus GitHub 主页https://github.com/prometheus/

Prometheus GitHub 源码https://github.com/prometheus/prometheus


发布于: 1 小时前
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
03 Prometheus之架构及数据模型