0
点赞
收藏
分享

微信扫一扫

Prometheus系列第二篇一架构设计以及核心通识


文章目录

  • ​​系统架构设计​​
  • ​​领域知识-TSDB​​
  • ​​领域知识-Sample​​
  • ​​领域知识-Metric​​
  • ​​领域知识-exporter​​
  • ​​领域知识-ClientLib​​
  • ​​总结​​

系统架构设计

Prometheus系列第二篇一架构设计以及核心通识_监控

module name

desc

Prometheus server

内含tsdb存储数据,同时定时拉取exporter的数据

push gateway

推送网关,exporter一般会被Prometheus拉取数据,如果采用push模型,则可以先将数据push到Push Gateway

Service Discovery

除去在yml中静态配置exporter信息,还可以通过服务发现模块动态加载exporter信息

Grafana

监控面板组件

alertmanager

告警组件

领域知识-TSDB

Prometheus会将所有采集到的样本数据以时间序列(time-series)的方式保存在内存数据库中,并且定时保存到硬盘上。
time-series是按照时间戳和值的序列顺序存放的,我们称之为向量(vector). 每条time-series通过指标名称(metrics name)和一组标签集(labelset)命名。
如下所示,可以将time-series理解为一个以时间为Y轴的数字矩阵:

^
│ . . . . . . . . . . . . . . . . . . . node_cpu{cpu="cpu0",mode="idle"}
│ . . . . . . . . . . . . . . . . . . . node_cpu{cpu="cpu0",mode="system"}
│ . . . . . . . . . . . . . . . . . . node_load1{}
│ . . . . . . . . . . . . . . . . . .
v
<------------------ 时间 ---------------->

领域知识-Sample

在time-series中的每一个点称为一个样本(sample),样本由以下三部分组成:

name

desc

指标(metric)

metric name和描述当前样本特征的labelsets

时间戳(timestamp)

一个精确到毫秒的时间戳;

样本值(value)

一个float64的浮点型数据表示当前样本的值

领域知识-Metric

  • Metric 含有一个name,比如node_cpu
  • Metric含有一组标签键值对,比如node_cpu{cpu=“cpu0”,mode=“idle”} cpu和mode称为label标签,cpu0和idle称为label_value标签值
  • 常见的metric有如下分类

name

desc

Counter

计数器,递增量

Gauge

仪表盘,状态量

Histogram

直方图,服务端计算

Summary

摘要图,客户端计算,PromeQL性能更好

领域知识-exporter

  • 当与ClientLib对齐时,表示Prometheus官方提供的一些黑盒监控采集工具,如node_exporter等等,参见​​其他exporter​​
  • 当于ClientLib时,例如java的simple-client,exporter表示http端点等指标暴露端点,collector表示监控采集相关容器

领域知识-ClientLib

  • 对于java特指以下相关lib

<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient</artifactId>
<version>0.16.0</version>
</dependency>

总结

  • spring actuator通过配置WebEndPoint暴露采集端点
  • 其内部调用CollectorRegister采集所有的metricCollector上报的Metric,并将数据转成Sample格式
  • 往后我们会讲到 micrometer结合simpleclient实现不同对象的监控,采集,从而形成spring到Prometheus到micrometer在java领域的闭环


举报

相关推荐

0 条评论