owned this note changed 5 months ago
Linked with GitHub

Slide: https://www.slideshare.net/hongweiqiu/learn-o11y-from-grafana-ecosystem
Youtube: https://www.youtube.com/watch?v=MY2e3rjD1sA
{%hackmd @coscup/S1EDiCRcn %}

請從這裡開始

o11y → Observability (可觀測性)

當微服務興起,比起單體性架構觀測更困難:

  • Metrics
  • Loggings
  • Tracing:微服務的呼叫會跳來跳去,追蹤鏈路

透過 Grafana 的開源專案來做

  • 應用程式
  • Collector 收集者
  • 處理者/ 分析者
  • 視覺化呈現

潛在的挑戰:

  • 部署/安裝
    • 架構學習
  • 配置檔案設定
    • Tuning
  • 使用者介面
    • Multi Tenancy

Grafana Lab

  • profiling: 偵測 cpu, memory 的機制,可以知道系統受限於哪個 process

metrics

  • Promethreus
  • Thanos
  • Cortex
  • VictoriaMetrics
  • grafana minir

prometheus 的限制

Prometheus 主要簡單化,不是一個長期的解決方案

  1. Local Disk Only
  2. 沒被設計成 be scaled horizontally
  3. production 環境通常會採用其他解決方案

但現在的架構幾乎都會支援 prometheus

Grafana Mimir

  • 可以接上外部的 storage
  • HA
  • 可擴展性, 水平 + 垂直 (微服務架構)
  • 類似於 thanos, 收集多座 prometheus 的資訊整合處理

主要元件

  • Ingestor :主要的瓶頸點
  • compactor
  • Querier:讀資料,會有時間 (e.g 1天內的資料)
  • store-gateway:可水平擴展,加快查詢時間
  • Distributor

目前的擴展方式是把上面全部都整合至 one container 內 (mimir),若要精打細算一點需要把比較需要資源的元件拉出來放

  • 可根據 read/write 進行擴展
    • write: Distributor -> Ingestor
    • read: query-Frontend -> Querier -> Store-Gateway
    • 使用 object storage

Grafana Agent

  • 還在測試階段 (v0.35.0)
    • 個人經驗,雖然裡面包了 OTel Collector,但是蠻多原本的設置都不能修改,因此在敝團隊還是直接使用 OTel Collector 來接應用遙測資料,而不是一個 agent 打全部
  • 可直接兼容 Prometheus CRD
  • 想要取代 prometheus 在架構上的位置 (收 metircs)

Logging

  • EFK, ELF etc
    • Fluentd, filebeat
  • Opensearch
  • Graylog
  • Vector
  • Grafana LoKi

EFK 的限制

大部分的人不需要,大部分都只是需要搜尋 Logging
Elaticsearch 維運困難,且強項是在分析等等的功能

  • 建議收 Log 把 Elaticsearch 換成 Loki
  • 把 fluentd 改成 Promtail (更輕量的收集方案)
  • 個人認為 Elasticsearch 的問題是太貴了,尤其是在公雲環境

promtail (Grafana Agent) -> Grafana Loki -> Grafana

Loki 跟 Mimir 架構都差不多,學一套管理所有 Grafana 產品

Tracing

Grafana Tempo

  • 取代 Jaeger 收 Tracing 資料
  • 架構上都跟上面一樣,只是 Read 有多一步驟 (來不及寫了,有請大大補充)
  • 收 Tracing 資料的同時也會產生一些 Metrics,可以在 Grafana 上面做對應
    • 在 Log + Tracing 的部分,需要 Log 內部有寫入 traceID 相關的資訊才能做查詢

Profiling

Grafana Phlare (archived since 2023-03-15)

收集 APP 的資料,查看某個 function 的火焰圖

  • Grafana 買了 Pyroscope 之後就把 Phlare 關掉了
  • 預計之後可以看到有相關的功能整合進 Grafnaa

Demo

  • 透過 grafana 全家餐,可以把 Tracing 跟 metics 做關聯
    • 可查看瓶頸卡在哪個函式上面

demo 是透過 docker-compose 建立起來的系統,都可以在官方 github 上面找到:

Select a repo