Трассировка Datadog asp. net веб-страниц - PullRequest
0 голосов
/ 06 января 2020

Я вручную установил трассировку Datadog для моего * веб-приложения asp. net, отредактировав функции Application_BeginRequest () и Application_EndRequest () в global.asax, например:

protected void Application_BeginRequest(Object sender, EventArgs e) {
  var scope = Tracer.Instance.StartActive("global.asax", serviceName: "...");
  var span = scope.Span;
  span.Type = SpanTypes.Web;
  span.SetTag(...);
  span.ResourceName = "..."

  // do something
}

protected void Application_EndRequest(Object sender, EventArgs e) {
  var scope = Tracer.Instance.ActiveScope;
  if(scope != null) {
    scope.Dispose();
  }
}

Это успешно создает трассировки, содержащие "global.asax", охватывают интерфейс пользователя Datadog. Название ресурса также выглядит хорошо. Однако эти трассировки содержат только «global.asax» spans. Это не то, что я ожидал. Веб-приложение asp. net также использует ADO. NET для чтения / записи данных с / на мой сервер MS SQL. Поскольку Datadog автоматически отслеживает вызовы ADO. NET, я ожидаю, что sql диапазоны запросов будут включены как дочерние интервалы в мои инструментированные трассировки вручную.

После прочтения исходного кода библиотеки Datadog.Trace я понимаю, что каждая трасса имеет один основной диапазон и ноль или несколько дочерних диапазонов. В моем случае я запускаю основной диапазон в ApplicationBeginRequest и закрываю его в ApplicationEndRequest, в результате чего все ado. net span, которые происходят между beginRequest и endRequest, должны иметь основной span в качестве родительского и, таким образом, они будут появляться под одним следом. Я неправильно понял следы / пролеты Datadog здесь?

PS На данный момент пролеты asp. net и ado. net показаны на разных трассах. Traces including the global.asax spans Traces including the ado.net spans

...