Информация о приложении и функции Azure - отслеживание распределенной операции - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть процесс, который распределен по нескольким функциям следующим образом:

Функция привязки Http сохраняет сообщение в очереди. Функция привязки очереди обрабатывает сообщение, а затем помещает другое сообщение в очередь. Наконец, другая функция.обработать сообщение и сохранить что-либо в базе данных.

Мне бы хотелось, чтобы идеи приложения понимали контекст исходного запроса и могли отслеживать поток запроса по всем вызовам распределенной функции, номне кажется, не существует способа правильно установить идентификатор операции (что, я считаю, в конечном итоге является «правильным» способом выполнения моих требований).

Я могу установить родительский идентификатор, но это просто мешаетданные, собранные из показа вообще в понимании приложения.Я устанавливаю родительский идентификатор, используя следующий код:

    private static void UpdateTelemetryContext(TelemetryContext context, ExecutionContext functionContext, string id)
    {
        context.Operation.Id = functionContext.InvocationId.ToString();
        context.Operation.ParentId = id;
        context.Operation.Name = functionContext.FunctionName;
    }

Единственный способ добиться того, чего я хочу, - это установить идентификатор пользователя в качестве контекста, который я хочу (вещь, которая связываетвсе операции вместе), и установите синтетический источник как «Функции», чтобы, по крайней мере, я знал, что это не настоящий пользователь.

Это код, который я использую для достижения этой цели:

    private static void UpdateTelemetryContext(TelemetryContext context, ExecutionContext functionContext, string id)
    {
        context.Operation.Id = functionContext.InvocationId.ToString();
        context.Operation.ParentId = functionContext.InvocationId.ToString();
        context.Operation.Name = functionContext.FunctionName;
        context.User.Id = id;
        context.Operation.SyntheticSource = "Functions";
    }

Теперь в обзоре приложений я могу нажать «показать временную шкалу для пользователя» и увидеть все исполнения группы функций вместе, но это кажется настолько неправильным, просто должен быть лучший способ добиться этого.

1 Ответ

0 голосов
/ 28 ноября 2018

Для тех, кто ищет ответ на этот вопрос, единственный способ сделать это - отключить автоматическое ведение журнала из информации о приложении и вместо этого делать все вручную.

Этот пост в блоге мне очень помог: https://azure -development.com / 2017/12 / 15 / End2End-контроль, из-лазурного-функция-с-прикладных прозрений /

...