可观测性-Event-埋点数据模型
创始人
2024-04-11 08:43:34

埋点数据模型

埋点的目标是RED(Request,Error,Duration)

初期

当上线初期整体数据量不大的时候,我们可以统统以事件(event)来埋点。

例如埋点数据模型如下

measurement: laker_order #metrics name
fileds:value: 398 # 泛化的value,可以是duration unit: ms,也可以是 filesize unit:byte,订单金额等。count: 1 # default 1.browser_version: 107.0.0.0 # autofill 浏览器版本os_version: # autofill 操作系统版本userid:  # autofill 用户idtracking_id: # TrackingIDbiz_id: # 业务id, 订单id/账单id/消息id等  description: # description
tag:error_type: DECRYPTION_FAILED # DECRYPTION_FAILED/DECRYPTION_UNAUTHORIZED/DECRYPTION_GET_KEY_FAILED  status: 1 #用这个来代替 success感觉更好呢 0成功 1失败 2:xx 3:xx(但是要控制好 别扩散)-- success: true # true/false 成功失败org_id: # autofill 组织idos: Win #autofill 操作系统browser: chrome # autofill 浏览器az: # autofill 可用区 A/B/C region: # autofill 地域 上海/杭州

注意:tag中的值一定是可枚举的,且其基数不能太大,基数计算如下:

例如:

  • error_type: 值有3
  • success:2
  • org_id: 20
  • os:3
  • browser:6
  • az:1
  • region:1

则基数为:3*2*20*3*6*1*1=2160

基数一般建议小于1w,当然这取决于你服务器的配置有多高。

这里注意下,内存基数和influxdb端基数是不一样的。例如,还是上面的计算方式。

  • error_type: 内存:3 ,全局:3
  • success:内存:2 ,全局:2
  • org_id: 内存:20 ,全局:20
  • os:内存:20 ,全局:20
  • browser:内存:6,全局:6
  • az:内存:1,全局:6(因为一个实例,在内存上只有一个az,但是整体是有6个的)
  • region:内存:1,全局:2

则实例内存基数为:3*2*20*3*6*1*1=2160

小心应用实例内存溢出。

则influxDB基数为:3*2*20*3*6*6*2=25920

小心influxdb内存溢出。

优化

当系统用户数据量上来后,我们需要优化了,因为上面每个event,都是一条数据,会导致数据量太大了,我们需要用聚合指标来收集数据。以http request举例子。

例如有 10000个事件

  • uri: /api/v1/users/{id} status : 200 ,有3000条

  • uri: /api/v1/users/{id} status : 500,有3000条

  • uri: /api/v1/orgs/{id} status : 200 ,有3000条

  • uri: /api/v1/orgs/{id} status : 500,有1000条

事件指标数:10000条。

聚合指标数:2 * 2 = 4条。

优点

  • 把指标数量从事件数量级别下降到tag value的基数级别。

缺点

  • 相关字段变少。

    可以配合 异常事件或者日志处理。可观测性-Event-指标事件采样策略总结(基于条件的采样)

  • 基数爆炸会导致服务内存压力。

埋点模型如下

measurement: laker_order
# metric_type: timer/counter
fileds:mean: 100    # 步长内事件值平均值,平均响应时间count: 1000  # 步长内事件数sum: 10000   # 步长内事件值总和,响应时间的总和upper: 250   # 步长内事件最大值,最大响应时间
tag:error_type: DECRYPTION_FAILED # DECRYPTION_FAILED/DECRYPTION_UNAUTHORIZED/DECRYPTION_GET_KEY_FAILED  success: true # true/falseorg_id: # autofillos: Win #autofillbrowser: chrome # autofillaz: # autofill 可用区 A/B/Cregion: # autofill 地域 上海/杭州

可以看到没有指标细节了,细节可以用 事件指标+log解决。

相关内容

热门资讯

美元面临进一步下跌,受政策公信... 格隆汇1月22日|Candriam的Nicolas Jullien在一份报告中表示,鉴于对美国政策公...
小更新大幸福!丰台方庄以“微改... 转自:北京青年报客户端在首都超大城市治理现代化进程中,如何让老旧小区焕发新活力,让居民感受到“家门口...
41家单位共下“一盘棋”,北京... 转自:北京青年报客户端北京青年报记者从北京市重点站区管理委员会获悉,1月22日,机场地区管理服务工作...
17岁女孩照片被他人盗用谈恋爱 (来源:中国反邪教)转自:中国反邪教 【#17岁女孩照片...
西藏2025年末本外币各项贷款... 中新网拉萨1月22日电(泽塔雍措)2025年西藏金融运行情况新闻发布会22日在拉萨召开,发布会介绍,...