共计 2070 个字符,预计需要花费 6 分钟才能阅读完成。
Prometheus 是什么?
Prometheus 是一套开源的监控 & 报警 & 工夫序列数据库的组合。
Prometheus 数据模型
Prometheus 从根本上所有的存储都是按工夫序列去实现的,每条工夫序列是由惟一的 指标名称 和 一组 标签(key=value)的模式组成。
指标名称
通常代表了监控对象的名称,能够简略了解为数据表的表名
标签
就是对一条工夫序列不同维度的辨认了,能够简略了解为数据表的字段。
四种指标类型
Counter 计数器
一种累加的 metric,典型的利用如:申请的个数,完结的工作数,呈现的谬误数等。随着客户端一直申请,数值越来越大。
Gauge 计量器
与 Counter 不同,Gauge 类型的指标侧重于反馈零碎的以后状态。因而这类指标的样本数据可增可减,比方监控 cpu 使用率,内存占用等提供了增、减相干的办法.
Histogram 累积直方图
直方图,柱状图。罕用于跟踪事件产生 (通常是申请持续时间或响应大小) 的规模,例如:申请耗时、响应大小。它特别之处是能够对记录的内容进行分组,提供 count 和 sum 全副值的性能。
Summary
跟 histogram 相似,summary 也对观测值(相似申请提早或回复包大小)进行采样。同时它会给出一个总数以及所有观测值的总和,它在一个滑动的工夫窗口上计算可配置的分位数。, 典型的利用如:申请持续时间,响应大小。次要做统计用, 设置分位数的值,会实时返回该分位数上的值。
服务端收集监控数据次要有两种形式。
1、Prometheus server 间接到 client 客户端拉取
2、由客户端将 metrics 推送至 push gateway 服务,再由 prometheus server 到 push gateway 拉取
具体实例:
package main
import (
"github.com/gin-gonic/gin"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
// 定义指标
var (
requestHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
Namespace: "http_server",
Subsystem: "",
Name: "requests_seconds",
Help: "Histogram of response latency (seconds) of http handlers.",
ConstLabels: nil,
Buckets: []float64{0, 0.01, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 1, 2, 5, 10},
}, []string{"userId", "requestType"})
)
// 注册监控指标
func init() {prometheus.MustRegister(requestHistogram)
}
func main() {r := gin.Default()
r.GET("/metrics", gin.WrapH(promhttp.Handler()))
// 收集数据
requestHistogram.With(prometheus.Labels{"userId": "11111", "requestType": "商品详情页"}).Observe(1.0)
r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
间接拜访: 127.0.0.1:8080/metrics 查看 prometheus 的数据
直方图详解:
1. 什么是 Histogram?
Histogram 会在一段时间范畴内对数据进行采样(通常是申请持续时间或响应大小等),并将其计入可配置的存储桶(bucket)中。但这句话还是不太好了解,上面通过具体的示例来阐明。
假如咱们想监控某个利用在一段时间内的响应工夫,最初监控到的样本的响应工夫范畴为 0s~10s。当初咱们将样本的值域划分为不同的区间,即不同的 bucket,每个 bucket 的宽度是 0.2s。那么第一个 bucket 示意响应工夫小于等于 0.2s 的申请数量,第二个 bucket 示意响应工夫大于 0.2s 小于等于 0.4s 的申请数量,以此类推。
Prometheus 的 histogram 是一种 累积直方图,与下面的区间划分形式是有差异的,它的划分形式如下:还假如每个 bucket 的宽度是 0.2s,那么第一个 bucket 示意响应工夫小于等于 0.2s 的申请数量,第二个 bucket 示意响应工夫小于等于 0.4s 的申请数量,以此类推。也就是说,每一个 bucket 的样本蕴含了之前所有 bucket 的样本,所以叫累积直方图。
参考:
https://blog.csdn.net/weixin_…
http://www.45fan.com/article….
https://blog.csdn.net/kunyus/…