阿里云國(guó)際站經(jīng)銷商,主營(yíng)阿里云,騰訊云,華為云,亞馬遜aws,谷歌云gcp,微軟云az,免費(fèi)開(kāi)戶,代充值優(yōu)惠大,聯(lián)系客服飛機(jī)@jkkddd
通過(guò)OpenTelemetry Java SDK進(jìn)行手工埋點(diǎn)
本文主要介紹如何通過(guò)OpenTelemetry開(kāi)源SDK手動(dòng)埋點(diǎn)監(jiān)控您的應(yīng)用。前提條件
該功能要求ARMS探針版本為公測(cè)版本v2.7.1.3及以上。請(qǐng)聯(lián)系A(chǔ)RMS釘釘服務(wù)賬號(hào)arms160804,為您進(jìn)行探針新版本升級(jí)。
背景信息
云原生背景下,由OpenTracing演進(jìn)而來(lái)的OpenTelemetry提供了多達(dá)數(shù)十種語(yǔ)言的SDK ,基于一套規(guī)范的API和統(tǒng)一的數(shù)據(jù)格式,成為可觀測(cè)的事實(shí)標(biāo)準(zhǔn)。
ARMS Java Agent從版本v2.7.1.3開(kāi)始,內(nèi)置對(duì)OpenTelemetry Java SDK的支持。如果您的應(yīng)用已經(jīng)通過(guò)OpenTelemetry Java SDK手動(dòng)埋點(diǎn),則無(wú)需任何改動(dòng),ARMS會(huì)將相關(guān)的Span記錄作為獨(dú)立入口或者內(nèi)部方法棧,從而監(jiān)控您的應(yīng)用。如果您的應(yīng)用尚未埋點(diǎn),請(qǐng)先通過(guò)依賴OpenTelemetry Java SDK,實(shí)現(xiàn)手動(dòng)埋點(diǎn)。
手動(dòng)埋點(diǎn)
如果您的應(yīng)用尚未埋點(diǎn),請(qǐng)先通過(guò)引入以下Maven依賴,實(shí)現(xiàn)手動(dòng)埋點(diǎn)。更多信息,請(qǐng)參見(jiàn)OpenTelemetry官方文檔。
ARMS對(duì)OpenTelemetry埋點(diǎn)的兼容
ARMS對(duì)OpenTelemetry埋點(diǎn)的兼容的介紹涉及以下名詞,OpenTelemetry相關(guān)的其他名稱解釋,請(qǐng)參見(jiàn)OpenTelemetry Specification。
Span:一次請(qǐng)求的一個(gè)具體操作,比如遠(yuǎn)程調(diào)用入口或者內(nèi)部方法調(diào)用。
SpanContext:一次請(qǐng)求追蹤的上下文,用于關(guān)聯(lián)該次請(qǐng)求下的具體操作。
Attribute:Span的附加屬性字段,用于記錄關(guān)鍵信息。
OpenTelemetry的Span可以分為三類:
入口Span:會(huì)創(chuàng)建新的SpanContext,例如Server、Consumer。
以上示例代碼中通過(guò)OpenTelemetry SDK創(chuàng)建了三個(gè)Span:
parent:按照OpenTelemetry標(biāo)準(zhǔn)是HTTP入口,但是由于ARMS在Tomcat內(nèi)置代碼中已經(jīng)創(chuàng)建了鏈路上下文,因此這里會(huì)作為一個(gè)內(nèi)部方法記錄在ARMS方法棧上。
child:parent Span的內(nèi)部Span,作為內(nèi)部方法記錄在方法棧上。
schedule:獨(dú)立線程入口Span,默認(rèn)情況下ARMS沒(méi)有為此類入口創(chuàng)建上下文,因此這里會(huì)作為一個(gè)自定義方法入口,并生成相應(yīng)的統(tǒng)計(jì)數(shù)據(jù)。
使用OpenTelemetry Baggage API透?jìng)鳂I(yè)務(wù)自定義標(biāo)簽
在OpenTelemetry中,Baggage可以作為上下文信息在Span之間傳遞,通過(guò)向Baggage設(shè)置鍵值對(duì),透?jìng)鳂I(yè)務(wù)自定義標(biāo)簽。Baggage存儲(chǔ)在HTTP Header中并通過(guò)HTTP Header進(jìn)行傳播,因此不應(yīng)在Baggage中存儲(chǔ)敏感數(shù)據(jù)。
以上示例代碼的Parent Span先在Baggage中存儲(chǔ)兩個(gè)鍵值對(duì),然后在Child Span中獲取Baggage中存儲(chǔ)的值。
獲取Trace ID
SpanContext中包含Trace ID和Span ID等信息,Trace ID可以通過(guò)Span.current().getSpanContext().getTraceId()方法獲得。
在ARMS控制臺(tái)查看parent和child
在ARMS控制臺(tái)找到/ot/parent的HTTP入口的內(nèi)部方法棧,可以看到多了以下Span的展示。更多信息,請(qǐng)參見(jiàn)調(diào)用鏈路查詢。
心靈雞湯:
標(biāo)題:阿里云賬號(hào)實(shí)名注冊(cè),阿里云國(guó)際站
地址:http://m.nickbaillie.com/kfxw/64435.html