Проблема Azure App Insights со сквозной трассировкой

#azure #azure-functions #azure-application-insights

#azure #azure-функции #azure-application-insights

Вопрос:

Кажется, у меня возникли некоторые проблемы с сквозной трассировкой с использованием функций Azure и очереди служебной шины.

По сути, у меня есть HTTP-триггер, который затем помещает тело сообщения JSON в очередь служебной шины в виде сообщения — с сгенерированным идентификатором корреляции (guid).

У меня служебная шина в виде очереди — это нормально.

Затем у меня есть функция запуска очереди служебной шины, которая извлекает сообщение из очереди. Это работает нормально.

Однако карта служб, телематическая служба и запрос не предоставляют сквозную трассировку. Он разделен на два: мой HTTP-триггер и триггер служебной шины.
Идентификаторы операций разные.

Что я делаю не так? Вот функция отправки HTTP-триггера

         [FunctionName("SendQueueMessage")]
        public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
        ILogger log,
        [ServiceBus("busqueue", Connection = "xxxxx", EntityType = EntityType.Queue)] ICollector<Message> outputQueueItem)
    {
        log.LogInformation("Processing a request.");
        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        var correlationId = Guid.NewGuid().ToString();
        outputQueueItem.Add(new Message(Encoding.UTF8.GetBytes(requestBody)) 
                            { 
                                CorrelationId = correlationId
                            });
        return new OkObjectResult($"Successful CorrelationId: {correlationId}");
    }
 

Вот триггер очереди:

 [FunctionName("RetrieveFromBusQueue")]
    public static void Run([ServiceBusTrigger("busqueue", 
                                                Connection = "xxxxxxxx")]Message messageItem, 
                            ILogger log)
    {

        log.LogInformation($"C# ServiceBus queue trigger function processed message {System.Text.Encoding.UTF8.GetString(messageItem.Body)}");
        log.LogInformation($"Message ID: {messageItem?.CorrelationId}");
    }
 

Есть ли какие-то настройки?
Обе эти функции находятся в одном и том же FunctionApp.
Это, как ни странно, никогда не учитывает КАРТУ очереди.. Я так запутался здесь.

Я вызываю HTTP-триггер через КОД и ТЕСТОВУЮ страницу в Azure для функции триггера. Это как-то связано с заголовками HTTP?

Может кто-нибудь указать мне правильное направление, чтобы пойти с этим, пожалуйста?

Обновить:

Итак … получается, если я использую гораздо более старую версию Microsoft.Пакет ApplicationInsights nuget … 2.10.0 вместо 2.16.0 он фактически отслеживает мой вызов на служебной шине и вне очереди — с правильным отображением на карте.

Это, по меньшей мере, странно — часами вырывать волосы, пытаясь понять, что я сделал не так. Я все еще не уверен, почему последняя версия вызывает эту проблему.

Комментарии:

1. Помогает ли это ?

2. используете ли вы последние версии всех используемых SDK? Особенно> 3.0.0 для SDK служебной шины

3. @PeterBons к сожалению, я прочитал это, и, боюсь, мне не повезло.

4. @KyleK, это может быть ошибка, не могли бы вы поднять эту проблему здесь ? И, пожалуйста, добавьте свой обходной путь в качестве ответа, он может помочь другим, у кого такая же проблема :).

5. Я поднял проблему здесь: github.com/microsoft/ApplicationInsights-dotnet/issues/2153

Ответ №1:

Похоже, это ошибка в новой версии 2.16.0.

Согласно комментарию, вам лучше поднять вопрос об этом в it’s github здесь.

Комментарии:

1. Я поднял здесь проблему: github.com/microsoft/ApplicationInsights-dotnet/issues/2153

Ответ №2:

Недавно у меня была эта проблема с 3.1.6

Обновление до версии 3.1.13 (последняя версия) не помогло.

Существует проблема совместимости в версии> = 3.1.4, понижение версии до 3.1.3 устранило проблему для меня.