4小時Dapr+.NET 5+K8S 的實戰 https://ke.qq.com/course/4000292?tuin=1271860f
Dapr進階虛擬機集群實戰(非K8S) https://ke.qq.com/course/4002149?tuin=1271860f
服務監測
分布式服務性能指標,鏈路追蹤,運行狀況,日志記錄都很重要,我們日常開發中為了實現這些功能需要集成很多功能,替換監控組件時成本也很高。
Dapr 可觀測性模塊將服務監測與應用程序分離。它自動捕獲由 Dapr sidecar 和 Dapr 服務生成的流量。它還公開性能指標、資源利用率和系統的運行狀況。 遙測以開放標准格式發布,使信息能夠饋入到選擇的監視后端。當 Dapr 獲取監控數據時,應用程序不知道如何實現可觀測性。 無需引用庫或實現自定義檢測代碼。 Dapr可以使開發人員專注於構建業務邏輯,而不是監測管道。
工作原理
Dapr的Sidecar支持監測功能。 當服務間通信時,Dapr sidecar 會截獲流量並提取跟蹤、指標和日志記錄信息。 監測以開放標准格式發布。 默認情況下,Dapr 支持 OpenTelemetry 和 Zipkin。
Dapr收集器可以將遙測數據發布到不同的后端監視工具。 這些工具可以查詢分析 Dapr 遙測數據。
Zipkin服務跟蹤
Zipkin 是一種開源分布式跟蹤系統。 它可以將遙測數據進行存儲和可視化。 Dapr 提供對 Zipkin 的默認支持。我們可以查看Dapr默認配置C:\Users\username\.dapr\config.yaml,指定了zipkin的配置信息
apiVersion: dapr.io/v1alpha1 kind: Configuration metadata: name: daprConfig spec: tracing: samplingRate: "1" zipkin: endpointAddress: http://localhost:9411/api/v2/spans
這個Zipkin服務是在初始化dapr的時候,啟動的一個docker容器
我們可以訪問一下 http://localhost:9411/zipkin/查看UI
現在運行backend和frontend
dapr run --dapr-http-port 3511 --app-port 5000 --app-id backend dotnet .\BackEnd\bin\Debug\net5.0\BackEnd.dll dapr run --dapr-http-port 3501 --app-port 5001 --app-id frontend dotnet .\FrontEnd\bin\Debug\net5.0\FrontEnd.dll
通過postman訪問
查看zipkin ui中的調用記錄,點擊SHOW可以查看調用詳情
查看zipkin ui中的服務依賴關系
性能指標收集
Dapr sidecar 會公開指標終結點默認是9090,可以通過--metrics-port 9090修改端口,可以查看控制台日志
time="2021-09-28T15:58:56.0700006+08:00" level=info msg="metrics server started on :22869/" app_id=backend instance=chesterchen-lap scope=dapr.metrics type=log ver=1.4.0
Dapr使用Prometheus作為標准,Prometheus會調用Sidecar終結點,收集指標
下面我們運行frontend指定其--metrics-port 9091,運行backend指定其端口9090
dapr run --dapr-http-port 3511 --app-port 5000 --app-id backend dotnet .\BackEnd\bin\Debug\net5.0\BackEnd.dll --metrics-port 9090 dapr run --dapr-http-port 3501 --app-port 5001 --app-id frontend dotnet .\FrontEnd\bin\Debug\net5.0\FrontEnd.dll --metrics-port 9091
在dapr默認目錄下創建prometheus配置文件prometheus.yml
global: scrape_interval: 15s # By default, scrape targets every 15 seconds. # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: - job_name: 'dapr' # Override the global default and scrape targets from this job every 5 seconds. scrape_interval: 5s static_configs: - targets: ['192.168.43.94:9090','192.168.43.94:9091'] # Replace with Dapr metrics port if not default
通過docker運行prometheus
C:\Users\chesterychen\.dapr>docker run -p 8081:8081 --name prometheus -v C:/Users/chesterychen/.dapr/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml --web.listen-address=:8081
訪問prometheus UI:http://localhost:8081/,並查詢指標
Dapr儀表盤
Dapr 提供一個儀表板,用於顯示有關 Dapr 應用程序、組件和配置的狀態信息。 使用 Dapr CLI 將儀表板在端口8080上啟動:
dapr dashboard