Prometheus详解(二)——Prometheus原理与架构

今天继续给大家介绍Linux运维相关知识,本文主要内容是Prometheus的原理与架构。

一、Prometheus架构

Prometheus的监控实现,是基于HTTP周期性的抓取被监控组件的状态,任意组件只要提供符合Prometheus定义的数据格式的HTTP接口,就可以加入Prometheus监控。Prometheus监控架构如下所示:
在这里插入图片描述

二、Prometheus数据采集、存储和展示

Prometheus支持通过两种Pull的方式来采集数据,一种是通过配置文件
、文本等进行动态配置;另一种是支持Zookeeper、Consul、Kubernetes等方式进行自动发现。以Kubernetes为例,Prometheus使用Kubernetes的API查询和监控容器信息的变化,并且动态的更新监控对象,容器的创建、删除等都可以被Prometheus感知。
此外,为了兼容那些以Push的方式来推送监控数据的应用,Prometheus也提供了对Gateway的支持,这些系统将metrics推送到PushGateway,Prometheus定时前往Gateway上抓取数据。
Prometheus的存储通过一定的规则来整理数据,并且把得到的结果存储到时间序列中。Prometheus的存储方式有两种:
1、本地存储。
通过Prometheus自带的时间序列数据库存储到本地磁盘上。但是考虑到本地磁盘存储空间空间有限,因此此时最好设置Prometheus不要存储超过一个月的数据。
2、远程存储。
Prometheus支持OpenTsdb、InfluxDB、Elasticsearch等后端存储,通过适配器实现Prometheus存储的remote write和remote read接口,即可作为Prometheus的远程存储使用。Prometheus的远程存储适合于存储大量的监控数据。
Prometheus可以通过promQL和其他的API可视化的展示收集到的数据,并且拥有自己的Dashboard,同时也支持对接Grafana所提供的模板等。同样的,Prometheus还提供了HTTP API查询方法,从而自定义所需要的输入和输出。

三、Prometheus告警

Prometheus支持通过AlertManager来进行告警,AlertManager是基于Prometheus的一个组件,当Prometheus的监控数据触发了预先设置的告警规则后,Prometheus就会将告警信息推送到AlertManager。AlterManager提供了非常灵活的告警方式,支持通过邮件、钉钉等的方式进行告警。同时,AlertManager支持高可用部署,为了解决多个AlertManager重复告警的问题,可以引用Gossip,在多个AlertManager之间通过Gossip来同步告警信息。
Prometheus的告警架构如下所示:
在这里插入图片描述

四、Prometheus组件

Prometheus由多个组件组成,其中重要的组件如下所示:
1、Prometheus Server
用于抓取指标和存储时间序列数据
2、exporter
用于暴露指标让任务抓取
3、PushGateway
方便部分软件以Push的方式将指标数据推送到该组件
4、AlertManager
用于处理报警的报警组件
5、adhoc
用于数据查询的组件
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/124677548