我可以在 Application Insights 中模拟数据(时间戳)吗?

Can I mock data (timestamps) in Application Insights?

我正在使用 Application Insights 查看我的应用程序的遥测数据。作为演示,我想用数据填充 App Insights,这样我就可以生成详细的图形和图表来显示潜在的用户场景。我希望我的数据跨越一周甚至几个月,但我没有时间等那么久。

是否可以在我的应用程序中手动将 timestamp/date 放入我的遥测调用中,就像过去几个月一样,以便我可以获得当时的信息?

您可以使用 ITelemetryInitializer 来实现。

方法一:

您可以定义一个自定义的属性,您可以定义自定义时间戳,而不是直接更改时间戳:

如果使用此方法,在实现 ITelemetryInitializer 的自定义 class 中,代码如下:

    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() 将其转换为日期时间类型)而不是使用时间戳。

方法二:

此方法尝试直接更改时间戳。我可以看到时间戳已在本地更改,它不会发送到 application insights。所以目前,我建议你应该使用方法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));

    }
 }