Получите TraceTelemetry, чтобы появиться на временной шкале Application Insights - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть небольшой класс профилирования, который реализует IDisposable, который запускает секундомер в конструкторе и останавливает его в Dispose() и записывает прошедшее время в миллисекундах в Azure, используя TelemetryClient.TrackTrace.Он работает нормально, но я хочу, чтобы он отображался на временной шкале на странице аналитики приложения Azure Portal.Я могу заставить его появиться, если я использую TelemetryClient.TrackDependency, но так как это не зависимость, я не хочу использовать это.Есть ли решение, чтобы оно появилось на временной шкале?Я попытался добавить прошедшее время как свойство с именем duration, но это не сработало.

Я не знаю, поможет ли это, но упрощенная версия профилировщика выглядела бы примерно так:

public class Profiler : IDisposable
{
    private readonly Stopwatch _stopwatch;
    private readonly ILogger _logger;
    private readonly string _name;
    private readonly DateTimeOffset _timestamp;

    public Profiler(string name)
    {
        _logger = LogFactory.GetLogger();

        _stopwatch = Stopwatch.StartNew();
        _timestamp = DateTimeOffset.UtcNow;
        _name = name;
    }

    public static Profiler Step(string name)
    {
        return new Profiler(name);
    }

    public void Dispose()
    {
        var telemetryClient = new TelemetryClient();

        _stopwatch.Stop();

        var message = $"Step - {_name} {_stopwatch.ElapsedMilliseconds} ms";

        var traceTelemetry = new TraceTelemetry(message, SeverityLevel.Verbose)
        {
            Timestamp = _timestamp
        };

        traceTelemetry.Properties.Add("Elapsed Milliseconds", $"{_stopwatch.ElapsedMilliseconds}");

        telemetryClient.TrackTrace(traceTelemetry);
    }
}

1 Ответ

0 голосов
/ 26 апреля 2018

Представление временной шкалы в основном отображает типы событий, содержащие метку времени и длительность, в качестве базовых свойств (но не в качестве пользовательских свойств), таких как запрос, зависимость (отображается во времени) или критические события с меткой времени, например, исключение (отображается как момент времени). ).

Трассировки и события отображаются в этом виде в виде плоского упорядоченного списка, но не в виде временной шкалы (если вы переключаетесь в режим просмотра плоского списка).

Учитывая эту текущую реализацию (если не изменено), ваше предложение использовать Зависимости - один из самых простых способов достижения представления временной шкалы в вашем случае.

Здесь можно немного поиграть с определениями - использовать тип запроса для всеобъемлющей операции, использовать зависимости для методов, использовать исключения в случае сбоев. Это должно хорошо вписаться в модель и обеспечить хорошее представление временной шкалы.

...