Prometheus架构以及说明

prometheus.png

这是官方给的架构图,不是很直观,下面给出一个架构的具体应用。


promethues实例架构图.png

是什么

Prometheus 是由 SoundCloud 开源监控告警解决方案。

四大组件

Prometheus Server : 根据配置完成数据采集,数据存储,根据告警规则产生告警并发送给Alertmanager,提供PromQL查询语言的支持。

Push Gateway : 为应对部分push场景提供的插件,这部分监控数据先推送到 Push Gateway 上,然后再由 Prometheus Server端拉取 。用于存在时间较短,可能在 Prometheus 来拉取之前就消失了的 jobs (若 Prometheus Server 采集间隔期间,Push Gateway 上的数据没有变化, Prometheus Server 将采集到2次相同的数据,仅时间戳不同)

XXX Exporters:Exporters(探针) 是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。

Alertmanager: Prometheus server 主要负责根据基于PromQL的告警规则分析数据,如果满足PromQL定义的规则,则会产生一条告警,并发送告警信息到Alertmanager,Alertmanager则是根据配置处理告警信息并发送。常见的接收方式有:电子邮件,webhook,微信 等。Alertmanager三种处理告警信息的方式:分组,抑制,静默。

主要优点

1、提供多维度数据模型和灵活的查询语言:通过将监控指标关联多个Tag,来将监控数据进行任意维度的组合;提供HTTP查询接口;可以很方便的结合Grafana等组件展示数据。

2、支持服务器节点的本地存储,通过prometheus自带的时序数据库,可以完成每秒千万级的数据存储。不仅如此,在保存大量历史数据的场景中,prometheus还可以对接第三方时序数据库如OpenTSDB等。

3、定义了开放指标数据标准,以基于HTTP的Pull方式采集时序数据,只有实现了prometheus监控数据格式的监控数据才可以被prometheus采集;并支持以Push方式向中间网关推送时序数据,能更灵活地应对各种监控场景。

4、支持通过静态文件配置和动态发现机制发现监控对象,自动完成数据采集。prometheus目前已经支持Kubernetes、Consul等多种服务发现机制,可以减少运维人员的手动配置环节。

  1. 支持多种多样的图表和界面展示,比如Grafana等。

监控指标定义

prometheus的所有监控指标被统一定义为:

<metric name>{<label name>=<label value>,...}

比如

gpu_num{node=node1.local,type=nvdia}

时间序列数据通过 metric 名和键值对来区分。 标签可以体现指标的维度特征,用于过滤和聚合。它通过标签名和标签值这种键值对的形成多种维度。

注意:指标的某些标签是以_开头的,这些标签是在prometheus系统内部使用的。

prometheus指标分类

1、Counter
计数器类型,只增不减,如机器的启动时间,HTTP访问量等。机器重启不会置零,在使用这种指标类型时,通常会结合rate()方法获取该指标在某个时间段的变化率。

2、Gauge
仪表盘类型,可增可减,如CPU使用率,内存使用率,集群节点个数,大部分监控数据都是这种类型的。

3、Summary 客户端定义
Summary,Histogram都属于高级指标,用于凸显数据的分布情况。

{quantile=“0.9”}也不是随便就能用的,需要指标里本来就有quantile这个标签。

Prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.9"}  0.014
表示有90%的同步时间是低于0.014s的

Summary计算的指标不能再获取平均数,一般适用于独立的监控指标,例如垃圾回收时间等。

4、Histogram 服务端定义,相比Summary性能更好
反应了某个区间内的样本数

prometheus_local_storage_series_chunks_persisted{le="1.6382e+06"}
260

小于1.6382e+06个chunk的序列有260个(这个指标表示prometheus每个本地存储序列保存的chunk数量)

数据采集

prometheus采用pull方式采集监控数据,时间戳为ms。采用统一的restful api方式获取数据。根据配置周期性的采集指定目标上的指标。

Push和Pull方式的对比:

1、实时性

Push方式实时性更好

2、状态保存

Push方式通常在采集完成后立即上报,本地不会保存采集数据。Pull方式正好相反,Agent本身需要有一定的数据存储能力。

3、控制能力

采用Push方式,控制方为Agent。采用Pull方式,Master更主动,可以实现集中配置

4、配置的复杂性

采用Push方式,通常每个Agent都需要配置Master的地址。采用Pull方式,通常通过批量配置或自动发现来获取所有采集点,可以做到与Agent解耦,Agent不用感知Master存在。

数据处理

prometheus支持数据处理,主要包括relabel、replace、keep、drop等操作,提供过滤数据或修改样本维度信息等功能。

通过replace或者labelmap的方式针对这些内部使用的标签进行重命名或者将多个标签的内容进行组合。

如果设置了keep机制,则会保留所有匹配标签的数据,如果设置了drop机制,则会丢弃匹配标签的数据,从而完成数据过滤。

数据查询

和关系型数据库实现sql解析一样,prometheus实现了一套自己的数据库语言(promsql)解析器。promsql和sql的最大差别就是promsql只支持查询。

prometheus支持grafana等开源显示面板,通过自定义promsql可以制作丰富的监控视图。

prometheus本身也提供了一个简单的web查询控制台。web控制台主要包括:graph指标查询,alerts高经查询和status状态查询。

数据规范

prometheus在面对繁杂的监控对象时并没有采用逐一适配的方式,而是制定了一套独特的监控数据规范,符合这套规范的监控数据都可以被prometheus统一采集,分析和展现。

prometheus会周期性地调用这些exporter数据接口来获取数据。接口数据以文本形式组织,这和大多数基于json的数据组织形式不同,采用文本形式更加灵活。

但是,调用prometheus rest接口时,返回的指标value是由一个64位的浮点值和一个精确到毫秒级的时间戳组成。

our_company_blob_storage_ops_queued 496

在很多流行的监控系统中都已经实现了prometheus接口,例如etcd,kubernetes,他们可以直接被prometheus监控,但大多数监控对象都没法直接提供监控接口(安全性考虑或者不支持http接口,如硬件性能指标)。

exporter主要通过被监控对象提供的监控相关的接口来获取监控数据。即exporter将不同规范和格式的监控指标进行转化,输出prometheus能够识别的监控数据格式,极大扩展了prometheus的数据采集能力。

实战

功能实战参考https://www.cnblogs.com/chenqionghe/p/10494868.html

参考文档:
https://www.processon.com/view/5db92d7ce4b09df5518895b4
https://www.cnblogs.com/chenqionghe/p/10494868.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351