当前位置:   article > 正文

Grafana-web使用说明_grafana 分组统计

grafana 分组统计

本文分别记录了:

  • Grafana使用步骤
  • P50 P99 min max m1_rate等指标分别是什么意思,Metrics为何不会对“吞吐量”指标记录P99 min 等聚合
  • Metrics常用的几种记录方式(我司用了两种)

1.场景

  • Metrics收集日志交给Graphite(Graphite本身也可以做为监控,但我们只是把他作为了一个数据存储,对grafana提供数据接口),Grafana做数据展示

  • Grafana的数据来源于Graphite(由Metrics收集),其监控方式也是通过不停轮询(所以在Grafana中也叫新建query),如果Graphite中没有数据,Grafana中自然也不会显示,举个例子:

    1. 启动了Spring项目,但没有访问接口(此时接口被Metric记录),此时Grafana甚至都不知道是哪个“project”
    2. 请求接口,如果Metric记录了log(“myType . myMetric_key . myMetric_value1”) ,则只会在Grafana中出现value1的选项,不会出现value2(直到log记录到了value2)
  • 上述这个“Metric记录后才有选项”的特性十分重要,涉及到Grafana中的新建query是否有提示

2.web界面操作步骤

2.1创建仪表盘dashboard

仪表盘dashboard属于是最外层,在里面还可以创建row(一个小分组),创建query(一个实际的监测指标)

2.2配置仪表盘dashboard

通用设置

变量设置:这里主要是为了后续配置query时能直接用$host $metric来默认指定

2.3盘内新建分组row

创建一行,后续可以鼠标放上去设置名字

2.4新建监测指标query

还是上面那个图,点“Add Query”即可

3.统计度量

3.1Metrics统计度量类型

Metrics提供了五种基本的度量类型:

  • Gauges:计量器
  • Counters:计数器
  • Histograms:直方图
  • Timers:计时器
  • Meters:TPS计数器

一般来说最后两个满足了绝大部分监控的场景

3.2适用场景

3.2.1 Gauges

Gauges中文名称可以翻译为计量器。它可以表示一个既可以增加, 又可以减少的度量指标值。它是最简单和最基本的Metrics类型,只有一个简单的返回值,通常用来记录一些对象或者事物的瞬时值

计量器的典型使用场景包括:

温度
内存使用量
  • 1
  • 2

3.2.2 Counters

Counters中文名称可以翻译为计数器。它是一种累计型的度量指标,数值只能单调递增。

计数器的典型使用场景包括:

服务请求数
任务完成数
错误出现次数
  • 1
  • 2
  • 3

3.2.3 Histograms

Histograms中文名称可以翻译为直方图。它可以用来度量流数据中value的分布情况,Histrogram可以计算最大/小值、平均值,方差,分位数(如中位数,或者95th分位数),如75%,90%,98%,99%的数据在哪个范围内。最大的特点是提供了多种多样的数据统计方式。

直方图的典型使用场景包括:

流量最大值
流量最小值
流量平均值
流量中位值
  • 1
  • 2
  • 3
  • 4

3.2.4 Meters

Meters中文名称可以翻译为TPS计数器。它是一种只能自增的计数器通常用来度量一系列事件发生的比率(例如记录succeed和failed可以直到接口成功率)。他提供了平均速率,以及指数平滑平均速率,以及采样后的1分钟,5分钟,15分钟速率。

TPS计数器的典型使用场景包括:

平均每秒请求数
最近1分钟平均每秒请求数
最近5分钟平均每秒请求数
最近15分钟平均每秒请求数
  • 1
  • 2
  • 3
  • 4

3.2.5 Timers

Timers中文名称可以翻译为计时器。Histogram跟Meter的一个组合,另外还提供了对于某段代码执行的耗时的统计及计算功能。

计时器的典型使用场景包括:

请求时延
磁盘读时延
  • 1
  • 2

3.3各度量类型提供的属性(非重点)

  • Gauges:

       属性 value (某个属性实时值变化)
    
    • 1
  • Counter:

      属性count (定时时间间隔之内的请求总数)
    
    • 1
  • Histrogram:

      属性 count(定时时间间隔之内的请求总数)
      属性 min(定时时间间隔内请求参数的最小值)
      属性 max(定时时间间隔内请求参数的最大值)
      属性 mean(定时时间间隔内请求参数的平均值)
      属性 stddev(定时时间间隔内请求参数的方差)
      属性 median(定时时间间隔内请求参数的中位数)
      属性rate_unit(比率记录单位)
      属性 75% <=(75百分位)
      属性 95% <=(95百分位)
      属性 98% <=(98百分位)
      属性 99% <=(99百分位)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • Meters:

      属性 count(定时时间间隔之内的请求总数)
      属性 meanRate(平均每秒请求数(时间间隔内总请求数/定时任务时间间隔))
      属性 oneMinuteRate(最近1分钟平均每秒请求数)
      属性 FiveMinuteRate(最近5分钟平均每秒请求数)
      属性 FifteenMinuteRate(最近15分钟平均每秒请求数)
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • Timer:

      属性 count(定时时间间隔之内的请求总数)
      属性 meanRate(平均每秒请求数(时间间隔内总请求数/定时任务时间间隔))
      属性 oneMinuteRate(最近1分钟平均每秒请求数)
      属性 FiveMinuteRate(最近5分钟平均每秒请求数)
      属性 FifteenMinuteRate(最近15分钟平均每秒请求数)
      属性 min(定时时间间隔统计数据的最小值)
      属性 max(定时时间间隔统计数据的最大值)
      属性 mean(定时时间间隔内统计数据的平均值)
      属性 stddev(定时时间间隔内统计数据的方差)
      属性 median(定时时间间隔内统计数据的中位数)
      属性 rate_unit(比率记录单位)
      属性 duration_unit(时间数值单位)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

3.4我司常用指标

监控指标一般分为两大类:

  • 离散的有限状态:如:调用Metrics的meter.mark(k,v),v的选择是有限且离散的(如succeed和failed)
  • 连续的无限状态:如:调用Metrics的指定key值对应的timer对象:timer.update(value,TimeUnit.MILLISECONDS),value就是一个连续无限的“end-start时间”

3.4.1 P系列指标解释

p50, p90, p99(或者写作pct 50,pct90,pct 99)都是数据聚合统计一种方式,跟百分比相关(p的含义是percentile)。

p50:数据集按升序排列,第50分位置大的数据(即升序排列后排在50%位置的数据)。
p90:数据集按升序排列,第90分位置大的数据(即升序排列后排在90%位置的数据)。
p99:数据集按升序排列,第99分位置大的数据(即升序排列后排在99%位置的数据)。
P99.9:同上,精度到达99.9%,一般用P99和P99.9来展示绝大部分用户的接口响应时间,满足绝大部分用户的体验

3.4.2 统计函数指标

“stddev”: 方差

“count”: 总次数

max”: 最长时间

mean”: 平均时间

min”: 最短时间

3.4.3 比率相关(x分钟内平均)

“m15_rate”: 15分钟 请求数/每秒的比率

m1_rate”: 1分钟内 请求数 / 每秒 即OPS

“m5_rate”: 5分钟 请求数/每秒的比率

“mean_rate”:平均每秒请求数

“duration_units”: “seconds”,//该Timer的单位

“rate_units”: “calls/second”//比率单位

4.统计指标在Grafana中的体现

4.1连续无限:timer.update()


当我们记录了一条值,调用了一次这个方法,刚刚注册过的一堆指标都能选了

4.2离散有限:meter.mark()

但是如果调用meter.mark(),就只能看到一些离散的结果值,因为Metrics不会对这种值进行计算“平均值,百分值”等,想想也不合理嘛

5.functions函数

一般来说常用的就两个:sumSeries()maxSeries(),用于观测整体status状态,host来自多个数据源时,通过聚合函数可以将其合并达到观测整体的效果

5.1maxSeries()监测整体最大延迟

  • 对于记录响应时间Timer.updata()的指标(P99、max、mean、m1_rate),如果Grafana同时监测了多个host的数据源,每次P99、max等“响应指标”都会有多个(host几个就几个),这时候需要使用maxSeries()来取最大值,来监测99%的用户最大延迟是多少

5.2sumSeries()监测整体数量

  • 对于记录响应结果状态Meter.mark()的指标(m1_rate),这种指标只有数量一说,因此只需要通过sumSeries()达到聚合整体观测的效果
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/712128
推荐阅读
相关标签
  

闽ICP备14008679号