iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
DevOps

學會 Kubernetes 然後呢?由 Istio 進入 DevOps 偉大航路系列 第 17

Day17 - 輕鬆管理 Metrics 的工具,Prometheus 介紹

  • 分享至 

  • xImage
  •  

前言

Prometheus 作為現在 Observability 受歡迎的 Solution 之一,究竟它帶來了什麼樣的好處?本篇就來跟大家介紹一下。

什麼是 Prometheus?

https://ithelp.ithome.com.tw/upload/images/20220926/20139235qjxATMHScX.png

Prometheuscncf 畢業專案,是一套用於監控與警報的開源軟體,會將即時的 Metrics 資料儲存到時間序列資料庫,並透過 HTTP 接口讓使用者查詢以及設定預警規則,讓我們能輕鬆管理 Metrics 。

Prometheus 可視為管理 Metrics 資料的工具,包含蒐集並儲存 Metrics 資料,提供資料搜尋的 API ,並結合示警功能及可視化工具。

Prometheus 包含以下元件

  • Retrieval: 負責蒐集 Metrics 資料
  • TSDB: 時間序列資料庫,儲存蒐集的資料
  • HTTP Server: 提供 HTTP API 供使用者查詢蒐集的資料
  • Pushgateway: 開放接口,被動蒐集 Metrics 資料
  • Alertmanager: 收到警告後,負責發送警告給使用者
  • Prometheus Web UI: 可在 GUI 查詢 Metrics 資料

https://ithelp.ithome.com.tw/upload/images/20220926/20139235tgZc1OL0D3.png

Prometheus 架構圖,圖片取至 prometheus.io

Metrics Types

上一篇有提到 Metrics 代表系統中的數值資料,在 Prometheus 又細分為四種不同的 Metric Types

Counter

Counter 為一個累積用的 Metrics,只能被增加或者被設為0,常被用來計算請求總數、錯誤次數等等

Counter Example
10:00 http_requests_total=1
10:01 http_requests_total=5
10:02 http_requests_total=8

Gauge

Gauge 代表單一數值的 Metrics,可以任意的上升或下降,如伺服器溫度、磁碟使用量

Gauge Example
10:00 node_memory_MemFree=50
10:01 node_memory_MemFree=55
10:02 node_memory_MemFree=53

Histogram & Summary

Histogram 與 Summary 儲存的皆為一段時間的統計資料,可用作為直方圖數據的顯示

四種 metrics 的詳細介紹,可參考 Metric Types

PromQL 介紹

PromQL (Prometheus Query Language) 為 Prometheus 開發的數據查詢語言,使用者可以下達 PromQL 查詢語句來獲取 Prometheus 內部的資訊,有很多函數可以使用,以下是一些例子

# 查詢 http_requests_total,Code 為 200 的資料
http_requests_total{code="200"}

# 查詢 http_requests_total,Code 為 200 資料的平均值
avg(http_requests_total{code="200"})

# 5分鐘內 http_requests_total 資料的平均值
rate(http_requests_total[5m])

PromQL 可以想像成 Prometheus 版本的 SQL 查詢語言

Istio 與 Prometheus 之關係

使用 Istio 會在每個 Pod 都建立一個 Sidecar,使用者不需額外撰寫 Metrics 相關邏輯,Sidecar 就能主動蒐集應用程式的 Metrics ,並將資料送至 Prometheus。

https://ithelp.ithome.com.tw/upload/images/20220926/20139235MJg5027cg1.png

圖片取至 Monitoring Multicluster Istio with Prometheus

總結

本篇了解完 Prometheus 是用來做什麼的,下一篇就會在 Istio 實際使用,並會學習如何下達 PromQL 語句來獲取應用程式的 Metrics 資料。


上一篇
Day16 - Observability 介紹,Metrics、Tracing 和 Logging 是什麼?
下一篇
Day18 - 在 Istio 打造 Prometheus 實作環境
系列文
學會 Kubernetes 然後呢?由 Istio 進入 DevOps 偉大航路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言