iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0
Elastic Stack on Cloud

ES 新手,破門而入!!!系列 第 4

【ES新手,破門而入!】Day4 - APM 阿囉哈!

你可以學到?

今天,你將學到如何使用 Elastic Cloud(後面簡稱 EC)從你的應用程式讀入、閱讀和分析應用程式效能監控(APM)資料。

本篇的主題包含有:

  1. 什麼是應用程式效能監控(APM)?
  2. 串流 APM 資料到 Elastic
  3. 視覺化 APM 資料

那我們就開始吧!

什麼是應用程式效能監控(APM)?

  • 應用程式效能監控(APM):是一種偵測在應用程式中,緩慢運行或是錯誤地方的方法。

舉例來說,APM 可以找出使用者在用網站搜索服務時,速度緩慢的查找,又或者是消費者在網站購物要結帳時,一直發生崩潰、錯誤的情況。

應用程式效能監控(APM)和可觀測性(Observability)

APM 讓你可以持續追蹤應用程式服務的健康度和效能,它讓你可以在對消費者產生困擾前,偵測和解除問題,又或是可以快速地幫助你調查,找到問題的根本原因,在最短的時間將不好的影響降至最低。

什麼是軌跡(Traces)?

APM 藉由對傳入的請求(Request),收集詳細的系統反應(Response)時間,來達到監測的目的。

這些事件(Event)可分為:交易(Transaction)和跨度(Span),什麼意思勒?例如一個消費者想要買一張飛機票好了,這個購買的事件(Event)觸發了要資料庫保留一個座位,而這個資料庫詢問的動作就是一個跨度(Span),跨度描述了什麼需要被執行、花了多少時間去執行,當保留了一個座位後,接下來的跨度就是用信用卡支付的動作,其中過程也都會被追蹤,最後的跨度就是寄送確認 Email,而這整個服務過程是由送出一個購買的請求交易(Transaction)開始。

  • 交易和跨度一起構成了軌跡(Traces):軌跡並不是事件,但其代表的是端點到端點請求的追蹤,意即一個軌跡可能包含了多個交易,而其中的每個交易,可能含有一個或多個的跨度。

動手實作 EP3:使用 Elastic Cloud 做簡單的 APM 分析

Elastic Cloud 登入 與 創造一個部署

  1. 這邊都是每次新的實作會重複的部分,可以參考 Day2 動手實作 EP1 一開始的部分,唯一稍微不同的地方就是這次我把名稱取做:test_apm

串流 APM 資料到 Elastic

這一部分的實作,我們將可以學到:

  • 如何設置一個示範的應用程式,並用 Elastic APM 收集和傳送應用指標和錯誤到 EC 上
  • 如何從示範的應用程式產生資料和驗證在 Elastic APM 中的資料
  1. 首先我們先到 Kibana 首頁,點選 Add APM,進去會發現我們還沒有創建應用服務,所以我們先來創建示範用的 app。

  1. 先到 Elastic 官方 Github 下,有個示範應用 opbeans 可以使用:https://github.com/elastic/opbeans-java

  1. 我們先將這個 repo 複製到我們的電腦,先按右邊的 Code,然後複製下面一串網址,接著到 terminal 下輸入下面的指令,就可以把這個資料夾的東西都下載到本機端囉。

git clone https://github.com/elastic/opbeans-java.git

  1. 然後到 opbeans-java/opbeans 下,執行 mvn 指令產生 ./target/opbeans-0.0.1-SNAPSHOT.jar 檔案
cd opbeans-java/opbeans
mvn package

  1. 這時候回到 KibanaAPM Agents 的頁面,選到 Java 的部分,因為要先下載好 Java agent,點選 Maven Central 後,按一下右邊箭頭,選擇 jar 檔案下載,下載好後把檔案移至剛才 opbeans 的路徑下。

  1. 接著參考 APM Agents 頁面,第二個步驟的指令,稍作對應的修改:javaagent 的位置、service_nameapplication_packagesjar 檔案的位置,下面指令是我這次練習用的,若你自己照著練習的話,應該只會有 server_urlssecret_token 和我不一樣歐!

java -javaagent:./elastic-apm-agent-1.18.0.RC1.jar \
     -Delastic.apm.service_name=opbeans-java \
     -Delastic.apm.server_urls=https://b2fe946f935d42f9a77a9e2b332e517c.apm.asia-east1.gcp.elastic-cloud.com:443 \
     -Delastic.apm.secret_token=bNVO5cmNG0x3iq5m7p \
     -Delastic.apm.application_packages=co.elastic.apm.opbeans \
     -jar ./target/opbeans-0.0.1-SNAPSHOT.jar

  1. 執行完後,回到 APM Agents 頁面,按下 Load Kibana objects,檢查有沒有設置成功,沒問題的話點 Launch,你會發現這時候 APM 面板有應用程式,但是還沒有收到資料,這是因為我們還沒去跟它互動,還沒有產生軌跡

  1. 所以我們就在網址列輸入:http://localhost:8080 ,你就會看到 OpBeans 的頁面摟,我們來到處點按可以用的按鈕,讓它產生一些軌跡。

  1. 我們還可以進到一個會產生錯誤的頁面:http://localhost:8080/is-it-coffee-time ,讓它產生一些錯誤訊息

  1. 這時候你在 APM 面板按下 Refresh 更新後,就會看到已經有監測資訊出來摟!

視覺化 APM 資料

這一部分的實作,我們將可以學到:

  • 如何使用 Elastic APM 來視覺化和分析 APM 資料
  1. 我們再回到 APM 面板,這次我們點選 Service Map 來看看會有什麼魔術!

  1. WOW,它可以顯示出服務之間連結的狀況噎,因為這個示範例子只有一個資料庫,比較簡單一點,如果今天更為複雜的話,這種視覺化方式真是不錯!

  1. 在上面任意點選其中一個服務,可以看到一些簡單的數據,我們按下 Service Details 來看看詳細內容有什麼吧!

  1. 點進來後就可以看到各式各樣詳細的圖表,這部分就留給有興趣的讀者自己去研究摟,絕對不是因為我懶了,另外右下角你會注意到一個紅紅的,這就是我們剛剛故意產生的錯誤訊息喔!

  1. 除了 Service Map,我們還可以選 Traces 來看看軌跡,APM 面板裡面就可以讓你去細細診斷目前系統上,哪一段服務可能會是有問題的部分!

今日心得與短結

YA!邁入第四天了,說實話 APM 這塊對我還是太陌生了,很多東西我只能知其然而不知其所以然,它的妙用我還沒法像大神們一樣隨心所欲地體會出來,學海無涯啊!!!

今天我們學到了如何將 APM 資料,透與雲端的 Elastic APM 和 Kibana 連接,送進 EC 上做分析和視覺化結果,明天我們將要來了解工作區搜索(Workplace Search)是什麼鬼了!


上一篇
【ES新手,破門而入!】Day3 - Hello,Metrics
下一篇
【ES新手,破門而入!】Day5 - Workplace Search,找得到愛情嗎?
系列文
ES 新手,破門而入!!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言