Prometheus学习记录(一)

  • Post author:
  • Post category:其他




1. 前言

进行Prometheus的学习,记录一下,方便后续查看。



2. 初识Prometheus



2.1 Prometheus单词

prometheus

英 [ prəˈmiθju:s ] 美 [ prəˈmiθiəs, -ˌθjus ]

n.<希神>普罗米修斯(造福于人类的神)



2.2 什么是Prometheus?

Prometheus是一个开源的监控报警系统。

它最初由SoundCloud开发。

2016年,Prometheus被纳入了由谷歌发起的Linux基金会旗下的云原生基金会( Cloud Native Computing Foundation),并成为仅次于Kubernetes的第二大开源项目。自此,它成为了一个独立的开源项目,独立于任何公司进行维护。



2.3 Prometheus架构



2.3.1 架构图

在这里插入图片描述



2.3.2 Prometheus Server

用于收集、存储和查询时间序列数据。通过静态配置文件管理监控目标,也可以配合使用动态服务发现的方式动态管理监控目标,并从这些监控目标中获取数据。它将采集到的数据按照时间序列的方式存储在本地磁盘当中或者外部的时序数据库中,可通过PromQL语言对数据的查询以及分析。



2.3.3 Client Library

为被监控的应用生成相应的指标(Metric)数据并暴露给Prometheus Server。当Prometheus Server 来拉取时,直接返回实时状态的指标数据。



2.3.4 Push Gateway

主要用于短期存在的Jobs。由于这类Jobs存在时间较短,可能在Prometheus Server来拉取数据之前就消失了。所以,Jobs可以直接向Push Gateway推送它们的指标数据,然后Prometheus Server再从Push Gateway拉取。



2.3.5 Exporters

用于暴露已有的第三方服务的指标数据通过HTTP服务的形式暴露给Prometheus Server,比如HAProxy、StatsD、Graphite等等。Prometheus Server通过访问该Exporter提供的Endpoint,即可获取到需要采集的监控数据。



2.3.6 Alertmanager

从Prometheus Server接收到告警后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。Alertmanager的告警方式非常灵活,支持通过邮件、slack或钉钉等多种途径发出告警。



2.3.7 工作流程

  1. Prometheus Server直接从HTTP接口或者Push Gateway拉取指标(Metric)数据。
  2. Prometheus Server在本地存储所有采集的指标(Metric)数据,并在这些数据上运行规则,从现有数据中聚合和记录新的时间序列,或者生成告警。
  3. Alertmanager根据配置文件,对接收到的告警进行处理,发出报警。
  4. 在Grafana或其他API客户端中,可视化收集的数据。



2.3.8 Prometheus数据模型

Prometheus会将所有采集到的监控数据以时间序列的方式保存在内存数据库中,并且定时保存到硬盘上。每一条数据由以下三部分组成:

  • 指标(Metric):由指标名称和描述当前数据特征的标签组成。

    – 指标格式:<指标名称>{<标签名称>=<标签值>, …}

    – 示例:prometheus_http_requests_total{code=“200”,handler=”/metrics”}
  • 时间戳(Timestamp):一个精确到毫秒的时间戳。
  • 数据值(Value):一个float64的浮点型数据表示当前数据的值。



2.3.9 指标类型

Prometheus定义了4种不同的指标类型(Metric Type):

  • Counter(计数器)

    Counter类型和计数器一样,只增不减(除非系统发生重置),一般在定义Counter类型指标的名称时推荐使用_total作为后缀。
  • Gauge(仪表盘)

    Gauge类型侧重于反应系统的某一个瞬时的值,这类指标的数据可增可减。
  • Histogram(直方图)

    Histogram类型由_bucket{le=””},_bucket{le=”+Inf”}, _sum,_count 组成,主要用于表示一段时间范围内对数据进行采样,并能够对其指定区间以及总数进行统计,通常它采集的数据展示为直方图。
  • Summary(摘要)

    Summary类型由 {quantile=”<φ>”},_sum,_count 组成,主要用于表示一段时间内数据采样结果,它直接存储了分位数据,而不是根据统计区间计算出来的。



版权声明:本文为wenbingping原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。