Можно ли имитировать данные (временные метки) в Application Insights?

Я использую Application Insights для просмотра телеметрии для своего приложения. В качестве демонстрации я хочу заполнить App Insights данными, чтобы я мог создавать подробные графики и диаграммы, чтобы показать потенциальные пользовательские сценарии. Я хочу, чтобы мои данные охватывали неделю и даже месяцы, но у меня нет времени ждать так долго.

Можно ли вручную поместить отметку времени/дату в мой вызов телеметрии в моем приложении, например, несколько месяцев назад, чтобы я мог получить информацию за это время?


person sam    schedule 23.01.2020    source источник
comment
Может быть, это поможет? - я не совсем уверен, использует ли ИИ местное время или сервер регистрирует, когда данные были получил, так что это может не помочь.   -  person Llama    schedule 23.01.2020


Ответы (1)


Вы можете использовать ITelemetryInitializer для этого.

Способ 1:

Вы можете определить пользовательское свойство, в котором вы можете определить пользовательскую метку времени, вместо того, чтобы напрямую изменять метку времени:

Если вы используете этот метод, в вашем пользовательском классе, который реализует ITelemetryInitializer, код, как показано ниже:

    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            DateTimeOffset dateTimeOffset = new DateTimeOffset(new DateTime(2020, 1, 10));

            //define a custom property, which is a date time
            telemetry.Context.GlobalProperties["Custom_timestamp"] = dateTimeOffset.ToString();

        }
     }

После выполнения кода вы увидите, что это свойство добавляется к каждым данным телеметрии на портале Azure:

введите здесь описание изображения

Когда вы создаете свой запрос для создания графика, вы можете использовать это пользовательское свойство (Примечание: это свойство имеет строковый тип, поэтому вы можете использовать встроенную функцию todatetime() для преобразования его в тип даты и времени) вместо использования метки времени.

Способ 2:

Этот метод пытается напрямую изменить метку времени. Я вижу, что временная метка изменяется локально, она не отправляется в аналитику приложений. Итак, в настоящее время я предлагаю вам использовать метод 1.

Код, как показано ниже:

public class MyTelemetryInitializer : ITelemetryInitializer
{
    public void Initialize(ITelemetry telemetry)
    {
        //try to directly change the Timestamp, it changes successfully in local(in visual studio), but it does not send to application insights.
        telemetry.Timestamp = new DateTimeOffset(new DateTime(2020, 1, 10));

    }
 }
person Ivan Yang    schedule 23.01.2020