本篇文章1511字,讀完約4分鐘
阿里云國際站經(jīng)銷商,主營阿里云,騰訊云,華為云,亞馬遜aws,谷歌云gcp,微軟云az,免費開戶,代充值優(yōu)惠大,聯(lián)系客服飛機@jkkddd
通過OpenTelemetry Java SDK進行手工埋點
本文主要介紹如何通過OpenTelemetry開源SDK手動埋點監(jiān)控您的應用。前提條件
該功能要求ARMS探針版本為公測版本v2.7.1.3及以上。請聯(lián)系A(chǔ)RMS釘釘服務賬號arms160804,為您進行探針新版本升級。
背景信息
云原生背景下,由OpenTracing演進而來的OpenTelemetry提供了多達數(shù)十種語言的SDK ,基于一套規(guī)范的API和統(tǒng)一的數(shù)據(jù)格式,成為可觀測的事實標準。
ARMS Java Agent從版本v2.7.1.3開始,內(nèi)置對OpenTelemetry Java SDK的支持。如果您的應用已經(jīng)通過OpenTelemetry Java SDK手動埋點,則無需任何改動,ARMS會將相關(guān)的Span記錄作為獨立入口或者內(nèi)部方法棧,從而監(jiān)控您的應用。如果您的應用尚未埋點,請先通過依賴OpenTelemetry Java SDK,實現(xiàn)手動埋點。
手動埋點
如果您的應用尚未埋點,請先通過引入以下Maven依賴,實現(xiàn)手動埋點。更多信息,請參見OpenTelemetry官方文檔。
ARMS對OpenTelemetry埋點的兼容
ARMS對OpenTelemetry埋點的兼容的介紹涉及以下名詞,OpenTelemetry相關(guān)的其他名稱解釋,請參見OpenTelemetry Specification。
Span:一次請求的一個具體操作,比如遠程調(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標準是HTTP入口,但是由于ARMS在Tomcat內(nèi)置代碼中已經(jīng)創(chuàng)建了鏈路上下文,因此這里會作為一個內(nèi)部方法記錄在ARMS方法棧上。
child:parent Span的內(nèi)部Span,作為內(nèi)部方法記錄在方法棧上。
schedule:獨立線程入口Span,默認情況下ARMS沒有為此類入口創(chuàng)建上下文,因此這里會作為一個自定義方法入口,并生成相應的統(tǒng)計數(shù)據(jù)。
使用OpenTelemetry Baggage API透傳業(yè)務自定義標簽
在OpenTelemetry中,Baggage可以作為上下文信息在Span之間傳遞,通過向Baggage設(shè)置鍵值對,透傳業(yè)務自定義標簽。Baggage存儲在HTTP Header中并通過HTTP Header進行傳播,因此不應在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)用鏈路查詢。
標題:阿里云賬號實名注冊,阿里云國際站
地址:http://www.pengfei-china.com/kfxw/64435.html