Steeltoe之Distributed Tracing篇
程序员文章站
2024-02-01 20:37:58
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服务中查看,追踪数据确实已经传入到其中。
上一篇: 结构型模式:代理模式
下一篇: php生成随机密码的几种方法