protected virtual ISpan CreateSpan(string activityId, string parentId, string operationName, CommandEventData eventData, IEfCoreSpanMetadataProvider metadataProvider) { var span = ConcurrentContextManager.CreateExitSpan(operationName, metadataProvider.GetPeer(eventData.Command.Connection), activityId, parentId); span.SetComponent(metadataProvider.Component); return(span); }
private ISpan CreateDefaultSpan(string activityId, string parentId, string operationName, CommandEventData eventData) { var span = ConcurrentContextManager.CreateLocalSpan(operationName, activityId, parentId); span.SetComponent(ComponentsDefine.EntityFrameworkCore); return(span); }
public void EndRequest([Property] HttpContext httpContext) { var httpRequestSpan = ConcurrentContextManager.ActiveSpan(Activity.Current.Id); if (httpRequestSpan == null) { return; } var statusCode = httpContext.Response.StatusCode; if (statusCode >= 400) { httpRequestSpan.ErrorOccurred(); } Tags.StatusCode.Set(httpRequestSpan, statusCode.ToString()); httpRequestSpan.Log(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), new Dictionary <string, object> { { "event", "AspNetCore Hosting EndRequest" }, { "message", $"Request finished {httpContext.Response.StatusCode} {httpContext.Response.ContentType}" } }); ConcurrentContextManager.StopSpan(httpRequestSpan, Activity.Current.Id); }
public void BeginRequest([Property] HttpContext httpContext) { // Console.WriteLine($"{Activity.Current.Id} {Activity.Current.ParentId} {Activity.Current.RootId}"); var carrier = _contextCarrierFactory.Create(); foreach (var item in carrier.Items) { item.HeadValue = httpContext.Request.Headers[item.HeadKey]; } var httpRequestSpan = ConcurrentContextManager.CreateEntrySpan($"{_config.ApplicationCode} {httpContext.Request.Path}", carrier, Activity.Current.Id, Activity.Current.ParentId); httpRequestSpan.AsHttp(); httpRequestSpan.SetComponent(ComponentsDefine.AspNetCore); Tags.Url.Set(httpRequestSpan, httpContext.Request.Path); Tags.HTTP.Method.Set(httpRequestSpan, httpContext.Request.Method); httpRequestSpan.Log(DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), new Dictionary <string, object> { { "event", "AspNetCore Hosting BeginRequest" }, { "currentActivityId", Activity.Current.Id }, { "currentThreadId", Thread.CurrentThread.ManagedThreadId }, { "Priority", Thread.CurrentThread.Priority }, { "GlobalTraceId", ConcurrentContextManager.GlobalTraceId }, { "message", $"Request starting {httpContext.Request.Protocol} {httpContext.Request.Method} {httpContext.Request.GetDisplayUrl()}" } }); httpContext.Items[HttpContextDiagnosticStrings.SpanKey] = httpRequestSpan; }
public void AfterExecuteCommand() { if (ConcurrentContextManager.ContextProperties.ContainsKey(TRACE_ORM)) { return; } ConcurrentContextManager.StopSpan(Activity.Current.Id); }
public void HttpException([Property(Name = "Request")] HttpRequestMessage request, [Property(Name = "Exception")] Exception ex) { var span = ConcurrentContextManager.ActiveSpan(Activity.Current.Id); if (span != null && span.IsExit) { span.ErrorOccurred(); } }
public void HttpResponse([Property(Name = "Response")] HttpResponseMessage response, [Property(Name = "RequestTaskStatus")] TaskStatus taskStatus) { var span = ConcurrentContextManager.ActiveSpan(Activity.Current.Id); if (span != null && response != null) { Tags.StatusCode.Set(span, response.StatusCode.ToString()); } ConcurrentContextManager.StopSpan(Activity.Current.Id); }
public void ErrorExecuteCommand([Property(Name = "Exception")] Exception ex) { if (ConcurrentContextManager.ContextProperties.ContainsKey(TRACE_ORM)) { return; } var span = ConcurrentContextManager.ActiveSpan(Activity.Current.Id); span?.ErrorOccurred(); span?.Log(ex); ContextManager.StopSpan(span); }
public void HttpRequest([Property(Name = "Request")] HttpRequestMessage request) { // Console.WriteLine($"{Activity.Current.Id} {Activity.Current.ParentId} {Activity.Current.RootId}"); var contextCarrier = _contextCarrierFactory.Create(); var peer = $"{request.RequestUri.Host}:{request.RequestUri.Port}"; var span = ConcurrentContextManager.CreateExitSpan(request.RequestUri.ToString(), contextCarrier, peer, Activity.Current.Id, Activity.Current.ParentId, Activity.Current.FormatRootId()); Tags.Url.Set(span, request.RequestUri.ToString()); span.AsHttp(); span.SetComponent(ComponentsDefine.HttpClient); Tags.HTTP.Method.Set(span, request.Method.ToString()); foreach (var item in contextCarrier.Items) { request.Headers.Add(item.HeadKey, item.HeadValue); } }
public void BeforeExecuteCommand([Property(Name = "Command")] SqlCommand sqlCommand) { if (ConcurrentContextManager.ContextProperties.ContainsKey(TRACE_ORM)) { return; } var peer = sqlCommand.Connection.DataSource; var span = ConcurrentContextManager.CreateExitSpan(ResolveOperationName(sqlCommand), peer, Activity.Current.Id, Activity.Current.ParentId); span.SetLayer(SpanLayer.DB); span.SetComponent(ComponentsDefine.SqlClient); Tags.DbType.Set(span, "Sql"); Tags.DbInstance.Set(span, sqlCommand.Connection.Database); Tags.DbStatement.Set(span, sqlCommand.CommandText); //todo Tags.DbBindVariables }
public void HostingUnhandledException([Property] HttpContext httpContext, [Property] Exception exception) { ConcurrentContextManager.ActiveSpan(Activity.Current.Id)?.ErrorOccurred()?.Log(exception); }