首页 > 解决方案 > 将 AppCenter 事件重新同步到 AppInsight

问题描述

我有一个 App Center 配置要同步到下面的 Storage 和 App Insight

在此处输入图像描述

一切都顺利同步,直到昨天我检查了它已被禁用 20 天同步到 App Insight(直到知道我仍然不知道为什么它被人或其他人禁用),而 Blob 仍在进行。所以我启用了它,我看到 App Center 目前继续导出到 App Insight,但在这 20 天之前没有禁用。

所以现在我必须从 Blob(json 文件)中获取这些备份以导入 App Insight,基本上是因为 App Center 无法重新推送它。

在此处输入图像描述

问题是将这些数据推送到 App Insight 的有效方法是什么?

  1. 收集所有缺失 20 天的 Blob,并通过 REST API 推送到 App Insight。但是到目前为止我还没有找到导入数据的 POST 方法,只有 GET 用于检索查询
  2. 还收集所有缺少 20 天但通过 App Insight SDK 使用的 Blob。这会有点奇怪,因为它负责在运行时推送跟踪监控数据,而不是向后推送的任务

感谢您阅读我的问题。

标签: azureazure-blob-storageazure-application-insights

解决方案


有一个应用洞察的post api,url是https://dc.services.visualstudio.com/v2/track

您可以使用任何带有 post 方法的工具或程序语言向此 url 发送请求,但您需要正确定义数据。

这是一个使用 c# 的示例:

        //the url
        string appinsights_url = "https://dc.services.visualstudio.com/v2/track";
        Uri uri = new Uri(appinsights_url);

        //construct the telemetry data
        string data1 = "{\"name\":\"AppTraces\",\"time\":\"2020-12-21T02:11:51.9170725Z\",\"iKey\":\"your_key\",\"tags\":{\"ai.application.ver\":\"1.0.0.0\",\"ai.cloud.roleInstance\":\"ss-75821\",\"ai.internal.sdkVersion\":\"il:2.16.0-18277\",\"ai.internal.nodeName\":\"ss-75821.mmmmmmm.com\"},\"data\":{\"baseType\":\"MessageData\",\"baseData\":{\"ver\":2,\"message\":\"a message from post api: Information\",\"severityLevel\":\"Information\",\"properties\":{\"DeveloperMode\":\"true\",\"CategoryName\":\"WorkerService1.Worker\",\"OriginalFormat\":\"a message from post api: Information\"}}}}";                 

        WebClient client = new WebClient();
        var result = client.UploadString(appinsights_url, data1);

在此处输入图像描述

这里的问题是,在数据正文中,time field不能比当前时间早 48 小时。无法更改此功能。

如果您想使用sdk(如 using TrackEvent,TrackTrace方法)将这些数据发送到应用程序洞察,它实际上也调用了上述 post 方法。但是构建数据体要容易得多。而且,您可以轻松添加一些额外的字段来指定它original date(因为time field不能比当前时间早 48 小时)。


推荐阅读