.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,然后輸出在日志 以便進行查詢日志

 注:通過配置以后,只要是請求接口 都會記錄下來

菜鳥代碼,大神勿噴  如有不對的地方,歡迎指正

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM