У меня есть конфигурация App Center для синхронизации как с Storage, так и с App Insight ниже
Все идет гладко, пока вчера я не проверил, что синхронизация с App Insight была отключена в течение 20 дней (чтобы узнать, я до сих пор не знаю, почему она была отключена человеком или кем-то еще), тогда как Blob все еще работает. Затем я включил его и вижу, что App Center продолжает экспортировать в App Insight в настоящее время, но не в течение 20 дней, отключенных ранее.
Итак, теперь мне нужно получить эти резервные копии из Blob (файлы json) для импорта в App Insight, в основном потому, что у App Center нет возможности повторно отправить их.
Вопрос в том, как эффективно отправить эти данные в App Insight?
Спасибо, что прочитали мою проблему.
Существует сообщение API с информацией о приложении, URL-адрес https://dc.services.visualstudio.com/v2/track
.
Вы можете использовать любые инструменты или языки программирования с методом post для отправки запроса на этот URL-адрес, но вам необходимо правильно определить данные.
Вот пример с С#:
//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
) для отправки этих данных в аналитику приложений, он фактически также вызывает вышеуказанный метод публикации. Но гораздо проще построить тело данных. Кроме того, вы можете легко добавить дополнительное поле, чтобы указать его original date
(поскольку time field
не может быть на 48 часов раньше текущего времени).
Спасибо, Ян. После нескольких дней исследований я решил завершить это, отправив эти необработанные данные напрямую в хранилище данных, вместо того, чтобы проходить через App Insight как часть текущего конвейера. POST API был бы полезен для тех, кто только что пропустил в течение 48 часов, в противном случае указание исходной даты было бы болезненным, потому что весь конвейер необходимо реорганизовать, тогда как отслеживание отсутствия 20 дней не так важно, чтобы торговаться. В любом случае, ваши усилия по отслеживанию с помощью скрипача признаны и оценены, большое вам спасибо.