服务监测

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

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 Core实战(八)服务监测的更多相关文章

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

    因为基于Dapr的服务架构是不限语言的,我们来看看Dapr的跨语言开发.我们使用golang,python,.NET来实现跨语言的服务调用,拓扑如下 我们继续使用.NET 5的fontend和back ...

  2. Dapr + .NET Core实战(十二)服务调用之GRPC

    什么是GRPC gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. gRPC 的主要优点是: 高性能轻量级 RPC 框架. 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的 ...

  3. Dapr + .NET Core实战(七)Secrets

    什么是Secrets 应用程序通常会通过使用专用的存储来存储敏感信息,如连接字符串.密钥等. 通常这需要建立一个密钥存储,如Azure Key Vault.Hashicorp等,并在那里存储应用程序级 ...

  4. Dapr + .NET Core实战(九)本地调试

    前几节开发Dapr应用程序时,我们使用 dapr cli 来启动dapr服务,就像这样: dapr run --dapr-http-port 3501 --app-port 5001 --app-id ...

  5. Dapr + .NET Core实战(十四)虚拟机集群部署 mDNS + Consul

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

  6. Dapr + .NET Core实战(四)发布和订阅

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

  7. Dapr + .NET Core实战(五)Actor

    什么是Actor模式 Actors 为最低级别的"计算单元" 以上解释来自官方文档,看起来"晦涩难懂".大白话就是说Actors模式是一段需要单线程执行的代码块 ...

  8. Dapr + .NET Core实战(六)绑定

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

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

    工作原理 为了实现在k8s上安装Dapr,Dapr需要部署dapr-sidecar-injector.dapr-operator.dapr-placement和dapr-sentry服务. dapr- ...

随机推荐

  1. Maven使用--基本入门

    maven学习(上)- 基本入门用法 转载自:https://www.cnblogs.com/yjmyzz/p/3495762.html 参考: http://www.cnblogs.com/dave ...

  2. Jemeter压力测试

    Jmeter教程 简单的压力测试 Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好. 转载自小坦克:https: ...

  3. 未解决的html页面banner对不齐

    莫名其妙的问题,记录等待解决: 怎么讲呢?就是可能真的没有理解这句话,浏览器是否是需要这句话的,思考! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  4. C++字符串【string】和【char []】操作全攻略

    异想之旅:本人博客完全手敲,绝对非搬运,全网不可能有重复:本人无团队,仅为技术爱好者进行分享,所有内容不牵扯广告.本人所有文章发布平台为CSDN.博客园.简书和开源中国,后期可能会有个人博客,除此之外 ...

  5. Go测试--main测试

    目录 简介 示例 简介 子测试的一个方便之处在于可以让多个测试共享Setup和Tear-down.但这种程度的共享有时并不满足需求,有时希望在整个测试程序做一些全局的setup和Tear-down,这 ...

  6. 地图控件:overview、scale、toolbar

    地图常用控件: 1.AMap.MapType:地图类型切换插件,用来切换固定的几个常用图层 2.AMap.OverView:地图鹰眼插件,默认在地图右下角显示缩略图 3.AMap.Scale:地图比例 ...

  7. Linux centos7 -bash: pstree: 未找到命令

    2021-08-12 1. 命令简介pstree命令将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root),如果有指定使用者 id,则树状图会只 ...

  8. Python - 面向对象编程 - 实战(6)

    需求 设计一个培训机构管理系统,有总部.分校,有学员.老师.员工,实现具体如下需求: 有多个课程,课程要有定价 有多个班级,班级跟课程有关联 有多个学生,学生报名班级,交这个班级对应的课程的费用 有多 ...

  9. vue-过滤器(filter)的使用详解

    前言 Vue 允许我们在项目中定义过滤器对我们页面的文本展示进行格式的控制,本文就来总结一下过滤器在项目中的常见使用方法. 正文 1.局部过滤器的注册 (1)无参局部过滤器 <div id=&q ...

  10. 常见GDB命令