Steeltoe里的分散式追蹤功能與 "Spring Cloud Sleuth" 一樣,支持在日誌中記錄追蹤數據,或者上傳到遠端的服務,比如Zipkin。 Logging 在Steeltoe中使用日誌時需要引入其特有的日誌包 。 之後還需在應用程式啟動時加入日誌提供器。 接下來,引入追蹤包 。 然後 ...
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服務中查看,追蹤數據確實已經傳入到其中。