写点什么

15 Promethus 之核心组件介绍

  • 2022 年 1 月 15 日
  • 本文字数:1164 字

    阅读完需:约 4 分钟

15 Promethus之核心组件介绍

Prometheus 的基本原理是通过 HTTP 协议周期性获取被监控组件的状态信息,任意组件只要提供 HTTP 接口就可以接入监控系统内,不需要如 SDK 的集成过程,这就使得 Prometheus 可以更好地适应虚拟化,如 VM 或 Docker 容器的环境集成。当使用者监控的服务出现故障时,它可以快速定位和诊断问题。每个 Prometheus 服务器都是独立的,不依赖于网络存储或其他远程服务。当基础架构的其他部分损坏时,可以快速恢复,并且不需要设置大量的基础依赖架构。


Prometheus 将所有数据存储为时间序列(time series)数据,每个时间序列数据都具有带时间戳的数据流,数据流都由其指标(metric)名称和一组键值对(也称为标签(label))唯一标识,即不同的标签代表不同的时间序列。我们可以基于这些标签很容易地对监控数据进行聚合、过滤和整理。除了存储的时间序列,Prometheus 还可以作为查询结果,产生临时的派生时间序列。


Prometheus 服务器(server)是 Prometheus 架构中的核心组件,基于 Go 语言编写而成,无第三方依赖关系,可以独立部署在物理服务器、云主机、Docker 容器内主要用于收集每个目标数据,并存储为时间序列数据,对外可提供数据查询支持和告警规则配置管理。Prometheus 服务器可以对监控目标进行静态配置管理或动态配置管理,它将监控采集到的数据按照时间序列存储在本地磁盘的时序数据库中(当然也支持远程存储),自身对外提供了自定义的 PromQL 语言,可以对数据进行查询和分析。


Client Library 是用于检测应用程序代码的客户端库。在监控服务之前,需要向客户端库代码添加检测,从而实现了 Prometheus 中 metric 的类型。所有主要语言和运行时都可以用于客户端库。Prometheus 项目提供了官方的客户端库,包括 Go、Python、Java/JVM 和 Ruby。还有第三方客户端库,例如 Bash、C++、.Net/C#、Node.js、PHP、Haskell、Erlang 和 Rust。


Exporter 是 Prometheus 系统中重要的组成部分。在实际中收集监控样本数据都是由 Exporter 完成的。Exporter 可以是一个独立运行的进程,对外提供一个用于获取监控数据的 HTTP 服务。Prometheus server 只需要定时通过这些 Exporter 提供的 HTTP 服务获取监控数据即可。可以类似理解为我们传统意义上的被监控目标的 agent,只是区别在于 Exporter 不会主动推送监控数据到 Prometheus server


Pushgateway 是指用于支持短期临时或批量计划任务工作的数据汇聚节点主要用于短期的 Job,此类 Job 存在的时间较短,可能在 Prometheus 来 pull 之前就自行消失了。所以针对这类 Job,设计成可以直接向 Pushgateway 推送 metric,这样 Prometheus 服务器端便可以定时去 Pushgateway 拉取 metric。


Alertmanager 主要用于处理 Prometheus 服务器端发送的 alerts 信息,对其去除重数据、分组并路由到正确的接收方式,发出告警。它支持的告警通知方式非常丰富,常见的通知方式有电子邮件、pagerduty、OpsGenie,webhook 等,还可以控制告警的静音和抑制。


发布于: 刚刚阅读数: 3
用户头像

InfoQ签约作者 2018.11.30 加入

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

评论

发布
暂无评论
15 Promethus之核心组件介绍