Dapr + .NET 实战服务监测

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dapr + .NET 实战服务监测相关的知识,希望对你有一定的参考价值。

服务监测

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

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

相关文章:

以上是关于Dapr + .NET 实战服务监测的主要内容,如果未能解决你的问题,请参考以下文章

Dapr + .NET Core实战 服务调用

Dapr + .NET 实战本地调试

Dapr + .NET 实战(十三)跨语言开发

Dapr + .NET 实战服务调用之GRPC

Dapr + .NET 实战(十-终篇)K8S运行Dapr

Dapr + .NET 实战Secrets