iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
2
Elastic Stack on Cloud

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

【ES新手,破門而入!】Day8 - 見微知著,見更微知更著!Observability 基礎之趴特吐

  • 分享至 

  • xImage
  •  

你可以學到?

今天,我們將延續昨天的實作,接著介紹 metrics 和 APM 資料的串接與分析,完整地拼完 Observability 的概念。

本篇的主題包含的實作有:

  1. Metrics
  2. APM

那我們就開始吧!

動手實作 EP6:Observability 基礎 - Part 2

Observability 基礎的官方教學資源可以參考這邊:https://www.elastic.co/training/observability-fundamentals

  1. 一開始開啟練習用的 VM 和 昨天 Day7 一樣,按下 Start Course,稍等一下後就會出現練習用的 VM 視窗在新的瀏覽器分頁,接著用 ssh 指令連接到 server1。

Metrics

實作目標:

  • 瞭解如何使用 Metricbeat 取得系統和 NGINX 的指標並送進 Elasticsearch 建立索引。
  1. 我們先來看一看 Metricbeat 的設置都寫了什麼,可以看到設置傳送資料至 server1:9200,Kibana 是運行在 server1:5601 上,而 enable module 是從 modules.d 這個路徑下讀取。
cd metricbeat
cat metricbeat.yml

metricbeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1
  index.codec: best_compression
setup.kibana:
  host: "server1:5601"
output.elasticsearch:
  hosts: ["server1:9200"]
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
  1. 接著我們來看看系統設置,可以看到設置檔分成三個部分:第一部分有 CPU usage、 CPU load average、memory usage、network I/O...等等,每 10 秒鐘蒐集一次;第二部分是蒐集系統統計數值,每 10 分鐘蒐集一次;最後一部分是系統正常運行時間,每 15 分鐘蒐集一次。

- module: system
  period: 10s
  metricsets:
    - cpu
    - load
    - memory
    - network
    - process
    - process_summary
    - socket_summary
  process.include_top_n:
    by_cpu: 5      # include top 5 processes by CPU
    by_memory: 5   # include top 5 processes by memory
- module: system
  period: 1m
  metricsets:
    - filesystem
    - fsstat
  processors:
  - drop_event.when.regexp:
      system.filesystem.mount_point: '^/(sys|cgroup|proc|dev|etc|host|lib)($|/)'
- module: system
  period: 15m
  metricsets:
    - uptime
  1. 再來我們看看 NGINX 的設置, 這樣的設置告訴 Metricbeat 哪一個是 server host 和其狀態路徑讓 Metricbeat 可以每 10 秒鐘蒐集一次。

- module: nginx
  period: 10s
  hosts: ["http://172.18.0.1"]
  server_status_path: "server-status"
  1. 確認完設置沒問題後,就用下面指令來啟動 Metricbeat 吧!
./metricbeat setup
./metricbeat -e

  1. 啟動後我們可以到 Kibana 的儀表板來看看各種 metric,我們先輸入 system,來看看系統的部分。

  1. 再來還可以看看 NGINX 的 metric,一樣回到儀表板輸入 nginx,就可以看到相關的指標資訊摟~

在這個實作,我們了解到如何使用 Metricbeat 輕鬆地探索系統與 NGINX 的 metrics,並且可以用 Kibana 的儀表板做視覺化的監看。

APM

實作目標:

  • 設置 APM server 蒐集應用程式的 traces 和 errors,並用 APM UI 監看應用程式的效能。
  1. 一開始我們一樣先看看 apm-server 的設置都寫了些什麼資訊吧!可以看到設置傳送資料至 server1:9200,Kibana 是運行在 server1:5601 上。
cat apm-server.yml

apm-server:
  host: "0.0.0.0:8200"
  rum:
    enabled: true
  kibana:
    host: "server1:5601"
output.elasticsearch:
  hosts: ["server1:9200"]
  1. 接著啟動 APM server:
./apm-server setup
./apm-server -e

  1. 再來我們要啟用一個應用程式服務(Petclinic)來示範,Petclinic 是一個由三個微服務組成的應用服務,其連接到一資料庫伺服器,前端是 React,後端採用 Node.js,我們先開啟一個新的 terminal,ssh 連接到 server1。

  1. 接著執行下面指令,啟動應用程式的核心:
java -javaagent:/home/elastic/petclinic/elastic-apm-agent-1.12.0.jar \
     -Delastic.apm.service_name=petclinic-spring \
     -Delastic.apm.server_urls=http://server1:8200 \
     -jar /home/elastic/petclinic/spring-petclinic-1.5.16.jar
  1. 再來啟動後端,移動到 petclinic/frontend 位置,對 config.js 裡的 apm_server_js 做修改,要修改成 Machine info 內的 Public DNS 的位址,修改完後輸入 npm start 來啟動後端服務前端頁面。

npm start
  1. 啟動完成後,可以在網址列輸入 <Public DNS>:4000,就可以看到示範用的網站啦!在網站內各種點擊一波,讓它產生對應的紀錄資訊,等等就可以在 Kibana 上看看花黑噴了~

  1. 回到 Kibana 面板,選擇 APM,可以看到兩個,我們先看看 petclinic-spring,一點進去哇!各種花樣,有點眼花,沒關係~時間會治癒你的恐懼的。

  1. 再來 petclinic-node,來看看他的 Errors 分頁,可以發現到有兩個錯誤,點進 No message available,其中的 transaction ID,就可以看到整個交易過程,也可以看到這個錯誤訊息在整個交易過程怎麼傳遞的!

在這個實作,我們了解如何設置一個 APM server 來蒐集一個應用程式的 traces 和 errors,也探索了 APM UI 的部分,知道說監測應用程式能看到哪些資訊。

今日心得與短結

挖~原本打算兩天結束這一部分的訓練單元,但是在寫趴吐的過程中,發現到原來有需要閱讀的材料啊啊啊!!!難怪我想說怎麼可能會這麼短...果真代誌不是憨人想得這麼簡單QQ,沒關係,明天就再補上,扎扎實實的學吧!

今天我們學到了如何使用 Metricbeat、APM,將指標、軌跡的資料送進 Elastic Stack,明天我們來補上各個部分的文件姿勢知識吧!


上一篇
【ES新手,破門而入!】Day7 - 沒有觀察,宇宙就不會坍縮!Observability 基礎之趴特萬
下一篇
【ES新手,破門而入!】Day9 - 我見故我在!Observability 基礎之趴特睡
系列文
ES 新手,破門而入!!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言