Appdynamics
是什么
Appdynamics 是一種服務(wù)性能監(jiān)控/管理工具,主要包含兩種功能:
- 終端用戶性能體驗監(jiān)控
- 計算資源監(jiān)控
類似的工具
在 這篇文章 中詳細分析了微服務(wù)技術(shù)選型的內(nèi)容嘶居,其中服務(wù)監(jiān)控部分截圖如下
為什么
微服務(wù)本身的復(fù)雜度帶來的問題
微服務(wù)的特點決定了功能模塊的部署是分布式的邮屁,以往在單應(yīng)用環(huán)境下佑吝,所有的業(yè)務(wù)都在同一個服務(wù)器上绳匀,如果服務(wù)器出現(xiàn)錯誤和異常疾棵,我們只要盯住一個點,就可以快速定位和處理問題殉了,但是在微服務(wù)的架構(gòu)下拟枚,大部分功能模塊都是單獨部署運行的恩溅,彼此通過總線交互脚乡,都是無狀態(tài)的服務(wù),這種架構(gòu)下帮掉,前后臺的業(yè)務(wù)流會經(jīng)過很多個微服務(wù)的處理和傳遞窒典,我們難免會遇到這樣的問題:
- 分散在各個服務(wù)器上的日志怎么處理瀑志?
- 如果業(yè)務(wù)流出現(xiàn)了錯誤和異常污秆,如何定位是哪個點出的問題良拼?
- 如何快速定位問題庸推?
- 如何跟蹤業(yè)務(wù)流的處理順序和結(jié)果浇冰?
我們發(fā)現(xiàn)肘习,以前在單應(yīng)用下的日志監(jiān)控很簡單,在微服務(wù)架構(gòu)下卻成為了一個大問題脖含,如果無法跟蹤業(yè)務(wù)流投蝉,無法定位問題墓拜,我們將耗費大量的時間來查找和定位問題咳榜,在復(fù)雜的微服務(wù)交互關(guān)系中爽锥,我們就會非常被動氯夷。
微服務(wù)時代 運維監(jiān)控是難點
下面是 appdynamics 官方介紹視頻中給出的例子腮考,從中可以看出,一個簡單的登陸請求棚放,跨越了 5 個服務(wù)節(jié)點馅闽。
appdynamics 會收集同一個一段時間內(nèi)的處理情況飘蚯,從中可以查看是否存在性能問題
怎么用
打開 官網(wǎng)
- 點擊 What is AppDynamics馍迄,查看介紹視頻
- 點擊 What is AppDynamics,注冊之后開始試用
根據(jù)網(wǎng)站說明注冊賬戶局骤,注冊之后攀圈,會收到 appdynamics 發(fā)來的注冊確認郵件。
根據(jù)郵件上的步驟提示峦甩,前往個人 SaaS赘来,填寫用戶名密碼穴店,便可以查看 appdynamics Dashboard撕捍,根據(jù)第三步的提示,前往 appdynamics agent 的安裝下載頁面泣洞。
下面忧风,嘗試搭建一個 service,注冊到 appdynamics 上球凰,看 service 的運行狀況狮腿。
為了方便起見,使用 spring.io 上的例子呕诉,選取一個簡單的 REST service 作為試驗使用缘厢,執(zhí)行下面的命令克隆并構(gòu)建 jar 包
git clone https://github.com/spring-guides/gs-rest-service.git
cd gs-rest-service
cd complete
./gradlew build
將下載的 java agent 壓縮包解壓后放到 complete 的目錄下,重命名為 appagent
甩挫,最后使用 java 命令指定 agent 運行上一步構(gòu)建的 jar 包贴硫。這里 是 appdynamics java agent 的使用說明,如果在下面的安裝使用過程中遇到問題伊者,請參考解決英遭。
java -javaagent:./appagent/javaagent.jar -jar build/libs/gs-rest-service-0.1.0.jar
在啟動的過程中,spring boot 的日志輸出與 appdynamics 的輸出交互打印亦渗。從下面可以看出挖诸,spring boot 服務(wù)器已經(jīng)啟動了,但是 appdynamics 的輸出還在持續(xù)法精。
等到日志停止輸出多律,如果發(fā)下沒有錯誤提示,就說明已經(jīng)正常啟動搂蜓,接下來打開 appdynamics 查看狼荞,此時可以發(fā)現(xiàn)已經(jīng)監(jiān)控了我們使用 agent 監(jiān)控的服務(wù)。
給剛剛啟動的服務(wù)發(fā)送幾次請求
上面就是一個簡單的 appdynamics java agent 的簡單搭建使用過程帮碰,復(fù)雜的使用情景相味,請參照官網(wǎng)文檔學(xué)習(xí)使用。
關(guān)于文中提到的 java agent收毫,相關(guān)概念可以參看 這里 和 這里攻走。
本文了參考以下資源:
- https://www.cnblogs.com/wintersun/p/6747355.html
- https://www.youtube.com/watch?v=sFuFotJD1vM
- https://mp.weixin.qq.com/s/zFJokAv8lSQejGFTGJTJeQ
- https://www.appdynamics.com/
- https://36kr.com/p/5115119.html
- http://www.infoq.com/cn/articles/javaagent-illustrated
- https://zeroturnaround.com/rebellabs/how-to-inspect-classes-in-your-jvm/