通過SkyWalking為應用埋點並上報鏈路資料至Managed Service for OpenTelemetry後,Managed Service for OpenTelemetry即可開始監控應用,您可以查看應用拓撲、調用鏈路、異常事務、慢事務和SQL分析等一系列監控資料。本文介紹如何使用SkyWalking Java Agent進行自動埋點,以及SkyWalking Java Agent可配置屬性的相關資訊。
前提條件
開啟SkyWalking下載頁面,下載SkyWalking 6.X.X或以上版本(建議下載最新穩定版本),並將解壓後的Agent檔案夾放至Java進程有存取權限的目錄。
外掛程式均放置在
/plugins
目錄中。在啟動階段將新的外掛程式放進該目錄,即可令外掛程式生效。將外掛程式從該目錄刪除,即可令其失效。另外,記錄檔預設輸出到/logs
目錄中。
日誌、外掛程式和設定檔都在Agent檔案夾中,請不要改變檔案夾結構。
背景資訊
SkyWalking是一款廣受歡迎的國產APM(Application Performance Monitoring,應用效能監控)產品,主要針對微服務、Cloud Native和容器化(Docker、Kubernetes、Mesos)架構的應用。SkyWalking的核心是一個分布式追蹤系統。
要通過SkyWalking將Java應用資料上報至Managed Service for OpenTelemetry控制台,首先需要完成埋點工作。SkyWalking既支援自動探針(Dubbo、gRPC、JDBC、OkHttp、Spring、Tomcat、Struts、Jedis等),也支援手動埋點(OpenTracing)。本文介紹自動埋點方法。
樣本Demo
範例程式碼倉庫地址:SkyWalking Demo
用SkyWalking為Java應用自動埋點
開啟
config/agent.config
,配置存取點和令牌。說明請將
<endpoint>
和<auth-token>
分別替換成控制台 頁面上SkyWalking用戶端在相應地區的存取點和鑒權令牌。關於擷取方法,請參見前提條件。collector.backend_service=<endpoint> agent.authentication=<auth-token>
採用以下方法之一配置應用程式名稱(Service Name)。
重要請將
<ServiceName>
替換為您的應用程式名稱。如果同時採用以下兩種方法,則僅第二種方法(在啟動命令列中添加參數)生效。開啟
config/agent.config
,配置應用程式名稱。agent.service_name=<ServiceName>
在應用程式的啟動命令列中添加-Dskywalking.agent.service_name參數。
java -javaagent:<skywalking-agent-path> -Dskywalking.agent.service_name=<ServiceName> -jar yourApp.jar
根據應用的運行環境,選擇相應的方法來指定SkyWalking Agent的路徑。
說明請將以下範例程式碼中的
<skywalking-agent-path>
替換為Agent檔案夾中的skywalking-agent.jar的絕對路徑。Linux Tomcat 7 / Tomcat 8
在
tomcat/bin/catalina.sh
第一行添加以下內容:CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTS
Windows Tomcat 7 / Tomcat 8
在
tomcat/bin/catalina.bat
第一行添加以下內容:set "CATALINA_OPTS=-javaagent:<skywalking-agent-path>"
JAR File或Spring Boot
在應用程式的啟動命令列中添加-javaagent參數。
重要-javaagent參數一定要在-jar參數之前。
java -javaagent:<skywalking-agent-path> -jar yourApp.jar
Jetty
在
{JETTY_HOME}/start.ini
設定檔中添加以下內容:--exec # 去掉前面的井號取消注釋。 -javaagent:<skywalking-agent-path>
重新啟動應用。
Java Agent可配置屬性
SkyWalking Java Agent支援豐富的使用者可配置屬性。完整的屬性配置詳情,請參見樣本Demo的config/agent.config檔案。
屬性列表(部分)
以下屬性以apache-skywalking-java-agent-8.16.0為準。
配置方式
系統屬性
使用-Dskywalking.
+ agent.config
設定檔的key。例如:
# 通過系統屬性配置agent.service_name
java -javaagent:/path/to/skywalking-agent.jar -Dskywalking.agent.service_name=<your_service_name> -jar your-project.jar
代理選項
在JVM參數中的代理路徑之後添加屬性即可。
# 模板
-javaagent:/path/to/skywalking-agent.jar=[key1]=[value1],[key2]=[value2]
# 舉例
java -javaagent:/path/to/skywalking-agent.jar=agent.service_name=<your-service-name>,agent.authentication=<your-token> -jar your-project.jar
系統內容變數
將屬性配置成系統內容變數,skywalking-agent會自動擷取。可以在config/agent.config檔案中查詢具體屬性對應的系統內容變數,例如agent.service_name的系統內容變數為SW_AGENT_NAME。
agent.service_name=${SW_AGENT_NAME:default_name}
# 配置環境變數
export SW_AGENT_NAME=<your_service_name>
優先順序
以上配置方式的優先順序從高到低依次為代理選項、系統屬性、系統內容變數、設定檔。
Java Agent外掛程式
SkyWalking Java Agent支援多種中介軟體、架構和庫。支援的所有外掛程式可在樣本Demo的/plugins檔案夾下查看。
啟用外掛程式
所有在/plugins檔案夾下的外掛程式都是已被啟用的外掛程式。若從/plugins中移除某個外掛程式的jar包,則表示外掛程式不可用。
官方已支援外掛程式
官方支援的外掛程式都已在/plugins檔案夾下。
可選外掛程式
Java Agent的外掛程式支援可插拔。在Agent或第三方倉庫的optional-plugins檔案夾下提供了可選的外掛程式。 想要使用可選外掛程式,可以將對應外掛程式移動到/plugins檔案夾下。
Bootstrap類外掛程式
由於意外風險,所有Bootstrap外掛程式都是可選的。Bootstrap外掛程式在bootstrap-plugins檔案夾中。若需要使用這些外掛程式,可以將目標外掛程式的jar檔案放入/plugins檔案夾下。
支援外掛程式列表
關於下面的外掛程式,官方認為可能存在效能影響或者使用限制,所以只在第三方倉庫發布。更多資訊請參見SkyAPM Java外掛程式擴充倉庫。
外掛程式開發
您可以參考官方文檔自訂開發一個SkyWalking Java Agent Plugin。
Managed Service for OpenTelemetry支援Trace上報,您可以參考官方文檔開發一個自訂的Trace Plugin。
常見問題
問:SkyWalking正常串連服務端後,無法建立應用?
答:可能是由於鏈路追蹤的資料未上報。您需要檢查是否有鏈路追蹤的資料上報,可以查看{skywalking agent path}/logs/skywalking-api.log內容。如果有資料上報,則顯示如下圖所示。
如果未產生資料上報,則可能原因是:開啟採樣、設定過濾或未觸發產生鏈路追蹤的請求。