Go语言开发Prometheus Exporter示例

本文介绍了Prometheus的基本概念,如指标名、标签、指标类型和作业实例,并展示了如何使用Go语言编写一个最简单的Exporter,包括定义指标、注册、数据采集和启动HTTP服务的步骤。还给出了Demo Exporter的目录结构和代码实现。
摘要由CSDN通过智能技术生成

一、Prometheus中的基本概念

Prometheus将所有数据存储为时间序列,这里先来了解一下prometheus中的一些基本概念

指标名和标签

每个时间序列都由指标名和一组键值对(也称为标签)唯一标识。

metric的格式如下:

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

例如:

http_requests_total{host="192.10.0.1", method="POST", handler="/messages"}
  • http_requests_total是指标名;
  • hostmethodhandler是三个标签(label),也就是三个维度;
  • 查询语句可以基于这些标签or维度进行过滤和聚合;

指标类型

Prometheus client库提供四种核心度量标准类型。注意是客户端。Prometheus服务端没有区分类型,将所有数据展平为无类型时间序列。

1、 Counter:只增不减的累加指标

Counter就是一个计数器,表示一种累积型指标,该指标只能单调递增或在重新启动时重置为零,例如,您可以使用计数器来表示所服务的请求数,已完成的任务或错误。

2、 Gauge:可增可减的测量指标

Gauge是最简单的度量类型,只有一个简单的返回值,可增可减,也可以set为指定的值。所以Gauge通常用于反映当前状态,比如当前温度或当前内存使用情况;当然也可以用于“可增加可减少”的计数指标。

3、Histogram:自带buckets区间用于统计分布的直方图

Histogram主要用于在设定的分布范围内(Buckets)记录大小或者次数。

例如http请求响应时间:0-100ms、100-200ms、200-300ms、>300ms 的分布情况,Histogram会自动创建3个指标,分别为:

  • 事件发送的总次数<basename>_count:比如当前一共发生了2次http请求
  • 所有事件产生值的大小的总和<basename>_sum:比如发生的2次http请求总的响应时间为150ms
  • 事件产生的值分布在bucket中的次数<basename>_bucket{le="上限"}:比如响应时间0-100ms的请求1次,100-200ms的请求1次,其他的0次

4、Summary:数据分布统计图

Summary和Histogram类似,都可以统计事件发生的次数或者大小,以及其分布情况。

Summary和Histogram都提供了对于事件的计数_count以及值的汇总_sum,因此使用_count,和_sum时间序列可以计算出相同的内容。

同时Summary和Histogram都可以计算和统计样本的分布情况,比如中位数,n分位数等等。不同在于Histogram可以通过histogram_quantile函数在服务器端计算分位数。 而Sumamry的分位数则是直接在客户端进行定义。因此对于分位数的计算。 Summary在通过PromQL进行查询时有更好的性能表现,而Histogram则会消耗更多的资源。相对的对于客户端而言Histogram消耗的资源更少。

作业和实例

在Prometheus中,一个可以拉取数据

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值