阿里云國際站經(jīng)銷商,主營阿里云,騰訊云,華為云,亞馬遜aws,谷歌云gcp,微軟云az,免費開戶,代充值優(yōu)惠大,聯(lián)系客服飛機@jkkddd


通過OpenTelemetry Java SDK進(jìn)行手工埋點

本文主要介紹如何通過OpenTelemetry開源SDK手動埋點監(jiān)控您的應(yīng)用。
前提條件
該功能要求ARMS探針版本為公測版本v2.7.1.3及以上。請聯(lián)系A(chǔ)RMS釘釘服務(wù)賬號arms160804,為您進(jìn)行探針新版本升級。
背景信息
云原生背景下,由OpenTracing演進(jìn)而來的OpenTelemetry提供了多達(dá)數(shù)十種語言的SDK ,基于一套規(guī)范的API和統(tǒng)一的數(shù)據(jù)格式,成為可觀測的事實標(biāo)準(zhǔn)。
ARMS Java Agent從版本v2.7.1.3開始,內(nèi)置對OpenTelemetry Java SDK的支持。如果您的應(yīng)用已經(jīng)通過OpenTelemetry Java SDK手動埋點,則無需任何改動,ARMS會將相關(guān)的Span記錄作為獨立入口或者內(nèi)部方法棧,從而監(jiān)控您的應(yīng)用。如果您的應(yīng)用尚未埋點,請先通過依賴OpenTelemetry Java SDK,實現(xiàn)手動埋點。
手動埋點
如果您的應(yīng)用尚未埋點,請先通過引入以下Maven依賴,實現(xiàn)手動埋點。更多信息,請參見OpenTelemetry官方文檔。
ARMS對OpenTelemetry埋點的兼容
ARMS對OpenTelemetry埋點的兼容的介紹涉及以下名詞,OpenTelemetry相關(guān)的其他名稱解釋,請參見OpenTelemetry Specification。
Span:一次請求的一個具體操作,比如遠(yuǎn)程調(diào)用入口或者內(nèi)部方法調(diào)用。
SpanContext:一次請求追蹤的上下文,用于關(guān)聯(lián)該次請求下的具體操作。
Attribute:Span的附加屬性字段,用于記錄關(guān)鍵信息。
OpenTelemetry的Span可以分為三類:
入口Span:會創(chuàng)建新的SpanContext,例如Server、Consumer。
以上示例代碼中通過OpenTelemetry SDK創(chuàng)建了三個Span:
parent:按照OpenTelemetry標(biāo)準(zhǔn)是HTTP入口,但是由于ARMS在Tomcat內(nèi)置代碼中已經(jīng)創(chuàng)建了鏈路上下文,因此這里會作為一個內(nèi)部方法記錄在ARMS方法棧上。
child:parent Span的內(nèi)部Span,作為內(nèi)部方法記錄在方法棧上。
schedule:獨立線程入口Span,默認(rèn)情況下ARMS沒有為此類入口創(chuàng)建上下文,因此這里會作為一個自定義方法入口,并生成相應(yīng)的統(tǒng)計數(shù)據(jù)。
使用OpenTelemetry Baggage API透傳業(yè)務(wù)自定義標(biāo)簽
在OpenTelemetry中,Baggage可以作為上下文信息在Span之間傳遞,通過向Baggage設(shè)置鍵值對,透傳業(yè)務(wù)自定義標(biāo)簽。Baggage存儲在HTTP Header中并通過HTTP Header進(jìn)行傳播,因此不應(yīng)在Baggage中存儲敏感數(shù)據(jù)。
以上示例代碼的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入口的內(nèi)部方法棧,可以看到多了以下Span的展示。更多信息,請參見調(diào)用鏈路查詢。

心靈雞湯:

標(biāo)題:阿里云賬號實名注冊,阿里云國際站

地址:http://www.busanamuslimtrendy.com/kfxw/64435.html