Dapr + .NET Core实战(八)服务监测

  • A+
所属分类:.NET技术
摘要

分布式服务性能指标,链路追踪,运行状况,日志记录都很重要,我们日常开发中为了实现这些功能需要集成很多功能,替换监控组件时成本也很高。


服务监测

分布式服务性能指标,链路追踪,运行状况,日志记录都很重要,我们日常开发中为了实现这些功能需要集成很多功能,替换监控组件时成本也很高。

Dapr 可观测性模块将服务监测与应用程序分离。它自动捕获由 Dapr sidecar 和 Dapr 服务生成的流量。它还公开性能指标、资源利用率和系统的运行状况。 遥测以开放标准格式发布,使信息能够馈入到选择的监视后端。当 Dapr 获取监控数据时,应用程序不知道如何实现可观测性。 无需引用库或实现自定义检测代码。 Dapr可以使开发人员专注于构建业务逻辑,而不是监测管道。

工作原理

Dapr + .NET Core实战(八)服务监测

Dapr的Sidecar支持监测功能。 当服务间通信时,Dapr sidecar 会截获流量并提取跟踪、指标和日志记录信息。 监测以开放标准格式发布。 默认情况下,Dapr 支持 OpenTelemetry 和 Zipkin

Dapr收集器可以将遥测数据发布到不同的后端监视工具。 这些工具可以查询分析 Dapr 遥测数据。

Zipkin服务跟踪

Zipkin 是一种开源分布式跟踪系统。 它可以将遥测数据进行存储和可视化。 Dapr 提供对 Zipkin 的默认支持。我们可以查看Dapr默认配置C:Usersusername.daprconfig.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容器

Dapr + .NET Core实战(八)服务监测

我们可以访问一下 http://localhost:9411/zipkin/查看UI

Dapr + .NET Core实战(八)服务监测

 现在运行backend和frontend

dapr run --dapr-http-port 3511 --app-port 5000 --app-id backend dotnet  .BackEndbinDebugnet5.0BackEnd.dll  dapr run --dapr-http-port 3501 --app-port 5001  --app-id frontend dotnet  .FrontEndbinDebugnet5.0FrontEnd.dll

通过postman访问

Dapr + .NET Core实战(八)服务监测

 

 查看zipkin ui中的调用记录,点击SHOW可以查看调用详情

Dapr + .NET Core实战(八)服务监测

  查看zipkin ui中的服务依赖关系

Dapr + .NET Core实战(八)服务监测

性能指标收集

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终结点,收集指标

Dapr + .NET Core实战(八)服务监测

 下面我们运行frontend指定其--metrics-port 9091,运行backend指定其端口9090

dapr run --dapr-http-port 3511 --app-port 5000 --app-id backend dotnet  .BackEndbinDebugnet5.0BackEnd.dll --metrics-port 9090   dapr run --dapr-http-port 3501 --app-port 5001  --app-id frontend dotnet  .FrontEndbinDebugnet5.0FrontEnd.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:Userschesterychen.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 + .NET Core实战(八)服务监测

Dapr仪表盘

Dapr 提供一个仪表板,用于显示有关 Dapr 应用程序、组件和配置的状态信息。 使用 Dapr CLI 将仪表板在端口8080上启动:

dapr dashboard

Dapr + .NET Core实战(八)服务监测