Metrics, tracing 和 logging 的关系

译者注

Peter Bourgon原作: Metrics, tracing, and logging

译者:吴晟

原作发表时间: 2017年2月21日

这是在OpenTracing和分布式追踪领域内广受欢迎的一篇博客文章。在构建监控系统时,大家往往在这几个名词和方式之间纠结。 通过这篇文章,作者很好的阐述了分布式追踪、统计指标与日志之间的区别和关系。

正文

今天,我很荣幸的参加了2017分布式追踪峰会(2017 Distributed Tracing Summit), 并和来自AWS/X-Ray, OpenZipkin, OpenTracing, Instana, Datadog, Librato,以及其他更多组织的同仁进行了愉快的沟通和讨论。 其中一个重要的论点,是针对监控项目的范围和定义的。作为一个分布式追踪系统,应该管理日志么?从不同角度看来,到底什么是日志?如何通过一张图形象的定位这些形形色色的系统?

总体说来,我觉得我们是在一些通用的名词间纠结。我想我们可以通过图表来定义监控的作用域,使各名词的作用范围更明确。 我们使用维恩图(Venn diagram)来描述Metrics, tracing, logging三个概念的定义。他们三者在某些情况下是重叠的,但是我尽量尝试定义他们的不同。如下图所示:

Metric的特点是,它是可累加的:他们具有原子性,每个都是一个逻辑计量单元,或者一个时间段内的柱状图。 例如:队列的当前深度可以被定义为一个计量单元,在写入或读取时被更新统计; 输入HTTP请求的数量可以被定义为一个计数器,用于简单累加; 请求的执行时间可以被定义为一个柱状图,在指定时间片上更新和统计汇总。

logging的特点是,它描述一些离散的(不连续的)事件。 例如:应用通过一个滚动的文件输出debug或error信息,并通过日志收集系统,存储到Elasticsearch中; 审批明细信息通过Kafka,存储到数据库(BigTable)中; 又或者,特定请求的元数据信息,从服务请求中剥离出来,发送给一个异常收集服务,如NewRelic。

tracing的最大特点就是,它在单次请求的范围内,处理信息。 任何的数据、元数据信息都被绑定到系统中的单个事务上。 例如:一次调用远程服务的RPC执行过程;一次实际的SQL查询语句;一次HTTP请求的业务性ID。

根据上述的定义,我们可以标记上图的重叠部分。

当然,大量的被监控的应用是具有分布式能力(Cloud-native)的应用,逻辑处理在单次请求的范围内完成。因此,讨论追踪的上下文是有意义的。 但是,我们注意到,并不是所有的监控系统都绑定在请求的生命周期上的。他们可能是逻辑组件诊断信息、处理过程的生命周期明细信息,这些信息和任何离散的请求时正交关系。 所以,不是所有的metric和log都可以被塞进追踪系统的概念中,至少在不经过数据加工处理是不行的。又或者,我们可能发觉使用metric统计数据,对应用监控有很大帮助,例如prometheus生态,可以量化的实时展现应用视图;相应的,如果我们将metric统计数据强行使用针对log的管道来处理,将使我们丢失很多特性。

那么,在这里,我们可以开始对已知的系统进行分类。如:Prometheus, 专一的metric统计系统,随着时间推移,也许会进化为追踪系统,进而进行请求内的指标统计,但不太可能深入到log处理领域。ELK生态提供log的记录,滚动和聚合,并在其他领域不停的积累更多的特性,并集成进来。

另外,我发现通过维恩图的方式展现三者关系时,会正巧展现出一个附加效应。在这三个功能域中,metric倾向于更节省资源,因为他会“天然的”压缩数据。相反,日志倾向于无限增加的,会频繁的超出预期的容量。(有另一篇我写的关于这方面的文章,查看,译者注:未翻译)。所以,我们可以在图上,绘制出容量的需求趋势,metrics低到logging高, 而trace可能处于他们两的中间位置

也许,这不是最完美的方式描述这三者的管理,但我从会议现场收到的反馈来看,这个分类还是相当不错的:随着三者的关系越清晰,我们越容易建设性的讨论其他问题。如果你尝试对产品的功能进行定位,你可能也需要这张图,在讨论中,澄清产品的位置。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jzoj6275-[NOIP提高组模拟1]小L的数列【矩阵乘法,欧拉定理】

正题 题目大意 有递推式fi∏j1kfi−jbjf_{i}\prod_{j1}^kf_{i-j}^{b_j}fi​j1∏k​fi−jbj​​ 给出f1∼kf_{1\sim k}f1∼k​和b1∼kb_{1\sim k}b1∼k​ 求fnf_nfn​ 解题思路 首先这题的指数如此之大所以不能直接存,而指数又不能直接模所以我们要用欧拉定理 (b…

快速序列化组件MessagePack介绍

简介MessagePack for C#(MessagePack-CSharp)是用于C#的极速MessagePack序列化程序,比MsgPack-Cli快10倍,与其他所有C#序列化程序相比,具有最好的性能。 MessagePack for C&#xff…

SpringCloud Greenwich(四)注册中心之eureka、Zuul和 gateway网关配置

本项目是搭建基于eureka注册中心的springcloud,使用zuul网关和gateway网关 一、框架搭建 (1)项目结构 eureka-server eureka注册中心 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 (…

欢乐纪中A组赛【2019.8.7】

前言 在短暂的比赛时间中,我发现本菜鸡越是功于心计想ACACAC,越是拿不到分,所以。。。 我不写比赛了JOJO!JOJO!JOJO! 成绩 JJJ表示初中,HHH表示高中后面加的是几年级 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC14…

【ASP.NET Core】给路由规则命名有何用处

上一篇中老周给伙伴们介绍了自定义视图搜索路径的方法,本篇咱们扯一下有关 URL 路径规则的名称问题。在扯今天的话题之前,先补充点东东。在上一篇中设置视图搜索路径时用到三个有序参数:{2}{1}{0},分别是 Area、Controller、Actio…

SpringCloud Greenwich(五)之nacos、dubbo、Zuul和 gateway集成

本项目是搭建基于nacos注册中心的springcloud,集成dubbo框架,使用zuul网关和gateway网关 一、框架搭建 (1)项目结构 micro-service 服务提供者 zuul-gateway zuul网关 springcloud-gateway gateway网关 class-provider dubo…

P4318,bzoj2440-完全平方数【二分答案,莫比乌斯函数,容斥】

正题 题目链接: https://www.luogu.org/problem/P4318 https://www.lydsy.com/JudgeOnline/problem.php?id2440 题目大意 完全平方数只对应任意一个的正整数满足d∣n,d2∤nd\mid n,d^2\nmid nd∣n,d2∤n(也就是nnn的质因数分解后都没有次数)。 求第kkk个完全平方数 解题思路…

.NET/.NET Core中更清晰的堆栈跟踪

在基于异常的语言中,堆栈跟踪是用于诊断问题最重要的工具之一。在某些情况下,开发人员能得到的仅为一条简短的错误信息以及堆栈跟踪,尤其是当个人可识别信息(PII)约束限制了日志记录的内容时。随着任务并行库&#xff…

SpringCloud Greenwich(六)集成dubbo与openfeign的feignTargeter报错,cannot access its superinterface Targeter

一、现象 org.springframework.beans.factory.BeanCreationException: Error creating bean with name feignTargeter defined in class path resource [org/springframework/cloud/openfeign/FeignAutoConfiguration$HystrixFeignTargeterConfiguration.class]: Initializati…

bzoj2226-[Spoj5971]LCMSum【欧拉函数,GCD】

正题 题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id2226 https://www.luogu.org/problem/SP5971 题目大意 求∑i1nlcm(n,i)\sum_{i1}^n lcm(n,i)i1∑n​lcm(n,i) 解题思路 ∑i1nlcm(n,i)\sum_{i1}^n lcm(n,i)i1∑n​lcm(n,i) ∑i1nnigcd(n,i)\sum_{i1}^n \fr…

一个开源的强类型客户端(.NET 中的 Open Fegin)— Rabbit Go

在做RabbitCloud(之前是一个RPC,现在是一个微服务框架)的时候往往避不开客户端代理,之前把这些客户端代理都算作服务框架不可缺少的一部分,随着后期的深入发现这些客户端代理其实可以互通,类似spring cloud…

SpringCloud Greenwich(七)集成dubbo先启动消费者(check=false),然后启动提供者无法自动发现注册

SpringCloud Greenwich集成dubbo先启动消费者(checkfalse),然后启动提供者无法自动发现注册问题。 官方说明:修复bug的提交时间 spring-cloud-starter-dubbo 2.2.4.RELEASE之前的版本都会有先启动消费者(checkfalse&am…

bzoj2186,P2155-[SDOI2008]沙拉公主的困惑【线性筛,欧拉函数,逆元】

正题 题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id2186 https://www.luogu.org/problem/P2155 题目大意 求∑i1n!((i,m!)1)\sum_{i1}^{n!}((i,m!)1)i1∑n!​((i,m!)1) 解题思路 因为gcd(m!,i)1⇒gcd(m!,im!)1gcd(m!,i)1\Rightarrow gcd(m!,im!)1gcd(m!,i)1…

.NET Core 实现定时抓取博客园首页文章信息并发送到邮箱

前言大家好,我是晓晨。许久没有更新博客了,今天给大家带来一篇干货型文章,一个每隔5分钟抓取博客园首页文章信息并在第二天的上午9点发送到你的邮箱的小工具。比如我在2018年2月14日,9点来到公司我就会收到一封邮件,是…

Linux shell echo打印不出换行

一、现象 echo打印不出换行 指令 ps aux | grep python ps aux | grep python | xargs echo 运行结果: 二、使用参数-e echo一样打印不出换行 ps aux | grep python | xargs echo -e 运行结果: 三、使用参数-e和双引号包裹占位符 echo终于可以…

jzoj6286,P4442-走格子(Portal)【BFS,SPFA】

正题 题目链接:https://www.luogu.org/problem/P4442 题目大意 一个n∗mn*mn∗m的矩阵,有墙。然后每次可以上下左右或者走入传传送门。当然也可以像上下左右任意一个方向发射传送门(直到碰到墙)但这并不会消耗时间。 求起点到终点的最短时间。 解题思路 首先我们…

基于Citus和ASP.NET Core开发多租户应用

Citus是基于PsotgreSQL的扩展,用于切分PsotgreSQL的数据,非常简单地实现数据“切片(sharp)”。如果不使用Citus,则需要开发者自己实现分布式数据访问层(DDAL),实现路由和结果汇总等逻…

jzoj6287-扭动的树【区间dp】

正题 题目大意 一颗二叉查找树,以keyikey_ikeyi​为建值,以pip_ipi​为价值。然后一个节点的sumsumsum定义为这棵子树的价值之和。 要求相邻两个节点不互质的情况下所有节点的最大sumsumsum值之和。 解题思路 二叉查找树满足中序遍历的建值从小到大&a…

SpringCloud Zuul(一)之介绍

一、zuul官方简介 (1)什么是zuul Zuul是从设备和网站到Netflix流媒体应用程序后端的所有请求的前门。作为边缘服务应用程序,Zuul旨在实现动态路由,监视,弹性和安全性。它还可以根据需要将请求路由到多个Amazon Auto …

ASP.NET CORE 微服务(简化版)实战系列-没有比这性价比再高的实战课程了

ASP.NET CORE 微服务(简化版)实战系列,最后1天298,现在注册购买再减50。作者jesse 腾飞在2.14 早上我买了他的课程后,他才做了下面这个活动:作者jesse 腾飞花了大量的时间做了一个非常好的视频教程,我个人也…