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

 

posted on 2021-09-28 18:16  chester·chen  阅读(1816)  评论(3编辑  收藏  举报