iT邦幫忙

2025 iThome 鐵人賽

DAY 30
0
AI & Data

動不動就要 ETL? 以Trino為例-淺談從資料倉儲到湖倉系列 第 30

Day 30 - 監控你的湖倉,Grafafa metrics 建立(二)

  • 分享至 

  • xImage
  •  

IT home 鐵人賽

Trino Query 監控

講完 Trino Cluster 的監控,當然要補充與查詢相關的監控指標,這邊列幾個筆者有實作的 Trino Query 監控指標:

  1. Cache read-to-write Ratio
  • 此指標代表「Alluxio 讀取快取 byte 總和 (cache read)」除以「Alluxio 寫入快取 byte 總和 (cache write)」= 快取讀寫比 (Cache Read/Write Ratio)。
  • 指標數值越高 → 表示快取命中率高,能有效減少下游 (S3/HDFS) I/O 壓力。
  • 指標數值越低 → 表示快取幾乎沒發揮作用,可能已存入冷資料或配置錯誤。
(
sum(org_alluxio_client_cachebytesreadcache_count)/sum(org_alluxio_client_cachebyteswrittencache_count)
)

截圖 2025-09-09 下午3.23.59

  1. Query running count
  • 此指標代表 Trino cluster 裡執行中的查詢數量 (不含 queued/finished)。
  • 與歷史同時段比較(一天、一週前)可看是否有週期性工作異常 (如 每週一應有查詢高峰,但今天卻沒有)。
1. trino_execution_querymanager_runningqueries 
2. trino_execution_querymanager_runningqueries offset 1d 
3. trino_execution_querymanager_runningqueries offset 7d

截圖 2025-09-09 下午3.54.19

  1. Query queued count
  • 此指標代表 Trino cluster 裡等候的查詢佇列長度。
  • 與歷史同時段比較(一天、一週前)可用來判斷短期異常與週期性負載。
1. trino_execution_querymanager_queuedqueries 
2.trino_execution_QueryManager_QueuedQueries{app=~"${cluster}"} offset 1d 
3.trino_execution_QueryManager_QueuedQueries{app=~"${cluster}"} offset 7d

截圖 2025-09-09 下午4.28.21

  1. Submitted/ Completed Queries in Five minutes
  • 此指標代表近 5 分鐘內 Trino 查詢「提交/完成」的事件數
# Submitted Queries in Five minutes
trino_execution_querymanager_submittedqueries_fiveminute_count

# Completed Queries in Five minutes
trino_execution_querymanager_completedqueries_fiveminute_count

截圖 2025-09-09 下午5.33.04

  1. Failed Queries in Five minutes
  • 此指標代表近 5 分鐘內 Trino 查詢「失敗」的事件數
trino_execution_querymanager_failedqueries_fiveminute_count

截圖 2025-09-09 下午5.26.38

Trino Query 告警

有指標就代表有監控的必要,而決定監控是否又有後續動作的標準便是告警,這邊我們一樣針對 Trino Query 的監控指標實作一些告警機制:

  1. Cache read-to-write Ratio
  • 前面提到這個指標數值越低 → 表示快取幾乎沒發揮作用,故可以設計類似以下告警:
    • 快取效率低告警,如 快取讀寫比例低於 0.5 持續 10 分鐘
    • 快取幾乎無利用告警,如 快取讀寫比例低於 0.1 持續 30 分鐘
## 快取效率低告警
expr: (sum(org_alluxio_client_cachebytesreadcache_count) / sum(org_alluxio_client_cachebyteswrittencache_count)) < 0.5
for: 10m

## 快取幾乎沒被利用告警
expr: (sum(org_alluxio_client_cachebytesreadcache_count) / sum(org_alluxio_client_cachebyteswrittencache_count)) < 0.1
for: 30m
  1. Query queued count
  • 持續有排隊的查詢在等待不是維運者樂見的情形,所以可以設置類似以下的告警:
    • 持續有排隊,如 queuedqueries > 0 持續超過 10 分鐘
    • 排隊越積越多,如 queuedqueries 5 分鐘斜率大於 0 持續超過 15 分鐘
## 持續有排隊
- alert: TrinoQueuePersistentlyNonZero
  expr: trino_execution_querymanager_queuedqueries > 0
  for: 10m
  
## 排隊越積越多
- alert: TrinoQueueBacklogGrowing
  expr: rate(trino_execution_querymanager_queuedqueries[5m]) > 0
  for: 15m
  1. Failed Queries in Five minutes
  • 不僅僅是排隊的查詢令人討厭,失敗的查詢同樣是維運 Trino 的人所不樂見的,所以一樣社上類似以下告警:
    • 相對昨天異常暴衝,如 5min_FailedQueries > 5 持續 15 分鐘
    • 一段時間持續失敗,如 5min_FailedQueries 大於昨天的兩倍持續 10 分鐘
## 相對昨天異常暴衝
- alert: TrinoFailedQueriesPersistentlyHigh
  expr: sum(trino_execution_querymanager_failedqueries_fiveminute_count) >= 5
  for: 15m
  
## 一段時間持續失敗
- alert: TrinoFailedQueriesSpikeVsYesterday
  expr: sum(trino_execution_querymanager_failedqueries_fiveminute_count)
        > 2 * (sum(trino_execution_querymanager_failedqueries_fiveminute_count offset 1d) + 1)
  for: 10m

完賽心得

以第一次參賽來說,算是滿意這次的過程,無論是從受同事啟發提筆記錄工作、真的開始讀文件補充內容,到最中一篇篇完成 30 天的文章,中間受到許多人的指教跟鼓勵,謝謝這一切的發生也謝謝持續提筆的自己。

最後想拿前幾天參加 Pycon 聽到 碼農高天 說的話期許下自己,寫代碼就是有興趣就寫,有心得就分享,希望再往後資料工程師的職涯中也能持續保持熱忱。

最後幫一起參賽的朋朋 @wudihero2 的文章【知其然,更知其所以然】打下廣告:https://ithelp.ithome.com.tw/articles/10376305

Know me more

My Linkedin: https://www.linkedin.com/in/benny0624/
My Medium: https://hndsmhsu.medium.com/


上一篇
Day 29 - 監控你的湖倉,Grafafa metrics 建立(一)
系列文
動不動就要 ETL? 以Trino為例-淺談從資料倉儲到湖倉30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言