zoukankan      html  css  js  c++  java
  • .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,然后输出在日志 以便进行查询日志

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

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

  • 相关阅读:
    设计模式小结
    Asp.net 中HttpHandler,HttpModule,IHttpHandlerFactory的原理与应用(一)
    全新对待.net一次全面的旅程
    页面生命周期小结
    面向对象点滴
    Chapter 2.1:WCF服务契约的重载与继承详解
    一封给“X教授”的回信(讨论Socket通信)
    Chapter 1.4:WCF实践 元数据详解
    有了WCF,Socket是否已人老珠黄?
    Chapter 1.3:WCF实践 HelloWorld
  • 原文地址:https://www.cnblogs.com/wuyabaibsd/p/9829272.html
Copyright © 2011-2022 走看看