1. 程式人生 > >Steeltoe之Distributed Tracing篇

Steeltoe之Distributed Tracing篇

ddc env 基礎上 想要 text sample uil ext ret

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服務中查看,追蹤數據確實已經傳入到其中。

技術分享圖片

Steeltoe之Distributed Tracing篇