欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Steeltoe之Distributed Tracing篇

程序员文章站 2022-05-13 22:54:59
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中一样的额外信息。
Steeltoe之Distributed Tracing篇

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。

Steeltoe之Distributed Tracing篇

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

Steeltoe之Distributed Tracing篇