首页 > 其他分享 >Prometheus入门

Prometheus入门

时间:2024-09-03 19:47:51浏览次数:10  
标签:入门 标签 Histogram 指标 Prometheus 监控 数据

介绍

1、Prometheus 是一个开源的服务监控系统和时序数据库,其提供了通用的数据模型和快捷数据采集、存储和查询接口。它的核心组件Prometheus server会定期从静态配置的监控目标或者基于服务发现自动配置的自标中进行拉取数据,当新拉取到的数据大于配置的内存缓存区时,数据就会持久化到存储设备当中。

2、每个被监控的主机都可以通过专用的exporter 程序提供输出监控数据的接口,它会在目标处收集监控数据,并暴露出一个HTTP接口供Prometheus server查询,Prometheus通过基于HTTP的pull的方式来周期性的采集数据。

3、任何被监控的目标都需要事先纳入到监控系统中才能进行时序数据采集、存储、告警和展示,监控目标可以通过配置信息以静态形式指定,也可以让Prometheus通过服务发现的机制进行动态管理。

Prometheus 具有以下特点:

• 多维数据模型:由度量名称和键值对标识的时间序列数据

• PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询

• 不依赖分布式存储,单个服务器节点可直接工作

• 基于HTTP的pull方式采集时间序列数据

• 推送时间序列数据通过PushGateway组件支持

• 通过服务发现或静态配置发现目标

• 多种图形模式及仪表盘支持

Prometheus适用于以机器为中心的监控以及高度动态面向服务架构的监控。

 

Prometheus生态组件组成

  • Prometheus server Prometheus服务器,用于抓取和存储时间序列数据。Prometheus server 由三个部分组成:Retrival,Storage,PromQL

    • Retrieval:负责在活跃的target 主机上抓取监控指标数据。

    • Storage:存储,主要是把采集到的数据存储到磁盘中。默认为15天(可修改)。

    • PromQL:是Prometheus提供的查询语言模块。

  • client libraries 客户端库,用于检测应用程序代码的客户端库。Prometheus本身提供了支持多种语言的SDK,用于对接 Prometheus Server, 可以查询和上报数据。目的在于为那些期望原生提供Instrumentation功能的应用程序提供便捷的开发途径。

  • push gateway 支持短期工作的推送网关。类似一个中转站,可以理解成目标主机可以上报短期任务的数据到Pushgateway,然后Prometheus server 统一从Pushgateway拉取数据。

  • exporters 指标暴露器,负责收集不支持内建Instrumentation的应用程序或服务的性能指标数据,并通过HTTP接口供Prometheus Server获取。用于暴露已有的第三方服务的 metrics 给 Prometheus。

  • alertmanager 是一个独立的告警模块,从Prometheus server端接收到“告警通知”后,会进行去重、分组,并路由到相应的接收方,发出报警。

  • Service Discovery:服务发现,用于动态发现待监控的Target,Prometheus支持多种服务发现机制,例如文件、DNS、Consul、Kubernetes等等。

  • Grafana:是一个跨平台的开源的度量分析和可视化工具,可以将采集的数据可视化的展示,并及时通知给告警接收方。其官方库中具有丰富的仪表盘插件。

  • various support tools 各种支持工具

简单地说,Prometheus 的实现架构也并不复杂。其实就是收集数据、处理数据、可视化展示,再进行数据分析进行报警处理。 但其珍贵之处在于提供了一整套可行的解决方案,并且形成了一整个生态,能够极大地降低我们的研发成本。

数据类型

介绍

Prometheus 存储的是时序数据, 即按照相同时序(相同的名字和标签),以时间维度存储连续的数据的集合

Prometheus 中,每个时间序列都由指标名称(Metric Name)和标签(Label)来唯一标识格式为:{=,…}

  • 指标名称:通常用于描述系统上要测定的某个特征

例如,prometheus_http_requests_total表示接收到的HTTP请求总数
  • 标签:键值型数据,附加在指标名称之上,从而让指标能够支持多纬度特征;可选项

例如,如下代表着两个不同的时间序列
prometheus_http_requests_total{code=“200”}
prometheus_http_requests_total{code=“302”}

双下划线的标签是Prometheus系统默认标签,是不会显示在/metrics页面里面的;

系统默认标签在target页面中也是不显示的,需要鼠标放到Labels字段上才会显示。

常见的系统默认标签:

__address:当前target 实例的套接字地址:

__scheme:采集当前target 上指标数据时使用的协议(http或https)

__metrics_path:采集当前target 上的指标数据时使用URI路径,默认为/metrics

___param:传递的URL参数中第一个名称为的参数的值

__name:此标签是标识指标名称的预留标签,能够使用标签选择器对指标名称进行过滤

时序样本

按照某个时序以时间维度采集的数据,称之为样本,其值包含:

  • 一个 float64 值

  • 一个毫秒级的 unix 时间戳

Metrics指标类型

Counter

Counter类型的指标其工作方式和计数器一样,只增不减(除非系统发生重置)。

通常借助于 rate、topk、increase 和 irate 等函数来生成样本数据的变化状况(增长率)

例如,通过rate()函数获取HTTP请求量的增长率:

rate(http_requests_total[5m])

Gauge

Gauge类型的指标侧重于反应系统的当前状态。因此这类指标的样本数据可增可减。(例如CPU使用率、队列数)

常用于进行求和、取平均值、最小值、最大值等聚合计算;也会经常结合 PromQL 的 delta、deriv 和 predict_linear 函数使用

Histogram和Summary

Histogram和Summary主用用于统计和分析样本的分布情况

例如,统计延迟在 0~10 ms 之间的请求数有多少,而 10~20 ms 之间的请求数又有多少。通过这种方式可以快速分析系统慢的原因。Histogram和Summary都是为了能够解决这样问题的存在,通过 Histogram 和 Summary 类型的监控指标,我们可以快速了解监控样本的分布情况。

Summary和Histogram的异同:

  • 相似之处在于Histogram类型的样本同样会反应当前指标的记录的总数(以count作为后缀)以及其值的总量(以sum作为后缀)

  • 不同在于Histogram指标直接反应了在不同区间内样本的个数,区间通过标签len进行定义

同时对于Histogram的指标,我们还可以通过histogram_quantile()函数计算出其值的分位数。不同在于Histogram通过histogram_quantile函数是在服务器端计算的分位数。 而Sumamry的分位数则是直接在客户端计算完成。因此对于分位数的计算而言,Summary在通过PromQL进行查询时有更好的性能表现,而Histogram则会消耗更多的资源。反之对于客户端而言Histogram消耗的资源更少。

 

标签:入门,标签,Histogram,指标,Prometheus,监控,数据
From: https://www.cnblogs.com/yjh1995/p/18395299

相关文章

  • Java 入门指南:Java 并发编程 —— 并发容器 ConcurrentSkipListMap
    ConcurrentMapConcurrentMap是Java并发包中提供的一个接口,它继承了java.util.Map接口,专门用于支持高并发环境下的线程安全操作。ConcurrentMap提供了一系列线程安全的方法,旨在解决在多线程环境下使用普通Map类型(如HashMap)时可能出现的竞态条件和数据不一致问题。......
  • vue3整合antv x6实现图编辑器快速入门
    安装:npminstall@antv/x6--save如果使用umd包,可以使用下面三个CDN中的任何一个,默认使用X6的最新版:https://unpkg.com/@antv/x6/dist/index.jshttps://cdn.jsdelivr.net/npm/@antv/x6/dist/index.jshttps://cdnjs.cloudflare.com/ajax/libs/antv-x6/2.0.0/index.......
  • prometheus学习笔记之集群内服务发现环境准备
    一、环境介绍主要演示prometheus在k8s集群中如何通过服务自动去发现k8s集群自有服务及其他服务发现场景,后续会演示集群外部署prometheus自动发现k8s服务并获取数据创建监控使用的namespaceskubectlcreatensmonitoring配置docker可以下载镜像[root@k8s-masterdeploy]......
  • Java入门第一课
    如何下载使用Eclipse?首先进入Eclipse官网ThankYouforDownloadingEclipse|TheEclipseFoundation下载符合自己电脑系统的版本,选择所在地区的镜像进行下载,否则可能会比较慢。下载完成之后应该是一个exe文件,直接打开进行下载选择第一个,选择好安装路径就可以点击install......
  • java实现的开源mocker造数神器,10分钟可完成千万级别数据的造数-入门篇
    java实现的开源mocker造数神器,10分钟可完成千万级别数据的造数-入门篇如果你还在为数据库表造数烦恼?如果你还在造数上花费一天、一周、甚至更多的时间……也许Mocker(模客)能帮你排忧解难。造数是一件令人头疼、繁琐而又无趣的事情,但有些时候它又是开发过程中不可避免的一个阶段......
  • 自然语言处理NLP入门核心概念扫盲
    前言自然语言处理(NLP)是一个多学科领域,它融合了计算机科学、人工智能和语言学,使计算机能够理解、解释和生成人类语言。它包含多个子领域,如下:NLU:自然语言理解**NaturalLanguageUnderstanding,**理解文本和语音背后的含义。NLG:自然语言生成**NaturalLanguageGeneration,**从数据......
  • AI大模型入门教程(全网最详细),零基础入门到精通,从看这一篇开始!
    一、什么是AI大模型?在人工智能领域,特别是在自然语言处理(NLP)和机器学习中,AI大模型是指那些拥有大量参数的深度学习模型。这些模型通过在大规模数据集上进行训练,能够学习到丰富的数据表示和模式,从而在各种任务上表现出色,如文本生成、语言理解、图像识别等。大模型具有大量参数和复杂......
  • 都2024年了,还在问网络安全怎么入门,气得我当场脑血栓发作
      前言本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。正题首先,在准备进入这个行业之前,我们要问一下我们的内心,工......
  • 都2024年了,还在问网络安全怎么入门,气得我当场脑血栓发作
      前言本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。正题首先,在准备进入这个行业之前,我们要问一下我们的内心,工......
  • 【Python插件入门】第10篇(完结篇):插件常用工具类分享
    【Python插件入门】第10篇(完结篇):插件常用工具类分享原创金蝶云·星空-BOS平台金蝶云·星空-基础架构金蝶云·星空-学习笔记金蝶云·星空-协同开发更多 CQ周玉立已关注149人赞赏了该文章 1.8万次浏览 未经作者许可,禁止转载编辑于2022年08月22日09:......