将 AppCenter 事件重新同步到 AppInsight
Resync AppCenter events to AppInsight
我有一个 App Center 配置可以同步到下面的存储和 App Insight
一切都在顺利同步,直到昨天我已经检查它已被禁用 20 天同步到 App Insight(直到知道我仍然不知道为什么它被人或其他人禁用),而 Blob 仍在进行中。然后我启用了它,我看到 App Center 目前继续导出到 App Insight,但在这 20 天之前没有被禁用。
所以现在我必须从 Blob(json 文件)获取这些备份以导入到 App Insight,主要是因为 App Center 无法重新推送它。
问题是将这些数据推送到 App Insight 的有效方法是什么?
- 收集所有 20 天丢失的 Blob 并通过 REST 推送到 App Insight API。但是到现在我都没有找到什么POST导入数据的方法,只有GET用于检索查询
- 还收集所有 20 天丢失的 Blob,但通过 App Insight SDK 使用。这会有点奇怪,因为它负责在运行时推送跟踪监控数据,而不是向后推送的任务
感谢您阅读我的问题。
有一个postapi的应用洞察,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(如使用TrackEvent
、TrackTrace
方法)将这些数据发送给application insights,其实就是调用上面的post方法以及。但是构建数据体要容易得多。而且,您可以轻松地添加一些额外的字段来指定它是 original date
(因为 time field
不能比当前时间早 48 小时)。
我有一个 App Center 配置可以同步到下面的存储和 App Insight
一切都在顺利同步,直到昨天我已经检查它已被禁用 20 天同步到 App Insight(直到知道我仍然不知道为什么它被人或其他人禁用),而 Blob 仍在进行中。然后我启用了它,我看到 App Center 目前继续导出到 App Insight,但在这 20 天之前没有被禁用。
所以现在我必须从 Blob(json 文件)获取这些备份以导入到 App Insight,主要是因为 App Center 无法重新推送它。
问题是将这些数据推送到 App Insight 的有效方法是什么?
- 收集所有 20 天丢失的 Blob 并通过 REST 推送到 App Insight API。但是到现在我都没有找到什么POST导入数据的方法,只有GET用于检索查询
- 还收集所有 20 天丢失的 Blob,但通过 App Insight SDK 使用。这会有点奇怪,因为它负责在运行时推送跟踪监控数据,而不是向后推送的任务
感谢您阅读我的问题。
有一个postapi的应用洞察,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(如使用TrackEvent
、TrackTrace
方法)将这些数据发送给application insights,其实就是调用上面的post方法以及。但是构建数据体要容易得多。而且,您可以轻松地添加一些额外的字段来指定它是 original date
(因为 time field
不能比当前时间早 48 小时)。