dapr+.net实战服务监测

dotNET跨平台 dotNET跨平台     2023-01-09     256

关键词:

服务监测

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

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实战(十三)跨语言开发

欢迎大家参加4小时Dapr+.NET5的实战课程课程链接   https://ke.qq.com/course/4000292?tuin=1271860f 因为基于Dapr的服务架构是不限语言的,我们来看看Dapr的跨语言开发。我们使用golang,python,.NET来实现跨语言的服务调用&#... 查看详情

dapr+.net实战服务调用之grpc

欢迎大家参加4小时Dapr+.NET5的实战课程课程链接   https://ke.qq.com/course/4000292?tuin=1271860f什么是GRPCgRPC是一种与语言无关的高性能远程过程调用 (RPC)框架。gRPC的主要优点是:高性能轻量级RPC框架。协定优先 API开发,... 查看详情

dapr+.net实战(十-终篇)k8s运行dapr(代码片段)

工作原理为了实现在k8s上安装Dapr,Dapr需要部署dapr-sidecar-injector、dapr-operator、dapr-placement和dapr-sentry服务。 dapr-operator:管理组件(statestores,pub/subs,etc.)dapr-sidecar-injector: 将Dapr注入 annotated pods,并 查看详情

dapr+.net实战发布和订阅(代码片段)

什么是发布-订阅发布订阅是一种众所周知并被广泛使用的消息传送模式,常用在微服务架构的服务间通信,高并发削峰等情况。但是不同的消息中间件之间存在细微的差异,项目使用不同的产品需要实现不同的实现... 查看详情

dapr+.net实战(十四)虚拟机集群部署mdns+consul

前面我们说了在单机模式下和K8S集群下的Dapr实战,这次我们来看看如何在不使用K8S的情况下,在一个传统的虚拟机集群里来部署Dapr。1.环境准备我们准备两台centos7虚拟机Dapr1:192.168.43.131Dapr2:192.168.43.1322.DaprCLI安... 查看详情

dapr+.net实战绑定(代码片段)

什么是绑定处理外部事件或调用外部接口的功能就是绑定,绑定可以提供以下好处:避免连接到消息系统(如队列和消息总线)并进行轮询的复杂性聚焦于业务逻辑,而不是如何与系统交互使代码不受SDK或外部库的强耦... 查看详情

dapr+.net实战actor(代码片段)

什么是Actor模式Actors为最低级别的“计算单元”以上解释来自官方文档,看起来“晦涩难懂”。大白话就是说Actors模式是一段需要单线程执行的代码块。实际开发中我们经常会有一些逻辑不能并发执行,我们常用的做法就... 查看详情

dapr+.net实战secrets(代码片段)

什么是Secrets应用程序通常会通过使用专用的存储来存储敏感信息,如连接字符串、密钥等。通常这需要建立一个密钥存储,如AzureKeyVault、Hashicorp等,并在那里存储应用程序级别的密钥。要访问这些密钥存储,应... 查看详情

dapr+.netcore实战服务调用(代码片段)

服务调用是什么在分布式应用程序中的服务之间进行调用会涉及到许多挑战。例如:维护其他服务的地址。如何安全地调用服务。在发生短暂的暂时性错误时如何处理重试。分布式应用程序调用链路追踪。服务调用构建块通... 查看详情

dapr牵手.net学习笔记:想入非非的服务调用

demo运行环境:Windows10,Docker(dapr_zipkin,dapr_redid,dapr_placement)安装:daprinit卸载:dapruninstall,然后删除C:\\Users\\当前用户\\.daprdapr在部署时是通过给服务挂载一个sidecar, 查看详情

dapr+.netcore实战状态管理(代码片段)

状态管理解决了什么分布式应用程序中的状态可能很有挑战性。例如:应用程序可能需要不同类型的数据存储。访问和更新数据可能需要不同的一致性级别。多个用户可以同时更新数据,这需要解决冲突。服务必须重试 ... 查看详情

dapr牵手.net学习笔记:状态管理之docker-compose发布

Dapr牵手.NET学习笔记:想入非非的服务调用Dapr牵手.NET学习笔记:跨物理机负载均衡服务调用Dapr牵手.NET学习笔记:用docker-compose部署服务说明:为了给出demo的全貌,这篇有点长,如果有上一篇的基础,... 查看详情

dapr牵手.net学习笔记:跨物理机负载均衡服务调用

...用外部负载均衡nginx来对应,那在不同的host中跑同一服务,看看dapr内部的负载均衡是怎么实现的。说说现有的服务,两个服务,订单服务,支付服务;下完订单后同步调支付服务。一、demo项目的mock代码Ord... 查看详情

dapr牵手.net学习笔记:用docker-compose部署服务

...聊到用两个物理机(一个win,一个mac)来部署dapr和服务,实现order调用pay的负载均衡。本篇说一下在windows上的docker部署这三个服务,达到与上一篇的效果。三个服务的部署架构是这样的首先要把OrderSystem(服务端口80... 查看详情

dapr牵手.net学习笔记:开篇

dapr,一个为分布式应用程序的运行时,为开发者在对接分布式组件时,提供了便利。使用dapr带来的好处可扩展性,因为它是通过sidecar的理概念来集成其他运行时的。同时dapr还提供了多种语言的SDK。关于dapr更多... 查看详情

使用dapr和.net6.0进行微服务实战:dapr简介(代码片段)

...成长路上的垫脚石,让我们一起精进。本文是《使用Dapr和.NET6.0进行微服务实战》的第2篇Dapr简介部分,大致包括:了解Dapr,探索Dapr核心组件,设置Dapr环境,构 查看详情

我被dapr点燃

...度个人认为才刚刚热起来,9月份我写了Dapr+.NETCore实战一共10篇,从基础概念到简单的实战,但是有很多人感兴趣,具体表现在我个人维护的QQ群,人数从80人左右,增加到了155,将近增加了1倍,... 查看详情

dapr+net6+k8s最小原型项目架构和实现-12-将dapr项目部署到k8s集群(代码片段)

1.回顾上一章,我们使用AspNetCore6.0编写了Dapr项目:Dapr+Net6+K8S最小原型项目架构和实现-11-使用AspNetCore6.0编写Dapr项目Dapr+Net6+K8S最小原型项目架构和实现-11-使用AspNetCore6.0编写Dapr项目https://shuaihj.blog.csdn.net/article... 查看详情