Appdynamics

Appdynamics

是什么

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

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

類似的工具

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

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

為什么

微服務(wù)本身的復(fù)雜度帶來的問題

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

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

我們發(fā)現(xiàn),以前在單應(yīng)用下的日志監(jiān)控很簡(jiǎn)單,在微服務(wù)架構(gòu)下卻成為了一個(gè)大問題,如果無法跟蹤業(yè)務(wù)流,無法定位問題,我們將耗費(fèi)大量的時(shí)間來查找和定位問題,在復(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)的處理情況,從中可以查看是否存在性能問題


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

怎么用

打開 官網(wǎng)

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

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

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

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

appdynamics agent 的安裝下載頁面
appdynamics agents

下面,嘗試搭建一個(gè) service,注冊(cè)到 appdynamics 上,看 service 的運(yù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 的使用說明,如果在下面的安裝使用過程中遇到問題,請(qǐng)參考解決。

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

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


啟動(dòng)日志

等到日志停止輸出,如果發(fā)下沒有錯(cuò)誤提示,就說明已經(jīng)正常啟動(dòng),接下來打開 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)單搭建使用過程,復(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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