Observability Architecture
(可觀測性架構)
graph LR;
Service1("AspNetCore Server</br>+</br>OpenTelemetry auto instrumentations") --log/metrics/tracing--> OpenTelemetryCollector;
Service2("AspNetCore Server</br>+</br>OpenTelemetry auto instrumentations") --log/metrics/tracing--> OpenTelemetryCollector;
Service3("AspNetCore Server</br>+</br>OpenTelemetry auto instrumentations") --log/metrics/tracing--> OpenTelemetryCollector;
Service2 --> Service3
OpenTelemetryCollector(<img src='https://cncf-branding.netlify.app/img/projects/opentelemetry/icon/color/opentelemetry-icon-color.svg' width='30'>OpenTelemetry Collector) --> Tempo;
OpenTelemetryCollector --> Loki;
OpenTelemetryCollector --> Prometheus;
Tempo(<img src='https://grafana.com/static/img/menu/grafana-tempo.svg' width='25'>Tempo) --> Grafana(<img src='https://grafana.com/static/img/menu/grafana2.svg' width='25'>Grafana);
Loki(<img src='https://grafana.com/static/img/menu/loki.svg' width='25'>Loki) --> Grafana;
Prometheus(<img src='https://cncf-branding.netlify.app/img/projects/prometheus/icon/color/prometheus-icon-color.svg' width='25'>Prometheus) --> Grafana;
圖中服務、技術
|
|
服務 |
.Net (AspNetCore) |
資料傳輸套件 |
OpenTelemetry auto instrumentations |
資料傳輸協議 |
OpenTelemetry (otel) |
資料集中器 |
OpenTelemetry Collector |
Log Server |
Grafana Loki |
Metrices Server |
Prometheus |
Trace Server |
Grafana Tempo |
UI (Dashboard) |
Grafana |
什麼是可觀測性?
跟監控(Monitor)有什麼關係?
Observability vs Monitor
Observability |
Monitor |
得知系統為什麼 不工作 |
得知系統有沒有 正常工作 |
基於探索未預先定義的屬性和模式 |
基於預先定義的程式指標或日誌 |
依據一段時間的各項資料指標判斷這段時間的系統 行為 |
依據特定時間的各項指標判斷當下的系統 狀態 |
應用
- Application Performance Monitoring (APM)
- Monitoring (Security, Network)
- User Analyze
- SRE Metrics (SLO/SLA/SLI)
建立可觀測性架構的目的
- 利用 APM 達成
- 理解系統運作方式、狀態
- 縮短平均修復時間 (MTTR)
此節資訊參考 .net conf 2022 再不使用 APM 就芭比Q 了
簡易試用心得-ELK
- UX 設計優良
- 面板資訊完善
- 免費版沒有告警服務
- ElasticSearch 的資料庫控制需要學習
簡易試用心得-SigNoz
- 查詢速度快
- 功能豐富
- 介面編排需要適應
- 追蹤介面的甘特圖不容易閱讀
- 免費版的 clickhouse 就可以進行 s3 資料備份
簡易試用心得-Grafana
- 底層資料服務需要自行安裝
- loki, tempo, mimir(or prometheus)
- alerts mamanger
- 可自訂程度高
- 追蹤甘特圖、網路延遲等資訊都需要自己找合適的儀表板或是自己製作
- 底層服務的資料存儲設定相對麻煩,但是可以使用 s3 進行備份
使用技術
|
|
資料協議 |
Open Telemetry OpenTelemetry 為目前 CNCF 中活耀度僅次於 Kubernetes 的專案 |
網路 |
Http2 / gRPC |
幫助
- 易於查看服務效能問題
- 易於排查錯誤
- 取得個別功能的使用率、錯誤率
- 分析系統使用狀況
需求
- 服務軟體框架更新
- 專用伺服器與儲存空間
- 規劃資料留存時間與長期留存資料類型
- 網路支援 (gRPC/HTTP2)
Framwork Version Request
|
|
.net |
6 or newer |
.net framework |
4.6.2 or newer |
Nuget Package Request
- System.Diagnostics.DiagnosticSource
Open Telemetry Auto Instrument
- 程式碼改動幅度低
- 可在 Windows / Linux / MacOs 安裝並於背景執行
- container friendly
- 部分微軟常用套件需與 Auto Instrument 工具使用的版本相同
Open Telemetry Nuget Package
- 專案直接倚賴 Open Telemetry 套件
- 本機開發時也能啟用追蹤
Observability Architecture (可觀測性架構)
{"slideOptions":"{}","description":"可觀測性 (Observability) 三本柱","lang":"zh-TW","title":"Observability Architecture Slide","contributors":"[{\"id\":\"8a766cac-b39c-4722-8be8-f794a1d1520f\",\"add\":6706,\"del\":1194}]"}