建设网站分析报告商城网站建站

web/2025/9/26 0:41:26/文章来源:
建设网站分析报告,商城网站建站,网络整合营销理论是指什么,10个免费自学网OpenTelemetry 介绍OpenTelemetry是一种开放的源代码规范#xff0c;工具和SDK#xff0c;用于检测#xff0c;生成#xff0c;收集和导出遥测数据#xff08;指标#xff0c;日志和跟踪#xff09;,开放遥测技术得到了Cloud Native Computing Foundation#xff08;CN… OpenTelemetry 介绍OpenTelemetry是一种开放的源代码规范工具和SDK用于检测生成收集和导出遥测数据指标日志和跟踪,开放遥测技术得到了Cloud Native Computing FoundationCNCF的支持该基金会支持一系列流行的优秀的开源项目你可以去看一下CNCF景观图https://landscape.cncf.io/ 就明白了我的意思这个SDK支持所有主要的编程语言包括C#和ASP.NET Core。在这篇文章中我将讨论OpenTelemetry的全部含义为什么要使用它以及如何在.NET中使用对于典型的应用程序通常需要记录三组数据指标日志和跟踪。Logging 日志可以监听程序的进程发出的消息日志在.NET应用程序中如果您使用NuGet包ILogger中的日志记录功能就可以轻松的让OpenTelemetry支持 Microsoft.Extensions.Logging, 如果要构建ASP.NET Core应用程序通常已经使用了此功能。Metrics 指标提供运行进程的指标信息包括计数器仪表盘和直方图对OpenTelemetry中指标的支持仍在开发中 但是已经确定下来了指标包括以下•CPU 使用百分比•进程内存使用量•Http的请求数量Tracing 追踪也叫做分布式跟踪它记录单个操作的开始和结束时间以及与该操作相关的参数比如在ASP.NET Core中记录HTTP请求的跟踪您可能会记录请求和响应的开始和结束时间参数将是 Http的请求方式请求参数请求地址等请求调用会形成链路您可以深入了解时间耗费在哪个服务或者服务中有异常报错发生。Jaeger收集指标日志追踪信息只是一部分如何进行数据处理展示是APM系统的功能因为收集的数据遵循OpenTelemetry标准所以可以和APM系统完美结合。Jaeger和Zipkin是可以收集和显示并且与Open Telemetry兼容APM Zipkin的话比较久了并且没有很好的UI因此我个人推荐Jaeger看起来像这样上图显示了应用程序的跟踪,您可以看到它如何使用HTTP请求对MySQLRedis和外部API进行调用, 每行的长度显示了执行所需的时间,您可以轻松地从头到尾查看跟踪中执行的所有主要操作,您还可以深入研究每一行并查看与该部分跟踪有关的其他信息。Spans 跨度上面Jaeger图中的每一行都称为 Span,在.NET中的每一行均由System.Activities.Activity类型表示它也具有唯一的标识符开始和结束时间以及父范围的唯一标识符所以这些可以形成调用链并且Span还可以包含其他参数。不幸的是.NET团队的命名大大偏离了官方的OpenTelemetry规范我有点疑惑不过我现在已经明白了大概。我的理解是.NET已经包含一个Activity的类型因此.NET团队决定重用它而不是重新创建一个 Span的新类型这意味着很多命名与open-telemetry规范不匹配在.NET中你现在可以把 Span 和 Activity身份互换。注意在.NET 5中才有ActivitySource,在之前可以用 Activity。使用Span记录行为非常简单首先我们必须创建一个ActivitySource可以记录Span或活动的对象private static ActivitySource activitySource new ActivitySource(companyname.product.library,semver1.0.0); 然后我们可以调用StartActivity开始记录最后调用Dispose停止记录Spanusing (var activity activitySource.StartActivity(ActivityName) {// Pretend to do some work.await LongRunningAsync().ConfigureAwait(false); } // Activity gets stopped automatically at end of this block during dispose. Events 事件当Span开启记录后我们也可以在这期间记录事件这些事件包含了时间戳信息using (var activity activitySource.StartActivity(ActivityName) {await LongRunningOperation().ConfigureAwait(false); }public async Task LongRunningOperationAsync() {await Task.Delay(1000).ConfigureAwait(false);// Log timestamped events that can take place during an activity. Activity.Current?.AddEvent(new ActivityEvent(Something happened.)); } 在LongRunningOperationAsync方法中有一个问题是如何把activity传入这个方法如果我们定义了一个参数这体验也太差了但是将两个操作分离的一个好的方法是使用Activity.Current。一个常见的错误我可以预见的是Activity.Current可能是null所以这里我加了null判断。Attributes 属性属性是数据的键值对您可以将其记录为单个Span的一部分比如Http的请求方式请求状态码等。注意在Open Telemetry规范中叫 Attributes在 我们.NET 中叫Tagusing (var activity activitySource.StartActivity(ActivityName) {await LongRunningOperation().ConfigureAwait(false); }public async Task LongRunningOperationAsync() {await Task.Delay(1000).ConfigureAwait(false);// Log an attribute containing arbitrary data.Activity.Current?.SetTag(http.method, GET); } IsRecording 记录IsRecording是Span上的一个标志如果返回false表明该Span已结束另外如果你的数据量比较大的话你需要抽样采集比如10%那么你也可以手动把这些span设置为false它不会采集。注意在open-telemetryg规范中叫IsRecording在.NET Core 3.1中是 Recorded在.NET 5 中是 IsAllDataRequested。using (var activity activitySource.StartActivity(ActivityName) {await LongRunningOperation().ConfigureAwait(false); }public async Task LongRunningOperationAsync() {await Task.Delay(1000).ConfigureAwait(false);// Its possible to optionally request more data from a particular span.var activity Activity.Current;if (activity ! null activity.IsAllDataRequested){activity.SetTag(http.url, http://www.mywebsite.com);} } Trace的语义约定注意属性名称http.methodhttp.url我在以上示例中使用了该属性因为在open-telemetry规范中已经标准化了某些常用的属性名称标准化常用属性名称可以在Jaeger等APM中很好的展示它们属性名称已分类为几个不同的类别你可以花点时间看一下•General: 可用于描述不同种类的操作的常规语义属性•HTTP: 客户端和服务器的Http调用•Database: SQL 和 NoSql的调用•RPC/RMI: 远程调用比如gRPC等•Messaging: 用于与消息传递系统队列发布/订阅等•Exceptions: 用于记录与Span关联的异常的属性Exporting 导出有很多用于导出使用OpenTelemetry收集的数据的插件我将在我的下一篇博客文章中讨论有关在ASP.NET Core中使用Open Telemetry的信息, 可以很方便的处理这些数据您可以轻松地订阅然后消费OpenTelemetry数据如下所示using var subscriber DiagnosticListener.AllListeners.Subscribe(listener {Console.WriteLine($Listener name {listener.Name});listener.Subscribe(kvp Console.WriteLine($Received event {kvp.Key}:{kvp.Value}));}); 跨进程的追踪为什么这些程序会形成调用链它们是不同的进程这个怎么实现的呢这就是W3C跟踪上下文标准它定义了一系列HTTP Header这些Header将有关当前正在记录的任何跟踪的信息从一个进程传递到另一个进程它通过Http的Header来传递信息规范中定义了两个HTTP Header•traceparent-包含versiontrace-idparent-id和trace-flags•version - 在open-telemetry规范中它始终是00•trace-id - 跟踪的唯一标识符。•parent-id -作为当前 patent span 的唯一标识符。•trace-flags -当前跟踪的一组标志用于确定是否正在采样当前跟踪以及跟踪级别。•tracestate -由一组名称/值对表示的特定于供应商的数据。traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01 tracestate: asp00f067aa0ba902b7,redist61rcWkgMzE Baggage与Attributes类似Baggage是我们可以将数据作为键值对添加到跟踪的另一种方式不同之处在于Baggage使用W3C规范中baggage定义的HTTP Header跨进程边界传递但是Attributes的值数据只在当前Span中可用baggage: userIdalice,serverNodeDF:28,isProductionfalse 使用的话也有些相同之处using (var activity activitySource.StartActivity(ActivityName) {await LongRunningOperation().ConfigureAwait(false); }public async Task LongRunningOperationAsync() {await Task.Delay(1000).ConfigureAwait(false);// Log an attribute containing arbitrary data.Activity.Current?.AddBaggage(http.method, GET); } 它的用途在于比如说我需要传递一个订单ID我就可以放到 Baggage 数据中它在整个请求链路中都可以访问。总结.NET团队对OpenTelemetry非常重视你可以看到Activity类型在.NET 5 中的增强并且默认 HttpClient 调用时它会自动传输W3C跟踪上下文HTTP Header 基于ILogger的统一日志也可以很好的收集和OpenTelemetry兼容的日志。原文作者: Rehan Saeed 原文链接https://rehansaeed.com/deep-dive-into-open-telemetry-for-net/最后欢迎扫码关注我们的公众号 【全球技术精选】专注国外优秀博客的翻译和开源项目分享也可以添加QQ群 897216102

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

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

相关文章

手机网站的模板下载软件哪个搜索引擎能搜敏感内容

PCL点云处理之 基于垂直度检测与距离聚类 的路面点云提取方案 (二百三十九) 一、算法流程二、具体步骤1.垂直度检测与渲染1.代码2.效果2.水平分布点云提取1.代码2.效果3.路面连通点云提取1.代码2.效果三、完整代码四、参考文献一、算法流程

茂名建站模板搭建南阳做网站电话

摘要:新时代背景下,中国经济快速发展,城乡融合发展成为缩小城乡差距,推动共同富裕的重要方式。吉林省作为东北老工业基地,传统产业竞争优势减弱,城乡流动人才就业规模增加,并呈现“农村-城市”的…

iis网站发布默认首页横峰县建设局网站

在Spring Boot中整合Server-Sent Events (SSE) 是一种简单且有效的方法,用于实现服务器向客户端推送实时更新的功能。SSE 是一种服务器到客户端的单向通信协议,允许服务器推送消息到客户端,而不需要客户端发出请求。 1、添加依赖 首先,确保你的Spring Boot项目中已经包含…

怎么做自己的网站推广产品江苏网站备案

本文的标题来自Scott Hanselman 的 Xamarin Evolve 2013 Talk Video - How C# Saved My Marriage,想写下这些东西主要是今天看到了CSDN的一个极客头条《观点:.NET向何处去?》和传智播客.Net学院:《LinuxMono公开课》的视频看了2个…

制作网页创建站点的步骤专业的做网站软件

文章构建了一个通用单变量概率时间预测模型 Lag-Llama,在来自Monash Time Series库中的大量时序数据上进行了训练,并表现出良好的零样本预测能力。在介绍Lag-Llama之前,这里简单说明什么是概率时间预测模型。概率预测问题是指基于历史窗口内的…

天猫网站建设分析免费卡盟网站建设

目录 1 Zabbix简介1.1 软件架构1.2 版本选择1.3 功能特性 2 安装与部署2.1 时间同步需求2.2 下载仓库官方源2.3 Zabbix-Server服务端的安装2.3.1 安装MySQL2.3.1.1 创建Zabbix数据库2.3.1.2 导入Zabbix库的数据文件 2.3.2 配置zabbix_server.conf2.3.3 开启Zabbix-Server服务2.…

php彩票网站建设源码学院网站建设服务招生宣传

一、window对象 BOM属于window对象 1.BOM(浏览器对象模型) bom里面包含着dom,只不过bom我们平时用得比较少,我们经常使用的是dom操作,因为我们页面中的这些标签都是在dom中取的,所以我们操作dom多一点。 window对象…

深圳 建网站品牌建设方案的完整纲要

在 CentOS 7 上安装 Redis 可以通过几个简单的步骤完成。以下是一种常用的方法: 更新系统: 在安装任何新软件之前,最好先更新系统的软件包列表,以确保安装的软件版本是最新的。可以使用以下命令来更新: sudo yum up…

辽宁网站建设熊掌号广告优化师工资一般多少

正则表达式的() [] {}有不同的意思。 () 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。 (\s*)表示连续空格的字符串。 []是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。 (0-9) 匹配 0-9′ 本…

吉林市最新消息今天搜索引擎优化排名案例

2019年1月19日,苏州微软将举办苏州史上最盛大的开发者聚会,微软技术俱乐部成立大会暨微软技术交流会。超越苹果,登顶世界市值第一!云与AI两大技术支柱支撑起的微软帝国,正向万亿美元俱乐部挺进!微软的改变我…

企业网站建设方案商场设计平面布置图

目录 1.打开危险警告灯 2.取出反光背心穿上 3.取出指示牌 4.放置三角指示牌。 1.打开危险警示灯 2.取出反光背心穿上 3.取出指示牌

宁波做网站 主觉文化为啥网站打开速度慢

Lambda函数 JDK8新增的语法形式, 使用Lambda函数替代某些匿名内部类对象,从而让程序代码更简洁,可读性更好。 基本使用 lambda表达式只能简化函数式接口的匿名内部类写法 // 1.定义抽象类 abstract class Animal {public abstract void crt(); }publi…

联盟网站建设网址生成app一键生成器

1,写一个函数&#xff0c;判断一个字符串是否是回文字符串。 下面给出一个用于判断一个字符串是否是回文字符串的demo 函数 #include <stdio.h> #include <string.h> int isPalindrome(char str[]) { int len strlen(str); for (int i 0; i < len / 2;…

深网网站网站建设专业的公司

茵茵所在的合唱队共有N个人&#xff08;N为奇数&#xff09;。为了准备一次演出&#xff0c;老师开始为她们安排合唱队形了。大家都知道&#xff0c;合唱队形通常是中间高两端低的。老师是这样安排他们的队形的&#xff1a;先让所有的同学按高个儿在前的顺序排成一队。然后&…

视频网站管理系统哈尔滨网络推广经理招聘

图像分类是计算机视觉领域的一个基本任务&#xff0c;它在许多实际应用中都有广泛的应用。以下是一些图像分类的实战案例&#xff1a; 人脸识别&#xff1a; 应用&#xff1a;安全监控、身份验证、社交媒体面部标记。实例&#xff1a;使用深度学习模型识别和验证图像中的人脸&…

深圳市宝安区区号seo综合查询怎么关闭

介绍下面介绍 jupiter-0.2.7 版本中 grpc 通过 etcd 实现服务发现与注册。服务发现与注册的实现解析服务注册服务注册的流程图&#xff1a;etcd的服务注册代码模块在 jupiter/pkg/registry/etcdv3 中。下面让我们来看看实际的代码// Registry register/unregister service// re…

宜宾网站建设08keji品牌策划设计包括哪些内容

本地环境标识设置 本地父类maven配置 可以看到相关的分类&#xff0c;设置环境标识主要需要用到profiles; <profiles><profile><id>dev</id><properties><!-- 环境标识&#xff0c;需要与配置文件的名称相对应 --><profiles.active&…

免费建站网站排名东莞专业做网站的公司有哪些

pthread-win32是一个在Win32环境下的Unix POSIX线程库的移植. 有了它, 可以比较方便的移植Unix/Linux多线程程序到Windows下. 在VC2005下使用也很简单: 下载, 地址是 http://sourceware.org/pthreads-win32 里面include目录中是头文件, lib目录中是.lib和.dll文件. 在VC项目的属…

做好网站维护深圳网站建设icxun

前言 由于 VS Code 并不是一个传统意义上的 IDE&#xff0c;所以初学者可能在使用过程中会有很多的疑惑&#xff0c;其中比较常见的一个问题就是 tasks.json和 launch.json两个文件分别有什么作用以及如何配置 tasks.json VSCode 官网提供的 tasks.json 配置教程 使用不同的…