Dapr + .NET 实战(八)服务监测
服務(wù)監(jiān)測
分布式服務(wù)性能指標(biāo),鏈路追蹤,運行狀況,日志記錄都很重要,我們?nèi)粘i_發(fā)中為了實現(xiàn)這些功能需要集成很多功能,替換監(jiān)控組件時成本也很高。
Dapr 可觀測性模塊將服務(wù)監(jiān)測與應(yīng)用程序分離。它自動捕獲由 Dapr sidecar 和 Dapr 服務(wù)生成的流量。它還公開性能指標(biāo)、資源利用率和系統(tǒng)的運行狀況。遙測以開放標(biāo)準(zhǔn)格式發(fā)布,使信息能夠饋入到選擇的監(jiān)視后端。當(dāng) Dapr 獲取監(jiān)控數(shù)據(jù)時,應(yīng)用程序不知道如何實現(xiàn)可觀測性。無需引用庫或?qū)崿F(xiàn)自定義檢測代碼。Dapr可以使開發(fā)人員專注于構(gòu)建業(yè)務(wù)邏輯,而不是監(jiān)測管道。
工作原理
Dapr的Sidecar支持監(jiān)測功能。當(dāng)服務(wù)間通信時,Dapr sidecar 會截獲流量并提取跟蹤、指標(biāo)和日志記錄信息。監(jiān)測以開放標(biāo)準(zhǔn)格式發(fā)布。默認情況下,Dapr 支持 OpenTelemetry 和 Zipkin。
Dapr收集器可以將遙測數(shù)據(jù)發(fā)布到不同的后端監(jiān)視工具。這些工具可以查詢分析 Dapr 遙測數(shù)據(jù)。
Zipkin服務(wù)跟蹤
Zipkin 是一種開源分布式跟蹤系統(tǒng)。它可以將遙測數(shù)據(jù)進行存儲和可視化。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服務(wù)是在初始化dapr的時候,啟動的一個docker容器
我們可以訪問一下?http://localhost:9411/zipkin/查看UI
?現(xiàn)在運行backend和frontend
dapr run --dapr-http-port 3511 --app-port 5000 --app-id backend dotnet .\BackEnd\bin\Debug\net5.0\BackEnd.dlldapr run --dapr-http-port 3501 --app-port 5001 --app-id frontend dotnet .\FrontEnd\bin\Debug\net5.0\FrontEnd.dll通過postman訪問
?查看zipkin ui中的調(diào)用記錄,點擊SHOW可以查看調(diào)用詳情
? 查看zipkin ui中的服務(wù)依賴關(guān)系
性能指標(biāo)收集
Dapr sidecar 會公開指標(biāo)終結(jié)點默認是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.0Dapr使用Prometheus作為標(biāo)準(zhǔn),Prometheus會調(diào)用Sidecar終結(jié)點,收集指標(biāo)
?下面我們運行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 9090dapr run --dapr-http-port 3501 --app-port 5001 --app-id frontend dotnet .\FrontEnd\bin\Debug\net5.0\FrontEnd.dll --metrics-port 9091在dapr默認目錄下創(chuàng)建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: 5sstatic_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/,并查詢指標(biāo)
Dapr儀表盤
Dapr 提供一個儀表板,用于顯示有關(guān) Dapr 應(yīng)用程序、組件和配置的狀態(tài)信息。使用 Dapr CLI 將儀表板在端口8080上啟動:
dapr dashboard相關(guān)文章:Dapr實戰(zhàn)(一) 基礎(chǔ)概念與環(huán)境搭建
Dapr + .NET Core實戰(zhàn)(二) 服務(wù)調(diào)用
Dapr + .NET Core實戰(zhàn)(三)狀態(tài)管理
Dapr + .NET 實戰(zhàn)(四)發(fā)布和訂閱
Dapr + .NET 實戰(zhàn)(五)Actor
Dapr + .NET 實戰(zhàn)(六)綁定
Dapr + .NET 實戰(zhàn)(七)Secrets
總結(jié)
以上是生活随笔為你收集整理的Dapr + .NET 实战(八)服务监测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用 EF Core 按周 对数据分
- 下一篇: Dapr + .NET 实战(七)Sec