引入Jaeger——使用

上一篇定义了两种使用Jaeger的方式:中间件和action过滤器,下面这个例子定义了两个服务 WebAPI01,请求WebAPI02,采用的是中间件的请求方式。

引入JaegerSharp包(或发布到自己的Nuget库里引用)

WebAPI01的Startup

using JaegerSharp;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
using System;namespace WebAPI01
{public class Startup{public Startup(IConfiguration configuration){Configuration = configuration;}public IConfiguration Configuration { get; }public void ConfigureServices(IServiceCollection services){//命名客户端services.AddHttpClient("WebAPI02", client =>{client.BaseAddress = new Uri(Configuration.GetSection("DownStreamUrl").Value);});services.AddControllers();services.AddSwaggerGen(c =>{c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebAPI01", Version = "v1" });});//添加OpenTracingservices.AddOpenTracing();//注入Jaegerif (Convert.ToBoolean(Configuration.GetSection("OpenTracing:Enable")?.Value)){var agentHost = Configuration.GetSection("OpenTracing:Agent").GetValue<string>("Host");var agentPort = Configuration.GetSection("OpenTracing:Agent").GetValue<int>("Port");var agentMaxPacketSize = Configuration.GetSection("OpenTracing:Agent").GetValue<int>("MaxPacketSize");services.AddJaegerSharp(agentHost, agentPort, agentMaxPacketSize);}}public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();app.UseSwagger();app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebAPI01 v1"));}app.UseHttpsRedirection();if (Convert.ToBoolean(Configuration.GetSection("OpenTracing:Enable")?.Value)){app.UseJaegerSharp();}app.UseRouting();app.UseAuthorization();app.UseEndpoints(endpoints =>{endpoints.MapControllers();});}}
}

WebAPI01的appsettings.json

{"Logging": {"LogLevel": {"Default": "Information","Microsoft": "Warning","Microsoft.Hosting.Lifetime": "Information"}},"OpenTracing": {"Enable": true,"Agent": {"Host": "localhost","Port": 6831,"MaxPacketSize": 0}},"DownStreamUrl": "https://localhost:6001"
}

调用下游服务 WebAPI02,下游服务 WebAPI02与WebAPI01类似,需要引入JaegerSharp,添加配置文件,指向同一个Jaeger的host,如果WebAPI02有下游API调用,继续配置调用。

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System.Net.Http;
using System.Threading.Tasks;namespace WebAPI01.Controllers
{[ApiController][Route("[controller]")]public class HomeController : ControllerBase{private readonly IHttpClientFactory _clientFactory;private readonly ILogger<HomeController> _logger;public HomeController(ILogger<HomeController> logger, IHttpClientFactory clientFactory){_clientFactory = clientFactory;_logger = logger;}[HttpGet]public async Task<string> Get(){_logger.LogInformation("WebAPI01中请求WebAPI02");var result = await GetWebAPI02();return $"WebAPI01请求WebAPI02返回值 :{ result}";}async Task<string> GetWebAPI02(){using var client = _clientFactory.CreateClient("WebAPI02");var request = new HttpRequestMessage(HttpMethod.Get, "/home");using var response = await client.SendAsync(request);if (response.IsSuccessStatusCode){var result = await response.Content.ReadAsStringAsync();return result;}else{return "error";}}}
}

下载Jaeger(https://www.jaegertracing.io/download/),我用的是1.21.0的Windows版本,因为我的开发环境是Windows,运行jaeger-all-in-one.exe

,再跑自己的应用,访问完链路后,打开localhost:16686,查看结果如下:

查询WebAPI01结果

点击WebAPI01:HTTP GET 7151a0a结果如下,链路清晰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android studio初始化设置,Android studio 初始设置

1.compiler 勾选 Make project automatically(only works while not running/debugging) 自动编译2.设置File Encodings 中的编码 IED ENcoding,Project Encoding,Default encoding for properties files 改为UTF-83.Gradle 中 勾选 offline work 加快编译速度4.设置Tasks 中的…

抖音ai智能机器人挂机_电销秘诀 电销企业难以拒绝的AI智能电销机器人

眼下是快节奏的时代&#xff0c;超智能化的电销机器人已然成为了电销企业实现高速发展的首选方式。为何现代电销企业都会摒弃纯人工电销方式&#xff0c;采取机器人与人工协作方式呢&#xff1f;这就不得不说是因为AI外呼机器人的卓越性能和优势。一&#xff0c;提升工作效率AI…

如何在 ASP.NET Core 中使用 ActionFilter

ASP.NET Core MVC 中的 Filters 允许我们在 请求处理管道 中的某一个阶段的之前和之后执行自定义代码&#xff0c;不同类型的 filter 对应着 请求处理管道 的不同阶段&#xff0c;比如说&#xff1a;ActionFilter 可以在 Action 方法的之前或者之后执行自定义代码&#xff0c;这…

dataset的去重计数 g2_ExcelExcel去重、计数一步到位,这个方法简单到哭

私信回复关键词【插件】&#xff0c;获取Excel高手都在用的“插件合集插件使用小技巧”&#xff01;最近在哼哧哼哧搬家&#xff0c;搬家第一天&#xff0c;面对空荡荡的房子&#xff0c;我发现了一个严峻的问题——日用品还没买。我打开了一个月前写下的日用品清单&#xff1a…

【源码解读】Vue与ASP.NET Core WebAPI的集成

在前面博文【Vue】Vue 与 ASP.NET Core WebAPI 的集成中&#xff0c;介绍了集成原理&#xff1a;在中间件管道中注册SPA终端中间件&#xff0c;整个注册过程中&#xff0c;终端中间件会调用node&#xff0c;执行npm start命令启动vue开发服务器&#xff0c;向中间件管道添加路由…

android开发环境 比较好,android 开发环境比较(Android开发环境比较).doc

android 开发环境比较(Android开发环境比较)android 开发环境比较(Android开发环境比较)Android build up various development environmentsThis article describes some of the things you need to know about the Android development environment configuration. The Andro…

ios采用什么技术_app软件公司开发宠物别APP采用什么技术?

app软件公司开发宠物别APP采用什么技术&#xff1f;随着经济的发展&#xff0c;人们生活水平的提高&#xff0c;养宠的家庭越来越多&#xff0c;宠物也逐渐成为主人家庭成员的重要组成部分&#xff0c;宠物识别APP在市场上也是很热门的手机软件&#xff0c;那么它是根据什么原理…

Dapr微服务应用开发系列3:服务调用构件块

题记&#xff1a;这篇开始逐一深入介绍各个构件块&#xff0c;从服务调用开始原理所谓服务调用&#xff0c;就是通过这个构件块让你方便的通过HTTP或者gRPC协议同步调用其他服务的方法&#xff0c;这些方法也是通过HTTP或者gRPC来暴露的。而方便的含义在于&#xff0c;你无需担…

Android开发p图软件,媲美大神P图效果 Android软件抠图神手

媲美大神P图效果 Android软件抠图神手2013年02月20日 01:50作者&#xff1a;杨霏霏编辑&#xff1a;杨霏霏文章出处&#xff1a;泡泡网原创分享泡泡网手机频道2月20日 PS的功能大家耳熟能详&#xff0c;其中抠图便是各位PS用户普遍会用到的一个功能。然而手机上抠图大家想过吗&…

腾讯公测云开发低码!实战评测

听说腾讯的新产品『 云开发低码 』即将开放公测了&#xff0c;怀着无比激动的心情&#xff0c;鱼皮立刻去官网申请并成功拿到了公测资格&#xff0c;然后使用它开发了一个小程序&#xff0c;并且通过 2020 Techo Park 开发者大会加深了对这项技术的了解。而就在 2020 年的最后一…

gitee 从 拉取新分支到本地_Hexo博客详细教程(一)| 建立本地站点

点上方蓝字关注我们每天都有好玩的东西等着你博客炫酷效果展示安装Hexo安装Git参考文章&#xff1a;Git实用教程(二) | Git简介及安装详解。安装NodejsNodejs可以从官网( https://nodejs.org/en )下载LTS版本&#xff1a;安装之后检查一下是否正常输出版本信息&#xff1a;安装…

索尼android 怎么截屏快捷键,索尼XZ Premium怎么截屏 2种索尼XZ Premium截图方法

截屏作为手机常用功能之一&#xff0c;我们经常在分享朋友圈或微博的时候经常需要用到屏幕截屏。今天本文主要分享一下索尼XZ Premium怎么截屏&#xff0c;作为一款相对冷门的非国产骁龙835旗舰机&#xff0c;在使用中难免出现一些不太熟悉的问题&#xff0c;下面小编分享2种索…

IdentityServer4 之Client Credentials走起来

前言API裸奔是绝对不允许滴&#xff0c;之前专门针对这块分享了jwt的解决方案(WebApi接口裸奔有风险)&#xff1b;那如果是微服务&#xff0c;又怎么解决呢&#xff1f;每一个服务都加认证授权也可以解决问题&#xff0c;只是显得认证授权这块冗余&#xff0c;重复在搞事情&…

读数据库遇到空就进行不下去_如何保证缓存与数据库的双写一致性?

作者&#xff1a;你是我的海啸来源&#xff1a;https://blog.csdn.net/chang384915878分布式缓存是现在很多分布式应用中必不可少的组件&#xff0c;但是用到了分布式缓存&#xff0c;就可能会涉及到缓存与数据库双存储双写&#xff0c;你只要是双写&#xff0c;就一定会有数据…

获取html滚动条位置,pc和移动端获取滚动条的位置

html5碰撞小球模拟这里根据动量守恒和能量守恒定理来计算小球的位置,从而模拟完全弹性碰撞下的小球运行轨迹. html代码: /p>spring jdbctemplate源码跟踪闲着没事,看看源码也是一种乐趣! java操作数据库的基本步骤都是类似的: 1. 建立数据库连接 2. 创建Connection 3. 创建s…

Windows Terminal 新手入门

翻译自 Kayla Cinnamon 2020年12月17日的文章《Getting Started with Windows Terminal》[1]安装Windows Terminal&#xff08;Windows 终端&#xff09;有两个不同的版本&#xff1a;Windows Terminal[2] 和 Windows Terminal 预览版[3]。两个版本都可以从 Microsoft Store 和…

html绑定按键图片移动,如何使用JS实现用键盘控制图片移动呢?

html xmlnshttp://www。w3。org/1999/xhtml headtitle标题页-学无忧(www。xue51。com)/title/headscript languageJavaScriptvar key0var timerfunction setObj(){ ietype (document。layers) ? 1 : 0; //判断浏览器类型 divObj (ietype)? document。mydiv : mydiv。style …

5120v2怎么配置web登陆_阿里企业邮箱如何配置和添加到第三个电子邮件客户端中?...

我们常见的第三方邮箱客户端有&#xff1a;Outlook、Thunderbird、Live mail、Web客户端、畅邮&#xff08;DM Pro&#xff09;客户端等&#xff0c;下面用畅邮&#xff08;DM Pro&#xff09;为例。流程一.配置信息企业邮箱POP、SMTP、IMAP地址列表如下&#xff1a;&#xff0…

赛尔号什么时候支持html5,赛尔号三全能时代即将来临 你准备好了吗

大新闻&#xff01;赛尔号刻印系统即将迎来改版升级&#xff01;更简单的刻印强化方式&#xff0c;更清晰的刻印等级机制&#xff0c;强化满级还有额外属性加成&#xff01;想知道具体情况如何&#xff1f;下面柚子姐姐就为大家介绍本次刻印系统改版升级后的全新变化吧&#xf…

银河麒麟V10入选2020中国十大科技新闻

日前&#xff0c;中央电视台、中央人民广播电台、中国国际广播电台、中国国际电视台联合评选了“2020十大国内科技新闻”&#xff0c;“银河麒麟操作系统V10”与其他国家科技领域重大成榜上有名。8月13日&#xff0c;银河麒麟操作系统V10发布后&#xff0c;央视新闻、人民日报、…