阿里云国际站经销商,主营阿里云,腾讯云,华为云,亚马逊aws,谷歌云gcp,微软云az,免费开户,代充值优惠大,联系客服飞机@jkkddd
通过OpenTelemetry Java SDK进行手工埋点
本文主要介绍如何通过OpenTelemetry开源SDK手动埋点监控您的应用。前提条件
该功能要求ARMS探针版本为公测版本v2.7.1.3及以上。请联系ARMS钉钉服务账号arms160804,为您进行探针新版本升级。
背景信息
云原生背景下,由OpenTracing演进而来的OpenTelemetry提供了多达数十种语言的SDK ,基于一套规范的API和统一的数据格式,成为可观测的事实标准。
ARMS Java Agent从版本v2.7.1.3开始,内置对OpenTelemetry Java SDK的支持。如果您的应用已经通过OpenTelemetry Java SDK手动埋点,则无需任何改动,ARMS会将相关的Span记录作为独立入口或者内部方法栈,从而监控您的应用。如果您的应用尚未埋点,请先通过依赖OpenTelemetry Java SDK,实现手动埋点。
手动埋点
如果您的应用尚未埋点,请先通过引入以下Maven依赖,实现手动埋点。更多信息,请参见OpenTelemetry官方文档。
ARMS对OpenTelemetry埋点的兼容
ARMS对OpenTelemetry埋点的兼容的介绍涉及以下名词,OpenTelemetry相关的其他名称解释,请参见OpenTelemetry Specification。
Span:一次请求的一个具体操作,比如远程调用入口或者内部方法调用。
SpanContext:一次请求追踪的上下文,用于关联该次请求下的具体操作。
Attribute:Span的附加属性字段,用于记录关键信息。
OpenTelemetry的Span可以分为三类:
入口Span:会创建新的SpanContext,例如Server、Consumer。
以上示例代码中通过OpenTelemetry SDK创建了三个Span:
parent:按照OpenTelemetry标准是HTTP入口,但是由于ARMS在Tomcat内置代码中已经创建了链路上下文,因此这里会作为一个内部方法记录在ARMS方法栈上。
child:parent Span的内部Span,作为内部方法记录在方法栈上。
schedule:独立线程入口Span,默认情况下ARMS没有为此类入口创建上下文,因此这里会作为一个自定义方法入口,并生成相应的统计数据。
使用OpenTelemetry Baggage API透传业务自定义标签
在OpenTelemetry中,Baggage可以作为上下文信息在Span之间传递,通过向Baggage设置键值对,透传业务自定义标签。Baggage存储在HTTP Header中并通过HTTP Header进行传播,因此不应在Baggage中存储敏感数据。
以上示例代码的Parent Span先在Baggage中存储两个键值对,然后在Child Span中获取Baggage中存储的值。
获取Trace ID
SpanContext中包含Trace ID和Span ID等信息,Trace ID可以通过Span.current().getSpanContext().getTraceId()方法获得。
在ARMS控制台查看parent和child
在ARMS控制台找到/ot/parent的HTTP入口的内部方法栈,可以看到多了以下Span的展示。更多信息,请参见调用链路查询。
上一篇:阿里云账号实名注册,阿里云代理商
下一篇:阿里云账号实名,阿里云服务器购买