Promethus核心组件介绍

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

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

Prometheus服务器是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等,还可以控制告警的静音和抑制。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值