Appdynamics

Appdynamics

是什么

Appdynamics 是一種服務(wù)性能監(jiān)控/管理工具,主要包含兩種功能:

  1. 終端用戶(hù)性能體驗(yàn)監(jiān)控
  2. 計(jì)算資源監(jiān)控

類(lèi)似的工具

這篇文章 中詳細(xì)分析了微服務(wù)技術(shù)選型的內(nèi)容,其中服務(wù)監(jiān)控部分截圖如下

服務(wù)監(jiān)控工具

為什么

微服務(wù)本身的復(fù)雜度帶來(lái)的問(wèn)題

微服務(wù)的特點(diǎn)決定了功能模塊的部署是分布式的,以往在單應(yīng)用環(huán)境下,所有的業(yè)務(wù)都在同一個(gè)服務(wù)器上,如果服務(wù)器出現(xiàn)錯(cuò)誤和異常,我們只要盯住一個(gè)點(diǎn),就可以快速定位和處理問(wèn)題,但是在微服務(wù)的架構(gòu)下,大部分功能模塊都是單獨(dú)部署運(yùn)行的,彼此通過(guò)總線交互,都是無(wú)狀態(tài)的服務(wù),這種架構(gòu)下,前后臺(tái)的業(yè)務(wù)流會(huì)經(jīng)過(guò)很多個(gè)微服務(wù)的處理和傳遞,我們難免會(huì)遇到這樣的問(wèn)題:

  1. 分散在各個(gè)服務(wù)器上的日志怎么處理?
  2. 如果業(yè)務(wù)流出現(xiàn)了錯(cuò)誤和異常,如何定位是哪個(gè)點(diǎn)出的問(wèn)題?
  3. 如何快速定位問(wèn)題?
  4. 如何跟蹤業(yè)務(wù)流的處理順序和結(jié)果?

我們發(fā)現(xiàn),以前在單應(yīng)用下的日志監(jiān)控很簡(jiǎn)單,在微服務(wù)架構(gòu)下卻成為了一個(gè)大問(wèn)題,如果無(wú)法跟蹤業(yè)務(wù)流,無(wú)法定位問(wèn)題,我們將耗費(fèi)大量的時(shí)間來(lái)查找和定位問(wèn)題,在復(fù)雜的微服務(wù)交互關(guān)系中,我們就會(huì)非常被動(dòng)。

微服務(wù)時(shí)代 運(yùn)維監(jiān)控是難點(diǎn)

appdynamics 服務(wù)間調(diào)用路線概覽

下面是 appdynamics 官方介紹視頻中給出的例子,從中可以看出,一個(gè)簡(jiǎn)單的登陸請(qǐng)求,跨越了 5 個(gè)服務(wù)節(jié)點(diǎn)。


appdynamics 請(qǐng)求追蹤監(jiān)控

appdynamics 會(huì)收集同一個(gè)一段時(shí)間內(nèi)的處理情況,從中可以查看是否存在性能問(wèn)題


appdynamics 請(qǐng)求資源性能監(jiān)控

怎么用

打開(kāi) 官網(wǎng)

appdynamics 官網(wǎng)首頁(yè)
  • 點(diǎn)擊 What is AppDynamics,查看介紹視頻
  • 點(diǎn)擊 What is AppDynamics,注冊(cè)之后開(kāi)始試用

根據(jù)網(wǎng)站說(shuō)明注冊(cè)賬戶(hù),注冊(cè)之后,會(huì)收到 appdynamics 發(fā)來(lái)的注冊(cè)確認(rèn)郵件。

appdynamics 注冊(cè)確認(rèn)郵件

根據(jù)郵件上的步驟提示,前往個(gè)人 SaaS,填寫(xiě)用戶(hù)名密碼,便可以查看 appdynamics Dashboard,根據(jù)第三步的提示,前往 appdynamics agent 的安裝下載頁(yè)面。

appdynamics agent 的安裝下載頁(yè)面
appdynamics agents

下面,嘗試搭建一個(gè) service,注冊(cè)到 appdynamics 上,看 service 的運(yùn)行狀況。

為了方便起見(jiàn),使用 spring.io 上的例子,選取一個(gè)簡(jiǎn)單的 REST service 作為試驗(yàn)使用,執(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 運(yùn)行上一步構(gòu)建的 jar 包。這里 是 appdynamics java agent 的使用說(shuō)明,如果在下面的安裝使用過(guò)程中遇到問(wèn)題,請(qǐng)參考解決。

java -javaagent:./appagent/javaagent.jar -jar build/libs/gs-rest-service-0.1.0.jar
指定 appagent 運(yùn)行 jar

在啟動(dòng)的過(guò)程中,spring boot 的日志輸出與 appdynamics 的輸出交互打印。從下面可以看出,spring boot 服務(wù)器已經(jīng)啟動(dòng)了,但是 appdynamics 的輸出還在持續(xù)。


啟動(dòng)日志

等到日志停止輸出,如果發(fā)下沒(méi)有錯(cuò)誤提示,就說(shuō)明已經(jīng)正常啟動(dòng),接下來(lái)打開(kāi) appdynamics 查看,此時(shí)可以發(fā)現(xiàn)已經(jīng)監(jiān)控了我們使用 agent 監(jiān)控的服務(wù)。

image.png

給剛剛啟動(dòng)的服務(wù)發(fā)送幾次請(qǐng)求


發(fā)送請(qǐng)求
監(jiān)控請(qǐng)求
請(qǐng)求詳情

上面就是一個(gè)簡(jiǎn)單的 appdynamics java agent 的簡(jiǎn)單搭建使用過(guò)程,復(fù)雜的使用情景,請(qǐng)參照官網(wǎng)文檔學(xué)習(xí)使用。


關(guān)于文中提到的 java agent,相關(guān)概念可以參看 這里這里

本文了參考以下資源:

  1. https://www.cnblogs.com/wintersun/p/6747355.html
  2. https://www.youtube.com/watch?v=sFuFotJD1vM
  3. https://mp.weixin.qq.com/s/zFJokAv8lSQejGFTGJTJeQ
  4. https://www.appdynamics.com/
  5. https://36kr.com/p/5115119.html
  6. http://www.infoq.com/cn/articles/javaagent-illustrated
  7. https://zeroturnaround.com/rebellabs/how-to-inspect-classes-in-your-jvm/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容