关于prometheus设计的一些思考

其实设计一套完整的监控系统是挺复杂的,既要考虑的通用性,也要考虑的对各种指标和监控对象的特殊性,业内也并没有规范可言,还有考虑的数据的存储和持久化。prometheus的设计初衷就就是一个通用监控系统,它并没有设计集群,类似HDFS一套东西去存储数据,它的设计初衷就没有想过存储大量的持久的监控数据,如果你想做报表的话,它可能不适合,它更适合作为一个通用的实时的监控系统。下面针对它的设计理念的一些思考:

它是什么

它首先是一个监控系统,采集和存储监控指标,支持指标的查询和指标告警,当然还有自己的一个dashboard。

它的侧重点

它的重点是操作系统和云环境的监控
它不不适合日志和时间采集存储,请求的跟踪,持久的存储,没有用户和鉴权,不能够自动水平伸缩。

为什么不做多租户

这个问题,想必大家都很关心,这个通用的监控系统,为啥没有多租户的设计呢!因为做多租户就要TSL、鉴权之类的东西,这样会导致监控的exporter将会很复杂,并且多租户的隔离完全可以在系统之外用户自己去维护。

Label 对比 hierarchy

这是设计理念的对比,label的优势不言而喻,在kubernetes的资源对象的关联都是通过label去完成,它相比简单层级结构要更加的灵活、高效、多维度。

promsql 对比 sql

prometheus为啥不设计一套兼容标准sql的CURD呢?应为要考虑到标准sql的解析等,这样会降低性能,并且标准sql写起来很麻烦,如果你用过promsql就会看出它的优势,能够更好的做指标计算,prometheus认为监控数据只读就可以了,所以promsql只支持读。

pull 对比 push

这个是从架构上面思考,pull是自己去拉,push是推送。这个设计对比和之前rabbitmq和kafka的设计形成对照。到底应该推还是拉。prometheus选择拉,拉的优势是能够自动的上游监控、水平监控、更加灵活、更容易实现高可用、更少的配置、更容易扩展。展开来说就是拉的方式,降低耦合,在推送的系统中很容易出现因为向监控系统推送数据失败而导致系统瘫痪的问题,通过pull,独立于被监控系统之外,这样数据的采集存储能够更加可控,被采集端无须感知监控系统的存在。

无集群

我并不否认集群的好处,能够更大规模的采集和存储数据。但这这样设计会将整个系统复杂化,尤其告警变的复杂,可能导致数据的一致性性问题,prometheus专注实时监控。

relabel

relabel是为了系统兼容而设计的,在环境中监控的对象不同,针对不同的监控对象target,要能够改变监控查询的方式。数据存储使用float64,这样在保证精度的情况下,或得较好压缩。

exporter

这个一个设计模式的问题,一个exporter是功能大而全,还是简单独立好呢?prometheus坚持的是,第一单一职责划分架构简单;第二是避免SPOF(Single Point Of Failure);第三是操作瓶颈,一个大而全的采集器可能要处理更大的数据;第四,单一功能的exporter可以支持不同的语言编写,这样系统变的更加通用,只要支持prometheus风格的metric都可以被监控。

### 回答1: Prometheus 是一个开源的监控系统,它采用了 pull 模型,通过 HTTP 协议从被监控对象中获取指标数据,并将这些数据存储在本地的时间序列数据库中。Prometheus 的架构设计主要包括以下几个组件: 1. Prometheus Server:负责从被监控对象中拉取指标数据,并将这些数据存储在本地的时间序列数据库中。同时,Prometheus Server 还提供了查询和告警功能。 2. Exporters:Prometheus 支持多种方式来采集指标数据,其中最常用的方式是使用 Exporters。Exporters 是一种特殊的应用程序,它可以将被监控对象中的指标数据转换成 Prometheus 可以理解的格式,并通过 HTTP 协议暴露出来。 3. Pushgateway:Pushgateway 是一种特殊的 Exporter,它允许应用程序将指标数据推送到 Prometheus Server 中。通常情况下,Prometheus 推荐使用 pull 模型来采集指标数据,但在某些场景下,使用 push 模型更加方便。 4. Alertmanager:Alertmanager 负责接收来自 Prometheus Server 的告警信息,并根据预定义的规则进行分类和处理。Alertmanager 支持多种方式来发送告警通知,包括电子邮件、Slack、PagerDuty 等。 总的来说,Prometheus 的架构设计非常灵活,可以根据不同的场景进行定制化配置。同时,Prometheus 还提供了丰富的查询语言和可视化工具,方便用户对监控数据进行分析和展示。 ### 回答2: Prometheus架构设计是一种开源的监控和警报工具的设计方式。它的设计目标是为了实现高度可扩展性、灵活性和可靠性。Prometheus以时间序列数据为核心,采用了分布式架构和拉模型,具有以下主要组件和特点: 1. 数据采集:Prometheus通过各种Exporter组件从目标系统中采集指标数据,并将其存储为时间序列数据。Exporter可适配不同的数据源,如应用程序、操作系统、数据库等。Prometheus支持多种采集方式,包括HTTP、Pushgateway等。 2. 存储引擎:Prometheus使用本地磁盘存储时间序列数据,并将其以一种高效的自主压缩格式保存。这种存储方式有效地减少了磁盘空间的占用,并提供了快速的数据查询能力。 3. 查询和统计分析:Prometheus提供了一种灵活的查询语言(PromQL),使用户可以根据需要进行数据查询和聚合分析。用户可以运行PromQL查询语句,获取感兴趣的时间序列数据,并进行各种统计计算和可视化展示。 4. 警报和告警:Prometheus具有强大的警报功能,能够基于用户自定义的规则和阈值对采集到的数据进行实时监控和告警。当数据超过设定的阈值时,Prometheus可以发送通知,并执行预定义的动作。 5. 可扩展性和集群化:Prometheus的架构设计支持水平扩展和集群化部署。多个Prometheus实例可以组成一个集群,通过共享数据存储和协调任务,实现数据的集中管理和高可用性。 总之,Prometheus架构设计以高度可靠和灵活的方式实现了监控和警报功能,使用户能够方便地收集、存储、查询和分析时间序列数据,从而有效地监控系统的健康状态,并做出及时的响应和调整。 ### 回答3: Prometheus是一个开源的监控系统,最初由SoundCloud开发并于2012年发布。它采用了一种基于指标的监控方式,通过收集、存储和展示各种系统的指标数据,使得用户可以更好地理解和管理系统的性能。 Prometheus的架构设计有以下几个关键组件: 1. Exporters(导出器):Prometheus使用导出器来收集各种系统的指标数据。导出器是一种用于将现有的监控数据转换为Prometheus可读取的格式的软件,如Node Exporter用于收集主机的CPU、内存等信息,MySQL Exporter用于收集MySQL数据库的性能指标等。 2. Push Gateway(推送网关):有时候,一些短暂的任务或服务指标无法通过导出器直接暴露给Prometheus,这时可以使用推送网关。推送网关允许应用程序将指标数据推送到网关,并且Prometheus定期从推送网关拉取数据。 3. Prometheus Server(Prometheus服务器):这是整个系统的核心组件,负责收集、存储和处理指标数据。Prometheus Server定期从导出器和推送网关拉取数据,并存储在本地的时间序列数据库中。 4. Alertmanager(告警管理器):Prometheus具备强大的告警功能,Alertmanager负责管理和发送告警信息。它可以根据用户定义的规则,对指标数据进行分析,并在触发警报条件时发送通知。 Prometheus的架构设计具有以下特点和优势: 1. 可扩展性:Prometheus设计允许用户根据需要添加更多的导出器和推送网关,从而实现对各种不同系统的监控。 2. 强大的查询语言:PromQL是Prometheus的查询语言,它支持复杂的查询和聚合操作,使得用户可以更加灵活地分析和展示指标数据。 3. 多维度数据模型:Prometheus使用标签(label)来对指标数据进行分类和过滤,这种多维度的数据模型可以支持更细粒度的查询和监控。 4. 高度可定制性:Prometheus提供了丰富的API和插件机制,允许用户自定义和扩展各个组件,以满足不同场景下的监控需求。 总之,Prometheus的架构设计使其成为一个功能强大、可扩展、灵活性高的监控系统,被越来越多的开发者和运维工程师广泛应用于各种系统和应用程序的监控和告警中。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳清风09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值