可观测性-Event-埋点数据模型
埋点数据模型
埋点的目标是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
: 值有3success
:2org_id
: 20os
:3browser
:6az
:1region
:1则基数为:
3*2*20*3*6*1*1
=2160基数一般建议小于1w,当然这取决于你服务器的配置有多高。
这里注意下,内存基数和influxdb端基数是不一样的。例如,还是上面的计算方式。
error_type
: 内存:3 ,全局:3success
:内存:2 ,全局:2org_id
: 内存:20 ,全局:20os
:内存:20 ,全局:20browser
:内存:6,全局:6az
:内存: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解决。
可观测性-Event-埋点数据模型相关推荐
- 手动埋点转无痕埋点,如何做到代码“零”入侵
前言 在起初的手动埋点的时候,每次版本大更新,很多埋点都要进行修改,删除.这个时候之前嵌在源码里面的一行行埋点代码要进行修改,删除.删了又找,找了又改,很麻烦.如果遇到有代码洁癖的,"产品你 ...
- 携程的 Dubbo 之路
作者 | 董艺荃 注:本篇文章整理自董艺荃在 Dubbo 社区开发者日上海站的演讲. 缘起 携程当初为什么要引入 Dubbo 呢?实际上从 2013 年底起,携程内主要使用的就是基于 HTTP 协议的 ...
- 看大众点评如何通过实时监控系统CAT打造7*24服务
为什么80%的码农都做不了架构师?>>> 看大众点评如何通过实时监控系统CAT打造7*24服务 2015-06-08 尤勇 高可用架构 https://github.com ...
- 一文读懂Data Lake的概念、特征、架构与案例
本文包括七个小节: 1.什么是数据湖: 2.数据湖的基本特征: 3.数据湖基本架构: 4.各厂商的数据湖解决方案: 5.典型的数据湖应用场景: 6.数据湖建设的基本过程: 7.总结.受限于个人水平,谬 ...
- CAT 性能优化的实践和思考
作者简介 锦华,携程高级技术专家,超过 10 年互联网研发经验,2011 年至今一直从事框架和中间件相关产品研发,对高并发.分布式中间件以及应用性能优化等有浓厚兴趣. *本文来自锦华在Qcon的分享, ...
- “数据湖”:概念、特征、架构与案例
写在前面: 最近,数据湖的概念非常热,许多前线的同学都在讨论数据湖应该怎么建?阿里云有没有成熟的数据湖解决方案?阿里云的数据湖解决方案到底有没有实际落地的案例?怎么理解数据湖?数据湖和大数据平台有什么 ...
- 怎么理解数据湖?(深度长文)
▲ 点击上方"分布式实验室"关注公众号 回复"1"抽取技术书 最近,数据湖的概念非常热,许多前线的同学都在讨论数据湖应该怎么建?阿里云有没有成熟的数据湖解决方案 ...
- java天眼培训_Java天眼大型分布式跟踪系统 附带源码_IT教程网
资源名称:Java天眼大型分布式跟踪系统 附带源码 教程内容: APP: 接入skyeye-client的系统会通过kafkaAppender向kafka写入日志 es-indexer-group: ...
- 震惊!这篇文章解读数据仓库、数据湖、数据中台等概念,竟然写了4万字!
点击上方 "zhisheng"关注, 星标或置顶一起成长 Flink 从入门到精通 系列文章 如今,随着诸如互联网以及物联网等技术的不断发展,越来越多的数据被生产出来-据统计,每天 ...
最新文章
- 这样是不是就可以预测语音长度和内容了
- vi格式化代码,撤销,重做,回退操作
- app启动速度阶段指标
- python写我爱你_12个精选Python教程我的初恋故事。
- “安装程序无法定位现有系统分区,也无法创建新的系统分区”提示
- 2013再见,2014你好!
- 【Python】长文详解python中的正则表达式
- PPP协议基础与工作流程
- bzoj千题计划315:bzoj3172: [Tjoi2013]单词(AC自动机)
- 8.程序员的自我修养---动态链接
- TheFatRat自动化渗透工具
- H5抽奖小游戏万圣节抓南瓜
- python嗅探器_Python中的简单原始数据包嗅探器
- 网线 绿灯长亮 黄灯不亮
- python因子分析案例_python数据分析单因子分析
- Linux Panic 机制解析
- 电脑html文件删除,电脑plugin可以删除吗
- java方法怎么用?【java方法使用教程】
- Adreno GPU上Android 游戏开发介绍 (2)
- mysql-双主模式
热门文章
- stm32与三菱PLC通信
- 现代数学的研究对象是什么
- iOS 实现QQ界面
- JS——事件详情(拖拽案例:onmousedown、onmousemove、onmouseup方法)
- B1043 输出PATest (散列)
- Arduino 声音传感器 实验
- 计算机系统的优化项目,计算机系统优化软件
- dos命令删除文件夹和文件的方法
- 2010年秋 江苏计算机二级,2011年秋江苏省计算机二级考试参考答案公布(10月15号考试)...
- FlashFXP如何上传自己制作的网页,FlashFXP如何使用