.NET Core----zipkin链路追踪使用

本文主要是说明core怎么使用链路追踪

一.添加nuget包

二.在Startup中添加配置

        /// <summary>
        /// 注册zipkinTrace
        /// </summary>
        /// <param name="app"></param>
        /// <param name="loggerFactory"></param>
        /// <param name="lifetime"></param>
        public void RegisterZipkinTrace(IApplicationBuilder app, ILoggerFactory loggerFactory, IApplicationLifetime lifetime)
        {
            lifetime.ApplicationStarted.Register(() =>
            {
                TraceManager.SamplingRate = 1.0f;//记录数据密度,1.0代表全部记录
                var logger = new TracingLogger(loggerFactory, "zipkin4net");//内存数据
                var httpSender = new HttpZipkinSender("http://120.78.146.192:9411", "application/json");
                var tracer = new ZipkinTracer(httpSender, new JSONSpanSerializer());//注册zipkin
                TraceManager.RegisterTracer(tracer);//注册
                TraceManager.Start(logger);//放到内存中的数据

                //File.AppendAllText("D:" + this.GetType().Name + ".txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss" + logger));
            });

            lifetime.ApplicationStopped.Register(() => TraceManager.Stop());

            app.UseTracing("net_core_api");//这边的名字可自定义
        }

  然后在Configure中添加RegisterZipkinTrace(app, loggerFactory, lifetime)注册

三.如何获取spanId和traceId的值

var myTraceId = ConvertHelper.EncodeLongToLowerHexString(Trace.Current.CurrentSpan.TraceId);
var mySpanId = ConvertHelper.EncodeLongToLowerHexString(Trace.Current.CurrentSpan.SpanId);

 获取出来的值不是真正的spanId和traceId,还需要进行编码:

        public static string EncodeLongToLowerHexString(long value)
        {
            return value.ToString("x16");
        }

  好了,现在通过这个方法就可以获取出真正的spanid和traceid,然后输出在日志 以便进行查询日志

注:通过配置以后,只要是请求接口 都会记录下来

菜鸟代码,大神勿喷  如有不对的地方,欢迎指正

原文地址:https://www.cnblogs.com/wuyabaibsd/p/9829272.html

时间: 2024-11-10 08:03:30

.NET Core----zipkin链路追踪使用的相关文章

zipkin链路追踪

zipkin架构说明 3个主要概念 (1)Trace:它是由一组有相同Trace ID的Span串联形成一个树状结构.为了实现请求跟踪,当请求请求到分布式系统的入口端点时,只需要服务跟踪框架为该请求创建一个唯一的跟踪标识(即前文提到的Trace ID),同时在分布式系统内部流转的时候,框架始终保持传递该唯一标识,直到返回请求为止,我们通过它将所有请求过程中的日志关联起来: (2)Span:它代表了一个基础的工作单元,例如服务调用.为了统计各处理单元的时间延迟,当前请求到达各个服务组件时,也通过一

基于zipkin分布式链路追踪系统预研第一篇

分布式服务追踪系统起源于Google的论文“Dapper, a Large-Scale Distributed Systems Tracing Infrastructure”(译文可参考此处),Twitter的zipkin是基于此论文上线较早的分布式链路追踪系统了,而且由于开源快速被各社区所研究,也诞生了很多的版本. 在这里也是对zipkin进行研究,先贴出Twitter zipkin结构图. 结构比较简单,大概流程为: Trace数据的收集至Scribe(Facebook开源的日志传输通路)或

zipkin分布式链路追踪系统

基于zipkin分布式链路追踪系统预研第一篇 分布式服务追踪系统起源于Google的论文“Dapper, a Large-Scale Distributed Systems Tracing Infrastructure”(译文可参考此处),Twitter的zipkin是基于此论文上线较早的分布式链路追踪系统了,而且由于开源快速被各社区所研究,也诞生了很多的版本. 在这里也是对zipkin进行研究,先贴出Twitter zipkin结构图. 结构比较简单,大概流程为: Trace数据的收集至Scr

spring cloud 入门系列八:使用spring cloud sleuth整合zipkin进行服务链路追踪

好久没有写博客了,主要是最近有些忙,今天忙里偷闲来一篇. =======我是华丽的分割线========== 微服务架构是一种分布式架构,微服务系统按照业务划分服务单元,一个微服务往往会有很多个服务单元,一个请求往往会有很多个单元参与,一旦请求出现异常,想要去定位问题点真心不容易,因此需要有个东西去跟踪请求链路,记录一个请求都调用了哪些服务单元,调用顺序是怎么样的以及在各个服务单元处理的时间长短.常见的服务链路追踪组件有google的dapper.twitter的zipkin.阿里的鹰眼等,它们

分布式链路追踪(Sleuth、Zipkin)

技术背景 在微服务架构中,随着业务发展,系统拆分导致系统调用链路愈发复杂,一个看似简单的前端请求可能最终需要调用很多次后端服务才能完成,那么当整个请求出现问题时,我们很难得知到底是哪个服务出了问题导致的,这时就需要解决一个问题,如何快速定位服务故障点,于是,分布式系统调用链追踪技术就此诞生了. ZipKin Zipkin 是一个由Twitter公司提供并开放源代码分布式的跟踪系统,它可以帮助收集服务的时间数据,以解决微服务架构中的延迟问题,包括数据的收集.存储.查找和展现. 每个服务向zipki

个推基于 Zipkin 的分布式链路追踪实践

作者:个推应用平台基础架构高级研发工程师 阿飞 01业务背景 随着微服务架构的流行,系统变得越来越复杂,单体的系统被拆成很多个模块,各个模块通过轻量级的通信协议进行通讯,相互协作,共同实现系统功能. 单体架构时,一个请求的调用链路很清晰,一般由负载均衡器将用户请求转发到后端服务,由后端服务进行业务处理,需要的数据从外部的存储中获取,处理完请求后,再经由负载均衡器返回给用户. 而在微服务架构中,一个请求往往需要多个模块共同协作处理,不同模块可能还依赖于不同的外部存储,各个模块的实现技术还不尽相同,

Spring Cloud全链路追踪实现(Sleuth+Zipkin+RabbitMQ+ES+Kibana)

简介 在微服务架构下存在多个服务之间的相互调用,当某个请求变慢或不可用时,我们如何快速定位服务故障点呢?链路追踪的实现就是为了解决这一问题,本文采用Sleuth+Zipkin+RabbitMQ+ES+Kibana实现. Spring Cloud Sleuth Trace:从客户端请求到系统边界,再到系统边界返回客户端响应. Span:每一次调用埋入一个调用记录,即为 “Span”,一系列有序的Span构成一个Trace. Zipkin Zipkin 是由Twitter公司开源的一个分布式追踪系统

molten:PHP 应用透明链路追踪工具

本文和大家分享的主要是php中应用透明链路追踪工具molten相关内容,一起来看看吧,希望对大家学习php有所帮助. molten molten是应用透明链路追踪工具. molten追踪php核心调用库运行时信息并且按照zipkin/optracing格式输出信息. molten提供多种sapi, 多种采样类型, 上报追踪状态, 模块控制和多种数据落地 类型等功能. 依赖于molten很容易构建基于php语言的 分布式全链路追踪系统 目前已经运行在生产环境上千台机器上. 目录 安装 以下是你需要

分布式链路追踪系统预研第二篇

本文为博主原创文章,未经博主允许不得转载. 在上篇随笔后,分布式链路在缓慢推进.一直没什么兴致写,zipkin使用elasticsearch作为数据完全是可行的.但是揉合这两者,就存在两种方案: 第一种,保持zipkin,替换掉存储.即保持zipkin架构,替换掉默认数据存储,改用elasticsearch作为存储.这完全是可行的,但是做出来的也仅仅是一个分布式链路追踪系统.zipkin官方有相应的多数据源的实现源码,有兴趣大家可以自行去git上看. 由于我们想要的不只是分布式链路追踪系统,我们