Отслеживайте асинхронные операции Azure с помощью Fluent API.

Я знаю, что вы можете отслеживать обычные операции с помощью стандартного API: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-async-operations

Однако мне было интересно, существует ли известный способ использования Fluent Azure Management Libraries для отслеживания длительных асинхронных операций, таких как операции с виртуальной машиной и т. д. Например, метод перезапуска виртуальной машины — это пустая задача, которая не возвращает идентификатор операции для отслеживания.

async Task IVirtualMachineScaleSetVM.RestartAsync(CancellationToken cancellationToken)
{
  await this.RestartAsync(cancellationToken);
}

Ваше здоровье!


person Ofek    schedule 30.08.2018    source источник


Ответы (1)


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

При входе в библиотеки управления Fluent Azure для .NET используется базовая трассировка клиента службы AutoRest.

Создайте класс, реализующий Microsoft.Rest.IServiceClientTracingInterceptor. Этот класс будет отвечать за перехват сообщений журнала и передачу их любому механизму ведения журнала, который вы используете.

class ConsoleTracer : IServiceClientTracingInterceptor
{
    public void ReceiveResponse(string invocationId, HttpResponseMessage response) { }
}

Перед созданием объекта Microsoft.Azure.Management.Fluent.Azure инициализируйте созданный выше IServiceClientTracingInterceptor, вызвав ServiceClientTracing.AddTracingInterceptor(), и установите для ServiceClientTracing.IsEnabled значение true. При создании объекта Azure включите методы .WithDelegatingHandler() и .WithLogLevel() для подключения клиента к трассировке клиента службы AutoRest.

ServiceClientTracing.AddTracingInterceptor(new ConsoleTracer());
ServiceClientTracing.IsEnabled = true;

var azure = Azure
    .Configure()
    .WithDelegatingHandler(new HttpLoggingDelegatingHandler())
    .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
    .Authenticate(credentials)
    .WithDefaultSubscription();

Дополнительные сведения см. в этом статья.

person Joey Cai    schedule 31.08.2018