Повторная синхронизация событий AppCenter с AppInsight

У меня есть конфигурация App Center для синхронизации как с Storage, так и с App Insight ниже

Все идет гладко, пока вчера я не проверил, что синхронизация с App Insight была отключена в течение 20 дней (чтобы узнать, я до сих пор не знаю, почему она была отключена человеком или кем-то еще), тогда как Blob все еще работает. Затем я включил его и вижу, что App Center продолжает экспортировать в App Insight в настоящее время, но не в течение 20 дней, отключенных ранее.

Итак, теперь мне нужно получить эти резервные копии из Blob (файлы json) для импорта в App Insight, в основном потому, что у App Center нет возможности повторно отправить их.

Вопрос в том, как эффективно отправить эти данные в App Insight?

  1. Соберите все BLOB-объекты за 20 дней и отправьте их в App Insight через REST API. Но до сих пор я не узнал, какой метод POST для импорта данных, только GET для получения запроса
  2. Также соберите все BLOB-объекты за 20 дней, отсутствующие, но использующие SDK App Insight. Это было бы немного странно, потому что он отвечает за отправку данных отслеживания-мониторинга во время выполнения, а не за отправку назад.

Спасибо, что прочитали мою проблему.

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Существует сообщение 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 дней не так важно, чтобы торговаться. В любом случае, ваши усилия по отслеживанию с помощью скрипача признаны и оценены, большое вам спасибо.

Tấn Nguyên 21.12.2020 10:54

Другие вопросы по теме

Похожие вопросы

Нет возможности создать кластер Azure AKS с реестром контейнеров Azure (ACR) с использованием шаблона ARM
Соединение отклонено в кластере, но переадресация портов работает в Kubernetes
Репозитории Azure Devops — возврат к предыдущему коммиту, как если бы недавние коммиты никогда не существовали
Удостоверение, назначенное пользователем Azure, не может прочитать AzureAD
Как при получении исходного кода в конвейере Azure указать, что подмодули извлекаются из определенной ветки?
Озеро данных Azure: этот запрос не авторизован для выполнения этой операции
Приложение логики, пока цикл не разорвется после того, как HTTP-вызов получит 400
Проблема CORS развертывания .NET Core 5.0 Azure после обновления с версии 3.1
Почему аналитику приложений нужно включать вручную после автоматического выпуска?
Запустить экземпляр контейнера по веб-запросу к полному доменному имени