全部產品
Search
文件中心

Application Real-Time Monitoring Service:Java應用自訂配置

更新時間:Dec 14, 2024

您可以在自訂配置頁簽上調整探針功能開關、採樣策略等常用設定。

說明

如果您需要使用API方式調整,請參見SaveTraceAppConfig

前提條件

重要

ARMS應用監控面向已開通新版計費的使用者提供全新的監控詳情頁面,新版計費詳情,請參見產品計費(新版)

對於未開通新版計費的使用者,如需查看新版監控詳情頁面,可在應用列表頁面單擊切換新版

已為應用安裝探針,具體操作,請參見應用監控接入概述

功能入口

  1. 登入ARMS控制台,在左側導覽列選擇應用監控 > 應用列表

  2. 應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。

    說明

    語言列的表徵圖含義如下:

    Java表徵圖:接入應用監控的Java應用。

    image:接入應用監控的Golang應用。

    image:接入應用監控的Python應用。

    -:接入Managed Service for OpenTelemetry的應用。

  3. 在上方導覽列選擇應用配置 > 自訂配置

  4. 設定自訂配置參數,設定完成後,單擊儲存

採樣設定

採樣設定地區,可以為調用鏈設定採樣策略和採樣介面名稱。更多詳細,請參見調用鏈取樣模式選擇(3.2.8及以上探針版本)

image.png

探針開關設定

探針開關設定地區,可以控制應用監控的啟停並調整各外掛程式開關。

重要

應用監控的啟停修改即時生效,無需重啟應用。如果暫停應用監控,則系統將無法監控您的應用,請謹慎操作。要使對各外掛程式開關的修改生效,必須手動重啟應用。

image.png

線程分析設定

線程分析設定地區,可以開啟或關閉線程分析總控開關、定期儲存本地方法棧資訊開關,並設定高耗時調用閾值。

說明

服務調用耗時超過慢調用監聽觸發閾值(預設值為2000毫秒)時才會啟動監聽,並一直持續到該次調用結束或超過15秒。建議將此閾值設為調用耗時的第99百分位元。假設有100次調用,則按耗時從小到大排序,排在第99位的耗時就是第99百分位元。

image.png

應用日誌關聯配置

應用日誌關聯配置地區,可以設定應用關聯的日誌源資訊,自動填滿TraceId、SpanId。更多資訊,請參見日誌分析

image

  • 自動填滿TraceId、SpanId配置作用:開啟後,無需手動修改日誌設定檔即可往日誌中自動注入Trace ID、Span ID。

    配置效果

    如下圖所示,在未修改日誌設定檔情況下,log4j、log4j2、logback均自動在日誌中列印了Trace ID和Span ID。

    image

  • 支援日誌MDC中添加traceId:4.x探針中預設不再支援通過org.slf4j.MDC.get(“EagleEye-TraceID”)方式擷取TraceId,如果仍需通過該方式擷取,可以開啟當前開關。

URL收斂設定

URL收斂設定地區,可以開啟或關閉收斂功能的開關,並設定收斂閾值、收斂規則。URL收斂是指將具有相似性的一系列URL作為一個單獨的個體展示,例如將前半部分都為/service/demo/的一系列URL集中展示。收斂閾值是指要進行URL收斂的最低數量條件,例如當閾值為100時,則符合規則Regex的URL數量達到100才會對它們進行收斂。更多資訊,請參見ARMS收斂機制說明

image.png

Arthas監控

Arthas監控地區,可以開啟或關閉Arthas診斷功能,並設定生效IP。更多資訊,請參見Arthas診斷

image.png

持續剖析設定

持續剖析設定地區,可以開啟或關閉總開關、CPU熱點、記憶體熱點、代碼熱點功能,並設定生效IP或網段。更多資訊,請參見Java應用持續剖析

image.png

資訊脫敏設定

資訊脫敏設定地區,通過設定脫敏規則,探針將對JVM系統參數、K8s Yaml、方法入參、Arthas環境變數和系統變數等內容在採集時進行脫敏處理。脫敏規則中各元素通過英文半形逗號分隔,每一個元素代表一個不區分大小寫Regex,以password為例,脫敏規則等同於Regex.*password.*資訊脫敏

探針在採集資料時會對資料的key按照對應的運算式進行過濾,如果滿足條件,該key會被認為包含敏感性資料進行脫敏處理。如下圖所示,當脫敏規則為licenseKey時,其對-Darms.licenseKey為key的資訊進行了脫敏處理。資訊脫敏2

介面調用配置

介面調用配置地區,可以設定慢調用閾值、異常白名單、HTTP狀態代碼白名單、無效介面調用過濾等策略。

image

  • 慢調用閾值:預設為500,當介面回應時間大於該閾值的時候,該介面會被標記為慢調用。

  • 異常白名單:輸入不需要查看的異常名,從而將其從異常相關圖表隱去。使用Regex匹配異常全名,多個異常規則請使用英文半形逗號(,)分隔。

  • 異常過濾父類繼承:異常過濾中可配置父類異常。所有繼承該父類的異常都會被過濾。該功能僅支援4.1.6及以上版本探針。

    開啟後,所有異常過濾中配置類的子類也會被過濾。

  • HTTP狀態代碼白名單:輸入不需要查看調用情況的介面,從而將其從介面調用頁面隱去。精確匹配HTTP狀態代碼,多個狀態代碼請使用英文半形逗號(,)分隔。

  • 無效介面調用過濾:輸入不需要查看調用情況的介面,從而將其從介面調用頁面隱去。使用Regex匹配無效介面全名,多個規則請使用英文半形逗號(,)分隔。

  • 介面調用指標是否記錄上遊介面名介面調用指標是否記錄上遊應用程式名稱

    配置作用:控制介面指標中是否記錄調用該介面的上遊應用和上遊介面,主要影響提供服務中的鏈路上下遊是否有資料。當應用的上遊應用較多時,記錄該資訊可能導致指標上報量劇增,增加費用。

    配置效果:如圖所示,關閉了介面指標記錄上遊應用和介面,可以看到相應的資料降為0。

    2024-10-31_14-51-35

  • 介面調用指標是否記錄原始狀態代碼

    配置作用:在HTTP介面相關指標中記錄原始的響應碼。

    配置效果:

    image

資料庫調用配置

資料庫調用配置地區,可以設定慢SQL閾值、採集SQL最大保留長度,並設定是否展示SQL中的變數綁定值以及常量值,是否記錄MySQL查詢傳回值大小。

  • 展示SQL中的變數綁定值:捕獲PrepareStatement參數綁定的變數值,無需重啟應用即可生效。

  • 展示SQL中的常量值:僅對SQL截斷,不做額外處理,無需重啟應用即可生效。

image

調用鏈透傳通訊協定設定

調用鏈透傳通訊協定設定地區,您可以根據自己的需求選擇使用的Trace協議,ARMS支援的Trace協議請參見ARMS支援Tracing協議

image

預設情況下,當一次調用到來時,ARMS探針會按照EagleEye、OpenTelemetry、SkyWalking、Jaeger、Zipkin的順序依次探測是否存在該協議約定的要求標頭,如果探測到某個協議存在,則按照該協議約定恢複Trace上下文,後續調用下遊時,也按照該協議約定往請求中塞入相關Header。當上述檢測都失敗時,預設使用EagleEye協議。

您可以在該頁面選擇任一協議作為優先協議。選擇並儲存後,ARMS會優先探測是否存在該協議約定的要求標頭。例如,按照如下配置,當一次調用到來時,ARMS探針將會改為按照Jaeger、EagleEye、OpenTelemetry、SkyWalking、Zipkin的順序依次探測是否存在協議約定上下文。

image

您也可以選擇強制使用某一種協議。例如,按照如下配置,當一次調用到來時,ARMS探針只會探測是否存在Jaeger協議約定的要求標頭,如果不存在,不會依次檢測其他協議,而是重建新的Trace上下文。

image

配置作用:

支援選擇優先或者強制使用的Tracing透傳協議,一般有以下幾種使用情境:

  • 請求攜帶多種格式的Trace上下文,預設的解析順序不滿足要求,想要指定優先使用某種協議。比如同時攜帶W3C和Zipkin的Trace上下文,預設情況下優先解析W3C的Trace上下文,可以通過設定透傳協議為Zipkin改為優先解析Zipkin協議

  • 請求攜帶Trace協議頭,但是不想複用該協議頭,想要按照另外一種協議產生新的Trace上下文。比如同時攜帶Zipkin的Trace上下文,預設情況下會解析Zipkin的Trace上下文,可以通過設定透傳協議為w3c,並將透傳模式改為強制,這樣就會忽略zipkin的trace上下文,並按照w3c的協議規範產生新的上下文,需要注意,如果此時不將透傳模式改為強制,則在優先按照w3c解析上下文失敗後,仍然會按照zipkin協議解析上下文

配置效果:

配置後,在調用鏈的每一個LocalRootSpan中會有一個key為trace.protocol.type,value為當前鏈路trace協議的attribute

image

訊息佇列配置

訊息佇列配置地區,您可以自訂消費者資訊。

image

  • 自訂RabbitMQ消費者:通過設定自訂消費者的類名或者包含匿名內部消費者的類名,可以看到該消費者的調用鏈路。多個消費者以英文半形逗號(,)分隔。

  • 自訂Kafka消費方法:通過自訂消費方法,可以在通過Kafka原生SDK消費訊息的情境下看到鏈路以及指標資料。

  • Kafka發送訊息自動透傳上下文:發送時自動往Kafka訊息中添加若干個Header用於關聯發送鏈路和消費鏈路。

探針採集配置

探針採集配置地區,可以設定探針每秒最大鏈路採集量、最大可處理QPS閾值和探針記錄層級。

image

  • 是否採集調用鏈:控制調用鏈資料是否上報,預設開啟,關閉後,調用鏈資料不再上報。

  • 探針每秒最大鏈路採集量:探針每秒最大可以處理的請求數量,預設為100,大於該閾值的調用鏈不會被收集。

  • 探針記錄層級:調整探針日誌的列印層級,用於問題排查。

異常進階過濾配置

異常進階過濾配置地區,可以設定異常採集規則。

2024-11-05_16-00-28

  • 採集所有異常:開啟後,每一個異常執行個體初始化時都會被採集,理論上可以記錄當前應用所有的異常對象。

    配置效果:開啟後,下圖所示程式碼片段中try catch捕獲到的異常也能在ARMS控制台看到。

    image

    控制台顯示樣本:

    2024-11-05_16-14-29

  • 異常過濾父類繼承:開啟後,如果當前採集到異常是異常過濾白名單中配置的異常類的子類,則也會被過濾。

    配置效果:滿足過濾條件的異常將不會展示在ARMS控制台。

  • 異常message過濾:配置後,指定類型異常的message欄位滿足配置條件時也會被過濾。

    • 異常名稱:指定對哪個異常生效。

    • message條件:異常message的條件、可以是startsWith、endWith或contains。

    • message關鍵字:關鍵字字串。

    配置效果:滿足過濾條件的異常將不會展示在ARMS控制台。

池化監控配置

池化監控配置地區,可以設定線程池、串連池相關採集規則。

  • 線程池、串連池監控:支援Tomcat/Dubbo/HSF等架構的線程池指標監控,需升級探針至最新版本。

  • 線程池線程名模式提取策略:該功能預設將線程池中任意一個運行線程的線程名中所有數字字元替換為*,您也可以調整為僅將線程名的結尾字元替換為*。一般在應用中啟動了多個Dubbo Provider,且不同Dubbo Provider的監聽連接埠不一致的情況下,如果按照預設策略,則兩個Dubbo Provider中的兩個線程池因為提取出來的線程名模板相同會被彙總成一個,此時可以通過調整該策略來區分為兩個線程池。

    配置效果:以常見的Tomcat線程池為例,預設情況下展示的線程池線程名為http-nio-*-exec-*,調整後線程名為http-nio-9099-exec-*

    image

  • 線程池使用情境過濾線程池線程名模式過濾:按照線程池使用情境和線程池線程名模式過濾不上報某些線程池的監控指標。

    • 線程池使用情境:指該線程使用的情境,目前支援Tomcat、Vert.x、Undertow、Dubbo、Jetty、AliyunJavaAgent、default幾種,其中AliyunJavaAgent代表探針使用的線程池,default代表未歸類的其他線程池。

    • 線程池線程名模式:指該線程池中線程名經過處理得到的線程名模式,例如http-nio-*-exec-*一般是將實際線程中數字部分替換為*後得到線程名。

    樣本:線程池使用情境過濾設定為AliyunJavaAgent線程池線程名模式過濾設定為Catalina-utility-*代表AliyunJavaAgent這個情境下所有線程池資料不上報,其他情境下如果線程池模式名為Catalina-utility-*則也不上報。

進階設定

進階設定地區,可以設定需過濾的介面、方法堆棧最大長度等。

  • 分位元統計:是否開啟分位元統計功能。

  • 方法堆棧最大保留長度:預設為128條,最大值為400條。

  • 調用鏈壓縮:是否將重複調用(例如for迴圈)簡化。

  • 請求入參最大展示長度:預設為512字元,支援的最大長度為2048字元。

  • 非同步透傳掃描包名:添加非同步透傳掃描包實現非同步任務監控。非同步透傳掃描包中的Runnable、Callable和Supplier介面在建立新對象時會自動捕獲當前線程調用鏈的上下文,並在非同步線程中執行時使用該調用鏈上下文,完成串聯。

  • HTTP返回結果中包含TraceId:僅針對HTTP類型的請求,在Response Header中返回欄位為eagleeye-traceid。

  • 加密上報:開啟後,ARMS將通過TLS加密上報資料。

將配置複製到其他應用

如果您需要為其他應用同步相同配置,可以將對應配置複製到其他應用上。

將單個配置複製到其他應用

  1. 在對應配置地區單擊儲存並批量複製到其他應用

  2. 如果彈出當前設定未儲存對話方塊,請單擊確定儲存本應用配置後,再單擊儲存並批量複製到其他應用

  3. 在彈出的對話方塊中選擇生效的應用,然後單擊確定

將所有配置複製到其他應用

  1. 在頁面底部單擊儲存並批量複製到其他應用

  2. 如果彈出當前設定未儲存對話方塊,請單擊確定儲存本應用配置後,再單擊儲存並批量複製到其他應用

  3. 在彈出的對話方塊中選擇生效的應用,然後單擊確定

全域預設配置

您可以將當前配置儲存為全域預設配置,在之後建立新應用時將會預設使用當前配置。

  1. 在頁面底部單擊儲存當前應用設定為全域預設配置

  2. 如果彈出當前設定未儲存對話方塊,請單擊確定儲存本應用配置後,再單擊儲存當前應用設定為全域預設配置

  3. 在彈出的對話方塊中單擊確認

常見問題

應用設定開關設定不生效

查看需要修改的配置項是否有版本要求,例如在某個探針版本之後開關預設開啟或預設關閉。

  • 如果有,查看當前探針版本是否滿足要求。如果不滿足,則需要手動單擊一次儲存觸發生效;如果滿足,則查看探針日誌,看是否有配置監聽相關日誌。

  • 如果沒有,查看探針日誌,確認是否有配置監聽相關日誌。

    • 對於3.x版本探針,搜尋索引鍵[Diamond] receive,出現下圖所示內容則表示配置正常推送。

      image

    • 對於4.x版本探針 ,搜尋索引鍵config update,出現下圖所示日誌則表示配置正常推送。

      image

採樣率調整後不生效

一個應用的採樣率隻影響以該應用為入口的調用鏈是否採樣,如果一次請求中本身攜帶了Trace上下文,那麼該應用會還原該Trace上下文,並按照該Trace上下文是否聲明採樣來決定是否採樣。

配置非同步透傳掃描包後對於lambda運算式不支援

建議升級到4.x版本探針,該版本支援非同步上下文自動透傳,無需額外改造代碼或修改配置。

建立應用並沒有按照全域預設配置生效

當儲存應用A的當前配置為全域預設配置後,僅是將應用A當前配置的快照儲存為全域默配置,後續應用A的配置變更並不會同步到全域預設配置,需要重新單擊儲存為全域預設配置後才會生效。

/error介面配置不生效

對於3.2.0之前版本的探針,介面過濾是在一個調用介面剛進入應用時執行過濾。而/error類介面是在調用介面報錯時被統一dispatch到/error頁面,此時未進行過濾操作,因此導致介面過濾不生效。3.2.0及之後版本探針已修複了該問題。

關閉了URL收斂開關後依然收斂

  • 自訂配置頁面的URL收斂設定地區僅針對3.x探針生效,4.x探針需要進入應用配置 > 收斂設定頁面進行相關配置。

  • 小於3.x版本的探針,如果應用使用了SpringMVC,則會導致當前問題,請將探針升級至3.x或以上版本。