zoukankan      html  css  js  c++  java
  • Steeltoe之Distributed Tracing篇

    Steeltoe里的分布式追踪功能与Spring Cloud Sleuth一样,支持在日志中记录追踪数据,或者上传到远端的服务,比如Zipkin。

    Logging

    在Steeltoe中使用日志时需要引入其特有的日志包Steeltoe.Extensions.Logging.DynamicLogger

    之后还需在应用程序启动时加入日志提供器。

    WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().ConfigureLogging((builderContext, loggingBuilder) =>
    {
        loggingBuilder.AddConfiguration(builderContext.Configuration.GetSection("Logging"));
    
        // Add Steeltoe Dynamic Logging provider
        loggingBuilder.AddDynamicConsole();
    });
    

    接下来,引入追踪包Steeltoe.Management.TracingCore

    然后在Startup类中加入追踪服务。

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDistributedTracing(Configuration);
    
        services.AddMvc();
    }
    

    最后在Action方法里添加日志锚点。

    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        private readonly ILogger _logger;
        public ValuesController(ILogger<ValuesController> logger)
        {
            _logger = logger;
        }
        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            _logger.LogWarning("Hello log");
            return new string[] { "value1", "value2" };
        }
    }
    

    并在appsettings.json文件确认如下配置:

    "Logging": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
    

    这样启动程序后,可以在输出窗口内看到两条日志,这是因为Steeltoe的日志提供器是对ASP.NET Core自身日志器的进一步封装,其在原始数据基础上增加了如Spring Cloud Sleuth中一样的额外信息。

    Exporting

    如果想要把追踪数据发送到Zipkin服务中,还需额外引入新的包Steeltoe.Management.ExporterCore

    并在Startup类中增加新的服务。

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDistributedTracing(Configuration);
        services.AddZipkinExporter(Configuration);
    
        services.AddMvc();
    }
    
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseMvc();
    
        app.UseTracingExporter();
    }
    

    appsettings.json文件里加上上文中Zipkin的服务地址。

    "management": {
      "tracing": {
        "alwaysSample": true,
        "egressIgnorePattern": "/api/v2/spans|/v2/apps/.*/permissions|/eureka/.*|/oauth/.*",
        "exporter": {
          "zipkin": {
            "endpoint": "http://localhost:10000/api/v2/spans",
            "validateCertificates": false
          }
        }
      }
    }
    

    再次启动程序,首先可以看到exportable字段的值已从false变为了true。

    然后,再到Zipkin服务中查看,追踪数据确实已经传入到其中。

  • 相关阅读:
    html提交表单到Servlet
    Kubernetes(k8s)概念学习、集群安装
    Kubernetes(k8s)入门学习
    Spring Boot整合Scheduled定时任务器、整合Quartz定时任务框架
    Maven项目Run As无Run On Server的解决方法
    SpringBoot异常处理五种方式、Junit单元测试、热部署
    SpringBoot整合整合jsp、整合freemarker、整合Thymeleaf
    SpringBoot整合Servlet、Filter、Listener、访问静态资源、文件上传
    Vue前端路由
    Vue前端交互
  • 原文地址:https://www.cnblogs.com/kenwoo/p/9725200.html
Copyright © 2011-2022 走看看