說到 Trino Cluster 的維運,集群的健康度監控可是不能少,這編列幾個筆者有實作的 Grafana 監控指標:
sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster="xxx-db", namespace="xxx-center", pod=~"trino-xxx-coordinator.*"})
replicas
少,表示有 worker 沒起來,可能導致查詢失敗或效能下降。sum(kube_deployment_status_replicas_ready{namespace="sl-data-center", deployment=~"trino-worker"})
1. trino_memory_clustermemorymanager_totalavailableprocessors
2. trino_memory_clustermemorymanager_totalavailableprocessors offset 1d
3. trino_memory_clustermemorymanager_totalavailableprocessors offset 7d
trino_memory_clustermemorymanager_clusterusermemoryreservation
在 Trino 裡記憶體分三類:
- User Memory → 查詢運算需要的記憶體(如 hash join、排序、聚合)
- System Memory → Trino 自身運行所需的記憶體(如 task 資料結構、metadata)
- Revocable Memory → 可回收的暫時記憶體
User Memory
、System Memory
以及 Revocable Memory
。trino_memory_clustermemorymanager_clustertotalmemoryreservation
設定完指標,當然要知道什麼時候需要起床關注一下我們的 Trino cluster,否則要是半夜有客戶睡不著想查資料可就糟了。
這邊就上節有提到的指標,來談談能夠設定哪些相應的告警,以便為運作業的進行:
## CPU > 2 cores,持續 5 分鐘
expr: sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster="ec-eks-db", namespace="sl-data-center", pod=~"trino-elt-coordinator.*"}) > 2
for: 5m
CPU 3hr < 0.1 core
expr: sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster="ec-eks-db", namespace="sl-data-center", pod=~"trino-elt-coordinator.*"}) < 0.1
for: 3hr
kube_deployment_spec_replicas
(期望的 replicas 數量)一起看,可以判斷是否有「未達期望副本數」的情況。## Worker 掛掉
expr: sum(kube_deployment_status_replicas_ready{namespace="sl-data-center", deployment=~"trino-worker"}) < 1
for: 5m
labels:
severity: critical
## Worker 部分缺失
expr: (
sum(kube_deployment_spec_replicas{namespace="sl-data-center", deployment=~"trino-worker"})
-
sum(kube_deployment_status_replicas_ready{namespace="sl-data-center", deployment=~"trino-worker"})
) > 0
for: 10m
## 高記憶體使用
expr: trino_memory_clustermemorymanager_clusterusermemoryreservation > (0.7 * trino_memory_clustermemorymanager_clusterusermemorylimit)
for: 10m
## 記憶體接近上限
expr: trino_memory_clustermemorymanager_clusterusermemoryreservation > (0.9 * trino_memory_clustermemorymanager_clusterusermemorylimit)
for: 5m
明天就是最後一天啦!完賽在即,心中感慨萬千。第一次參加 iThome 鐵人賽,有種「登泰山而小天下」的小小成就感。也希望持續學習與分享,能真正融入我的生活習慣。
今天介紹了 Trino Cluster 的監控與告警,明天《監控你的湖倉,Grafana Metrics 建立 (二)》將會補上 Iceberg 的部分。
My Linkedin: https://www.linkedin.com/in/benny0624/
My Medium: https://hndsmhsu.medium.com/