Skywalking, SkyAPM-dotnet使用方式

自定链路日志

/// <summary>
    /// 自定链路日志
    /// </summary>
    /// <returns></returns>
    public string SkywalkingLog()
    {
        //获取全局traceId
        var traceId = _segContext.Context.TraceId;
        _segContext.Context.Span.AddLog(LogEvent.Message($"自定义日志1, traceId: {traceId}"));
        // Thread.Sleep(1000);
        // _segContext.Context.Span.AddLog(LogEvent.Message("自定义日志2"));
        return traceId;
    }

接管原本的log,将下面代码加入到Startup.cs之后,skywalking将采集所有日志。

builder.Services.AddSkyApmExtensions().AddMSLogging();

新增自定义监控指标

  1. 在/config/oal/core.oal 中定义新的指标名
  2. 在应用中,发送type为entry的span,
  3. 在entrySpan中加入x-el参数,启动logic-endpoint
  4. 在x-el中定义EndPoint的名称以及其他参数,供在core.oal中使用

内部埋点处理器的注册流程

内部依赖的注入关系

  1. 提供ITracingDiagnosticProcessor的实现类ImplProcessor
  2. 在AddSkyAPM or AddSkyAPMCore中添加单例TracingDiagnosticProcessorObserver(实现自IObserver)
    a. 然年在AddSkyAPMCore添加InstrumentStartup作为singleton
    b. 然后在InstrumentStartup中注入了TracingDiagnosticProcessorObserver
    c. 然后在InstrumentationHostedService(实现自IHostedService)注入了IInstrumentStartup
    d. 在CacheLoaderService.cs的StartAsync执行
  3. TracingDiagnosticProcessorObserver内部注入了ITracingDiagnosticProcessor

主要流程调用栈

  1. app.Run()
  2. HostingAbstractionsHostExtensions.Run(this);
  3. HostingAbstractionsHostExtensions.RunAsync(this);
  4. WebApplication.StartAsync(这一步不知道如何注入的)
  5. hostedService.StartAsync

此外,TracingDiagnosticProcessorObserver该观察者是在Skyapm.InstrumentStartup中的StartSync中订阅的

public async Task StartAsync(CancellationToken cancellationToken = default (CancellationToken))
{
  this._logger.Information("Initializing ...");
  foreach (IExecutionService service in this._services)
    await service.StartAsync(cancellationToken);
  DiagnosticListener.AllListeners.Subscribe((IObserver<DiagnosticListener>) this._observer);
  this._logger.Information("Started SkyAPM .NET Core Agent.");
}

因此如果要实现自己的处理器,则实现ITracingDiagnosticProcessor接口,然后将其注册为单例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值