本文介紹了採集部署的流程。
1.預檢查
確保collector部署在沒有線上應用的獨立伺服器上。
確保已配置JAVA_HOME,JDK版本1.6+。
2.啟動
Unix系統,在collector目錄下執行:
`./run.sh`
Windows系統, 在collector目錄下執行:
`start /b java -jar javaagent-collector.jar`
驗證:查看collector/logs/collector.log日誌,顯示啟動成功即部署成功。
如有報錯,請參見應用採集器常見問題。
採集器javaagent
1.啟動前的配置
確保環境變數已配置JAVA_HOME,否則設定 attach.sh 中 JAVA_HOME 地址為jdk的絕對路徑(注意:如客戶使用jre而非jdk,需要自己將tools.jar拷貝到${JAVA_HOME}/lib/目錄下)。
配置javaagent.config:
profiler.collector.ip = 11.23.45.67
# collector的ipprofiler.collector.port = 9996
# collector的連接埠profiler.app.name = adamApp
#應用程式名稱,少於20個字元的字母、數字組合 。profiler.app.port = 8080
#應用啟動連接埠,應用有很多個不同功能的連接埠,只配請求的那個連接埠即可,一個JVM下無論是否一個應用都只配置一個profiler.applicationservertype = TOMCAT
# 應用中介軟體容器類型,TOMCAT\JBOSS\WEBLOGIC等。
以下非必選配置
配置應用需要檢測的Java代碼的目錄首碼。替換下面樣本,多個目錄用英文逗號分隔,每個至少2級目錄,建議不超過5個;
應用採集時根據精準的調用棧資訊,在資料庫改動時能同步給出明確的應用改動建議。
如不能全部提供則可以不寫,後續在阿里雲Adam分析頁面進行過濾設定。
`profiler.classpath.whitelist = com.alibaba.javaagent,com.alibaba.adam`
如上面白名單已填寫,此處可忽略;如果不清楚白名單列表,填寫黑名單也可過濾無用的調用棧資訊。
`profiler.classpath.blacklist =org.apache,net.sf`
配置當cpu達到多少時暫停資料擷取。
`profiler.cpu.threshold = 85`
系統資訊收集間隔,預設15分鐘。
`profiler.sys.send.interval = 15`
sql動態資訊收集間隔,預設15分鐘。
`profiler.sql.dynamic.send.interval = 15`
2.啟動方式
啟動方式一:不重啟應用,agent單次臨時監控
javaagent目錄增加操作許可權;確保agent啟動的帳號和應用啟動帳號一致;找到應用的進程號PID,在javaagent目錄執行(將${pid}
整體替換為應用的進程號):
Unix系統,執行:
`./attach.sh -p ${pid}`
Windows系統,執行:
`java -cp "%JAVA_HOME%\lib\tools.jar;%cd%\javaagent-bootstrap.jar" com.alibaba.adam.javaagent.bootstrap.AgentAttacher -p ${pid}`
查看javaagent目錄下log檔案,提示啟動成功,應用有流量進入後,查看collector的目錄下有data目錄且有資料,說明agent啟動成功且正確發送資料到collector。如有報錯,請參見應用採集器常見問題。
確保應用的PID擷取正確。
啟動agent的帳號和應用啟動帳號保持一致,且許可權也要一致,否則無法監控。(windows下註冊表SYSTEM啟動的應用無法通過啟動方式一啟動,原因是帳號許可權不一致)。
啟動方式二:隨應用一起啟動監控(推薦)
應用增加javaagent配置重啟即可(${javaagent_path}
整體替換為javaagent的目錄)。
Unix系統
Tomcat:在catalina.sh開機檔案最後一個CATALINA_OPTS配置後面增加:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
Jboss:在run.conf開機檔案最後一個JAVA_OPTS配置後面增加:
JAVA_OPTS="$JAVA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
Weblogic:在startWebLogic.sh開機檔案最後一個JAVA_OPTIONS配置後面增加:
JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
Websphere:
方式1 設定檔增加: JAVA_OPTS="$JAVA_OPTS -javaagent:/home/admin/javaagent/javaagent-bootstrap.jar"
方式2 頁面配置: 通用JVM參數(Java Virtual Machine)加上:
name:javaagent value:/home/admin/javaagent/javaagent-bootstrap.jar
k8s叢集docker容器:
將javaagent目錄放入docker鏡像中並對應增加-javaagent配置,一起打包鏡像部署。
Windows系統
Tomcat:在catalina.bat開機檔案最後一個CATALINA_OPTS配置後面增加:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
Jboss:在run.conf開機檔案最後一個JAVA_OPTS配置後面增加:
JAVA_OPTS="$JAVA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
Weblogic:在startWebLogic.cmd開機檔案最後一個JAVA_OPTIONS配置後面增加:
JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
Websphere:
方式1 設定檔增加: JAVA_OPTS="$JAVA_OPTS -javaagent:/home/admin/javaagent/javaagent-bootstrap.jar"
方式2 頁面配置: 通用JVM參數(Java Virtual Machine)加上:
name:javaagent value:/home/admin/javaagent/javaagent-bootstrap.jar
應用啟動後查看應用的日誌,顯示Java Agent load successfully!
表示啟動成功,如報錯根據錯誤原因進行修改,如未顯示任何agent資訊表示配置路徑不對導致未載入。
優缺點
啟動方式 | 優點 | 缺點 | 適用情境 |
---|---|---|---|
啟動方式一 | 對全新應用無須重啟即可設定agent監控。 | 每次應用重啟agent需手動啟動; 啟動agent的帳號必須和應用保持一致。 | 應用長期不重啟且重啟會造成業務影響。 |
啟動方式二 | 應用重啟agent自動啟動,應用採集連續;不用考慮帳號許可權問題。 | 第一次需重啟應用。 | 應用可重啟、持續採集(大多數情境)。 |
其他說明
當應用停止:無論方式一、二啟動的監控,應用停止則agent停止。
agent主動停止監控:
方式一:重啟應用或通過命令./attach.sh -p ${pid} -s。
方式二:去掉配置的javaagent後重啟應用。
agent停止監控後想再次做監控,必須重啟應用。
方式一:待應用重啟後手動啟動agent。
方式二:agent隨應用重啟而啟動。
Jboss區分社區版和企業版,如果有jboss.modules.system.pkgs配置項,則無論用方式一、二,都需要先增加com.alibaba.adam.javaagent目錄並重啟應用才會生效。
資料收集(一般收集1-7天資料)
進入collector目錄,將data/下的檔案按appname打zip包,分別獨立上傳ADAM-應用畫像,切記一個應用對應一個應用畫像,一個應用下不同IP的資料可以打包到一起,但不同appname的資料不能打包到一起,否則上傳會報錯。
下一步上傳應用畫像。