喬叔的 Elastic Stack 專業教育訓練
  • 喬叔的 Elastic Stack 專業教育訓練
  • 🧑關於喬叔 (Joe Wu)
  • Elastic 課程公開班
    • 🎯Elasticsearch 基礎實務班
      • 💯學員課後回饋
    • 🆕Elasticsearch 進階運維班
      • 💯學員課後回饋
    • Elasticsearch 進階開發班
    • Elastic Stack 基礎實務班
    • Elastic Observability 基礎實務班
    • 📩課程許願池
  • 技術分享
    • 📗喬叔帶你上手 Elastic Stack
      • 前言
      • Elastic Cloud 如何建立 Deployment
        • ES Node 的種類
        • 配置的選擇
      • Index 建立前你該知道的
        • ES Index 如何被建立
        • ES 的超前佈署 - Dynamic Mapping
        • ES 的超前佈署 - Index Template
        • ES Index 的別名 (Alias)
        • 管理你的 Index - Kibana Index
      • 管理 Index 的 Best Practices
        • Shard 的數量與 Rollover & Shrink API
        • 三溫暖架構 - Hot Warm Cold Architecture
        • Index Lifecycle Management (ILM)
        • Rollup
        • Transform
        • Snapshot Lifecycle Management (SLM)
        • 總結
      • Elastic Cloud 比免費版還多的功能
        • Elastic Stack 的方案比較與銷售方式
        • Centralized Beats Management
        • Centralized Pipeline Management
        • Watcher
        • Elasticsearch Token Service
        • Multi-stack monitoring & Automatic stack issue alerts
      • 向 App Search 學習怎麼用 Elasticsearch
        • 揭開 App Search 的面紗
        • Engine 的 Index Settings 篇
        • Engine 的 Mapping 篇
        • Engine 的 Search 基礎剖析篇
        • Engine 的 Search 進階剖析篇
      • Elasticsearch 的優化技巧
        • Indexing 索引效能優化
        • Searching 搜尋效能優化
        • Index 的儲存空間最佳化
        • Shard 的最佳化管理
      • 完賽心得
    • 📘喬叔帶你上手 Elastic Stack - 探索與實踐 Observability 系列
      • 前言 & 淺談 Observability
      • Elastic 的 Observability 解決方案
      • Uptime - 掌握系統的生命徵象
        • 我們要觀測的生命徵象是什麼?
        • 使用 Heartbeat 收集系統生命徵象數據
        • 透過 Kibana 觀看心電圖及設定警報
        • 使用合成監控 (Synthetics Monitor) 從使用者情境驗證服務的運作狀態
      • Metrics - 觀察系統的健康指標
        • Metrics 與 Metricbeat 的基本介紹
        • 使用 Metricbeat 掌握 Elastic Stack 的健康狀態
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 Host 篇
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 Docker 篇
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 Kubernetes 篇
        • 使用 Metricbeat 掌握 Infrastructure 的健康狀態 AWS 篇
      • Logs - 挖掘系統內部發生的狀況
        • Logs 與 Filebeat 的基本介紹
        • 使用 Filebeat 應該要了解的設計細節與原理
        • 透過 Filebeat 收集 Elastic Stack 中各種服務的細節資訊
        • 透過 Filebeat 收集 Infrastructure 中各種服務的細節資訊
      • Traces - 觀察應用程式的效能瓶頸
        • Elastic APM 基本介紹
        • 使用 APM-Integratoin-Testing 建立 Elastic APM 的模擬環境
        • 如何在 Kibana 使用 APM UI
        • 使用 APM Server 來收集 APM 數據
        • 透過 APM Agents 收集並傳送後端服務運作的記錄
        • 透過真實使用者監控 (RUM, Real User Monitoring) 來改善使用者體驗
      • 建立結構化的 Log
        • Elastic Common Schema 結構化 Log 的規範
        • Elasticsearch Ingest Pipeline 資料 Index 前的轉換好幫手
          • 基本介紹
          • 各種常用的 Processor
          • Enrich 資料與例外處理
      • 有效的使用 Observability 的資料
        • 透過 Machine Learning 發現異常的問題
        • 使用 Kibana Alerts 主動通知異常狀況
        • 資料的生命週期管理
        • 使用 Elastic Observability 追縱及觀察問題的心得
      • 完賽心得
    • 😀Elasticsearch 技術分享小品
      • 🤖Elastic 與 AI
        • Elasticsearch Inference API 讓我們直接在 ES 裡運用 OpenAI Completion API
    • 🎥線上分享
      • 喬叔 Elasticsearch Index 管理與效能優化技巧
      • Elastic Certification 認證經驗分享
    • 🛠️workshop
      • 如何在 Elasticsearch 實現敏捷的資料建模與管理 @ DevOpsDays 2023
        • 工作坊實作內容
      • Elastic Observability 實作體驗坊 @ DevOpsDays 2022
        • 行前準備
        • 工作坊實作內容
      • 當 Elasticsearch 搜尋引擎遇上 AI @ HelloWordDevConference 2024
        • 投影片
        • Elasticsearch 環境準備
        • Google Colab 環境準備
        • 工作坊操作說明
        • ElasticSearch Relevance Engine (ESRE)
    • ⬆️Elastic Stack 版本升級記錄
      • 🔍Elasticsearch
  • 其他專業服務
    • 👩‍🎓企業包班 | 企業內訓
    • 👨‍💼顧問服務
    • 🈺專案合作
    • 🧩Elastic 授權代理
  • 相關連結
    • Facebook 粉絲頁
Powered by GitBook
On this page
  • 本篇學習重點
  • Kibana Observability APM
  • Services (服務)
  • Traces (追縱)
  • Dependencies (相依性)
  • Service Map (服務地圖)
  • 參考資訊
  1. 技術分享
  2. 喬叔帶你上手 Elastic Stack - 探索與實踐 Observability 系列
  3. Traces - 觀察應用程式的效能瓶頸

如何在 Kibana 使用 APM UI

Previous使用 APM-Integratoin-Testing 建立 Elastic APM 的模擬環境Next使用 APM Server 來收集 APM 數據

Last updated 2 years ago

本篇學習重點

  • 如何透過 Kibana 的 APM UI 來進行效能的分析

  • APM UI 中的 Services、Traces、Dependencies、Service Map 的使用時機

Kibana Observability APM

Kibana Observability 功能中的 APM UI,在主選單中包含了四個選項:

  • Services (服務)

  • Traces (追縱)

  • Dependencies (相依性)

  • Service Map (服務地圖)

19-kibana-apm-menu

這四個功能貫串了整體 APM 的使用情境,以下我們將會各別介紹這四個功能的主要說明,以及使用的時機。

Services (服務)

Service,是我們在 APM Agent 安裝時,指定的一個設定值,也是代表我們某個應用程式或某個服務的名稱,而 Kibana APM UI 也將 Service 定義成為一個主要的資料檢視的分類方式,讓我們能以 Service 的角度來檢視 Infrastructure 中各服務的狀態。

使用時機

  • 從『服務』或『應用程式』的整體角度,查詢效能狀況。

  • 針對某一個『服務』或『應用程式』,裡面有發生哪些 Error?

  • 針對某一個『服務』或『應用程式』,裡面所有的 Transaction 之中,執行最慢的是誰?有發生錯誤的比例是多少?發生錯誤的是誰?

  • 針對某一個『服務』或『應用程式』,查看與他們相依的其他『服務』或『應用程式』有哪些?哪些其他服務的效能是瓶頸而受到牽連?

  • 針對某一個『服務』或『應用程式』,快速查閱 CPU 與 Memory 的 Metrics 資訊。

Overview (總覽)

如上圖在 Services 的 Overview 畫面之中,我們會有以下幾個部份:

  1. Environment (環境):我們可以直接針對指定在 APM Agent 收集資料時,先定義好的 Environment 資訊,例如: Production 環境、Staging 環境、或是我們自己定義的其他環境,進行籂選。

  2. Search Box (搜尋區):這個功能其實很彈性,讓我們自行依照想要的檢視條件,例如針對跑的特別慢的資料進行分析、或是經由我們自己事先加好的 tag 來篩選,可以專注在某種身份的會員、或是某種類型的產品…等。

  3. Comparison (比較):這是針對圖表中一些數據的走勢圖,我們預設要以之前的某段時間來做比較,例如上一週的同一時間、或是上個月的同一時間,這也是在分析異常狀況時常用的技巧。

  4. 時間篩選:使用 Kibana 標準的時間篩選器,指定時間的範圍。

  5. 服務列表:包含整體檢視時最重要的三個數據『平均延遲時間』、『吞吐量』、『交易失敗率』。

在這個畫面預設的排序方式,是照『健康狀態』,把最不健康的排最前面,讓我們優先掌握有問題的服務,而『健康狀態』的判定方式,是依照 Machine Learning 的 anomaly detection (異常偵測) 的功能,所以 ML 的這個功能要設定啟用才會有作用。

Service 細部檢視

當我們點選某一個 Services 後,會進入這個 Service 自己的 Overview (總覽) 畫面,當中包含這個 Server 與效能、執行錯誤直接相關的

  • Latency (延遲)

  • Throughput (吞吐量)

  • Transaction(交易) 效能較差的前五名,以及他們的效能相關的數據。

  • Failed Transaction Rate (交易失敗率)

  • Errors (錯誤)

  • Time spent by span type:每個 span 所花費的時間比例。

  • Depencencies (相依性):所有與這個 Service 有相依的服務或是其他元件的效能影響數據。

  • Instances Latency Distribution (實例延遲的分佈):也就是這個服務有哪一些實際佈署的 instance,以及這些 instance 這段時間的平均數據的分佈,方便查看問題會不會是出在某一台特定的機器上。

  • Instances (實例):這個服務實際佈署的 instances,以及這些 instance 的效能數據.

注意:這邊我們在查閱的 Metrics 預設是 Average,但有時我們要分析效能狀況時,有時會要去掉極度的數據,這時記得可以用這個功能選擇 95th percentile 或是 99th percentile 。

至於每個服務細部檢視的畫面,都能再進一步查詢這個服務的 Transactions、Dependencies、Errors、Metrics、Service Map、Logs,這部份可以從上方的 GIF 圖檔的動畫查看。

Traces (追縱)

Traces,讓我們能檢視某一個業務處理從頭到尾的過程,也就是對應到我們先前介紹到的 Transaction (交易),中間的處理過程可能橫跨多個 Services,能讓我們做分散式追縱 (Distributed Tracing),同時也會把相同的 Transaction 給 group 在一起,進行相同行為 Transaction 之間的校能比較與分析。

使用時機

  • 分散式追縱 (Distributed Tracing),想知道某一個 Transaction (交易) 橫跨了哪些服務,中間有經過哪些處理、存取多少次資料庫、存取多少次快取…等。

  • 對於某一個業務處理的執行效能不如預期,想要追縱是在哪個環節比較慢,

  • 想分析哪一個 Transaction 對於整體系統的使用效能影響最大。

Overview (總覽)

Traces 的總覽,會是以整體篩選條件底下,所有符合的 Transaction 全部一起排列出來,在這個畫面預設的排序方式,是依照 Impact (影響程度),判定方式是依照最常使用以及反應時間最慢來決定影響的程度。

Traces 細部檢視

在 Traces 的列表中,點選其中一筆 Trace 的項目之後,其實就會進入到 Service 細部檢視當中的 Transactions (交易) 的畫面。

在這個畫面中,我們可以分析這個 API 在某段時間 Throughtput 較高時,與前一天、前一週、前一個月的同一段時間相比較是否一樣,也能從 Trace 的 Timeline 當中,查詢 Transaction 底下相關的 Spans,可以看到這個處理橫跨哪些服務,以及每個服務裡面執行的細節,這些細節的處理佔用了多少時間,並且在想要進行進一步調查時,可以透過 Investigate 進入 Elastic Observability 整合好的 Metrics 或是 Logs 的內容進行查看。

Dependencies (相依性)

使用時機

  • 分析在 Infrastructure 中所使用的第三方服務或元件的效能狀況。

  • 如果某個 Database (資料庫) 很慢,他的上游有哪些服務使用到他,以及這些服務的效能數據為何?

  • 分析使用到外部的第三方服務時 (例如:金流 API),最近一週每個時段的失敗率為多少?

Overview (總覽)

這部份列出的,是『服務』或『應用程式』,所使用到的其他元件或是第三方服務,像是資料庫、外部的 HTTP 服務…等,並且讓我們從這些 dependencies 來分析對效能的影響。

Dependencies 細部檢視

在 Dependencies 的細部檢視的部份,讓我們除了能觀察這個 dependency 的效能數據,也會讓我們查看他的 Upstream (上游) 服候的效能數據,能協助我們判斷前後的影響關係,並且再進一步連結到 Service 細部檢視的頁面,進行查詢所影響的 Transaction 是哪些,甚至查詢實際執行的指令為何。

Service Map (服務地圖)

這個 Service Map 的檢視方式,是協助我們能以視覺化的方式,查看整體 Infrastructure 的服務與元件之前的相依關係,能協助我們追縱問題時,更精準的關注在需要注意的路徑上。

使用時機

  • 視覺化的掌握在 Infrastructure 中所有的『服務』、『應用程式』與第三方服務及元件之間的相依性。

  • 從視覺化的地圖,快速掌握地圖上某個服務是否有發生異常。

Overview (總覽)

可以透過 Service Map 以視覺化的圖形,查看整體 Infrastructure。

Service Map 細部檢視

在 Abnormal Detection 有開啟的情況下,有問題的服務,會被標示成紅色,可以進一步進入 Machine Learning 頁面查看。

或是可以針對某個服務進入 Dependency 或是 Service 的細部檢視的頁面,進行進一步的分析。


參考資訊

19-kibana-services-overview
19-Kibana-APM-Services
19-kibana-apm-traces-overview
19-Kibana-APM-Traces
image-20211004235227398
image-20211004235427372
19-apm-service-map
19-Kibana-APM-ServiceMap

以上是使用 Kibana Observability 中的 APM UI 所提供的功能,裡面的資料,是以 所介紹的 所產生的示範資料,在了解 Elastic APM 可以做到這些功能之後,下一篇我們將介紹進行自行架設的方式。

📘
前一篇文章
APM Integration Testing
官方文件 - Kibana APM - Get Started