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.dlldapr 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 9090dapr 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: 5sstatic_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实战(一) 基础概念与环境搭建
Dapr + .NET Core实战(二) 服务调用
Dapr + .NET Core实战(三)状态管理
Dapr + .NET 实战(四)发布和订阅
Dapr + .NET 实战(五)Actor
Dapr + .NET 实战(七)Secrets
Dapr + .NET 实战(八)服务监测相关推荐
- Dapr + .NET 实战(十二)服务调用之GRPC
欢迎大家参加4小时Dapr+.NET 5的实战课程 课程链接 https://ke.qq.com/course/4000292?tuin=1271860f 什么是GRPC gRPC 是一种与语 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十八)——服务保护之多级缓存...
很久没有更新dapr系列了.今天带来的是一个小的组件集成,通过多级缓存框架来实现对服务的缓存保护,依旧是一个简易的演示以及对其设计原理思路的讲解,欢迎大家转发留言和star 目录: 一.通过Dapr实 ...
- Dapr + .NET 实战(十四)虚拟机集群部署 mDNS + Consul
前面我们说了在单机模式下和K8S集群下的Dapr实战,这次我们来看看如何在不使用K8S的情况下,在一个传统的虚拟机集群里来部署Dapr. 1.环境准备 我们准备两台centos7虚拟机 Dapr1:1 ...
- Dapr + .NET 实战(十三)跨语言开发
欢迎大家参加4小时Dapr+.NET 5的实战课程 课程链接 https://ke.qq.com/course/4000292?tuin=1271860f 因为基于Dapr的服务架构是不限语言 ...
- Dapr + .NET 实战(十-终篇)K8S运行Dapr
工作原理 为了实现在k8s上安装Dapr,Dapr需要部署dapr-sidecar-injector.dapr-operator.dapr-placement和dapr-sentry服务. dapr- ...
- Dapr + .NET 实战(七)Secrets
什么是Secrets 应用程序通常会通过使用专用的存储来存储敏感信息,如连接字符串.密钥等. 通常这需要建立一个密钥存储,如Azure Key Vault.Hashicorp等,并在那里存储应用程序级 ...
- Dapr + .NET 实战(六)绑定
什么是绑定 处理外部事件或调用外部接口的功能就是绑定,绑定可以提供以下好处: 避免连接到消息系统 ( 如队列和消息总线 ) 并进行轮询的复杂性 聚焦于业务逻辑,而不是如何与系统交互 使代码不受 SDK ...
- Dapr + .NET 实战(五)Actor
什么是Actor模式 Actors 为最低级别的"计算单元" 以上解释来自官方文档,看起来"晦涩难懂".大白话就是说Actors模式是一段需要单线程执行的代码块 ...
- 实战NFS服务搭建与配置
nfs服务应用: 存储静态文件如:图片(头像logo),视频,附件等. 1. 查看所有机器是否安装了 rpcbind nfs-utils [root@nfs-server ~]# rpm -qa nf ...
最新文章
- 分离Exchange的OWA和Microsoft-Server-Activesync手机访问
- KTHREAD 结构体属性介绍
- redis集群搭建报错-(error) CLUSTERDOWN The cluster is down
- Asterisk队列(Queue)振铃方式(ring strategy)
- 如何实现用户自己定义控件。
- 马化腾评 ofo 溃败原因;京东到家否认裁员;王兴质押全部摩拜股权 | 极客头条...
- endnote X7 超级初学者教程
- 如何去掉暴风影音广告,去掉暴风影音暂停时的广告
- 地理信息安全在线培训考试系统题库-单选题
- C#根据银行卡号获取银行
- 兼容低版本IE浏览器的一些技巧分享
- 无缝轮播图无缝轮播图
- 质量小议19 -- 熵
- 利用Java反射机制调用含数组参数的方法
- java中paint_Java中paint怎么用
- java word模版填充_Java 数据填充到word模板中
- 学生成绩管理系统E-R图
- Python爬取微信公众号素材库
- 流媒体学习-WebRTC全面入门学习-1
- 使用CSS使div块内容垂直居中的方法
热门文章
- 可穿戴设备对企业的积极意义
- 很好用的ISO制作软件
- virtualenv模块使用
- bzoj2460: [BeiJing2011]元素
- 解决java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor问题
- BZOJ 2588: Spoj 10628. Count on a tree 树上跑主席树
- 设计模式之-命令模式(Command Pattern)
- 理解 Delphi 的类(七) - 认识类的多态
- raspberry pi_每日新闻摘要:新型iMac,NVIDIA的Raspberry Pi竞争对手等
- iphone手机备忘录迁移_如何在iPhone和iPad上使用语音备忘录