Prometheus介绍及Prometheus Operator

Prometheus介绍

  • Promethues架构
  • Alert Manager
  • Prometheus Operator

Promethues架构

官方

Prometheus介绍及Prometheus Operator_第1张图片

  • Retrieval: 负责定位和抓取外部的各种监控目标的metrics 时间序列数据。数据获取,prometheus是采用pull(拉)的模式,也就是是promethues server会定期到监控目标上拉取metrics,prometheus社区提供各种exporters,它们可以收集各种常见系统的指标,比如物理节点,操作系统,数据库等等。
    - 除了原有的Pull模式,Prometheus也可以采用另外一个组件-push gateway来支持push模式,可以理解为,一些短期运行的jobs如果不方便暴露metrics端点,这些jobs可以将metrics push到push gateway,再由push gateway统一暴露metrics端点,再让prometheus去pull。
    - 一个prometheus也可以去拉取其他prometheus上的metrics,进行进一步的聚合运算和存储,这种方式可以实现监控集群的分布上扩展。
  • PromQL: 负责时间序列数据的查询,解析和处理。QL是查询语言query language的简写,类似于关系型数据库的SQL。不过PromQL是专门针对时间序列数据库的查询语言。
  • Storage: 负责存储时间序列数据。数据可以是外边抓取过来的,也可以是间接计算出来的。

Prometheus可以用静态配置文件来定位监控目标,也可以通过Service Discovery机制来定位监控目标,比如:Consul, K8S内部服务发现等。

Prometheus有WEB UI做一下简单查询metrics。

对于企业级的Metrics展示,prometheus支持对接grafana。

Prometheus也支持API clients方便外部集成。

Prometheus支持数据本地存储。存储是短期存储,prometheus设计初衷是面向数据短期存储需求的。Prometheus也可以支持扩展支持远程的长期存储,需要额外的组件。

Prometheus也支持告警计算,可以在prometheus服务器上设置各种告警表达式,基于PromQL来书写,prometheus服务器会定期评估这些告警,满足调教就会触发告警。

Prometheus还提供了一个alert manager告警组件,它接收prometheus服务器传过来的告警通知,然后路由转发到第三方的通知渠道,邮件,微信等等。

Alert Manager

Prometheus介绍及Prometheus Operator_第2张图片

Alert Manager的核心是路由转发功能。报警规则是配置在prometheus服务器上的,prometheus会评估这些报警规则,满足条件就会触发报警,push到alert manager,alert manager会进行路由,转发到不同渠道。

除了路由转发功能,alert manager还有一些其他的功能,比如:

  • 去重,去除重复的告警消息
  • 分组,将有相似性的告警消息,根据规则进行分组,统一处理。
  • 抑制,抑制会某类告警信息的转发。
  • 静默,在某个时间段内,暂停某类告警信息的触发。

Prometheus Operator

Prometheus介绍及Prometheus Operator_第3张图片

Prometheus及其组件,都是可以独立部署的。可以参考本博客监控专栏文章,介绍了Prometheus在虚拟机环境的安装步骤。

本文介绍Prometheus在K8S中的应用。

Prometheus Operator是社区对promethues及其组件,专门面向K8S集群的一个发布包装,可以大大简化prometheus在K8S环境下的部署和配置。

Github地址: https://github.com/prometheus-operator/prometheus-operator

Prometheus Operator的主要作用是部署和管理prometheus和alert manager这些组件,还可以动态生成并且更新prometheus的配置文件,它的动态部署和配置管理的原理是prometheus operator提供了四种K8S的定制资源,如图右边。

  • Promtheus Resources 定义了prometheus的发布规范。
  • ServiceMonitor 定义如何对K8S中service进行监控。
  • PrometheusRule 定义了prometheus的配置规则。告警规则,聚合运算规则。
  • Alertmanager 定义了alert manager的发布规范。

这些资源,对Prometheus的发布和配置进行了一次包装。有了这些定制资源,如果我们对prometheus的部署和配置进行更新的话,不需要跟K8S底层的发布文件以及prometheus底层的配置文件打交道,而是通过定制的资源,间接的去更新。

在后台,prometheus operator会监控这些定制资源的变化,有变化,它会动态更新相关组件的配置。

K8S的定制资源,Custom Resource Definition(CRD), 和 Pod, Service, Deployment 等等K8S的内置资源是类似的,区别在于,定制资源是由第三方基于K8S的API扩展定制出来的。

接下来:Prometheus-Operator安装

你可能感兴趣的:(监控,K8S,linux)