Отслеживайте асинхронные операции Azure, используя свободный API - PullRequest
0 голосов
/ 30 августа 2018

Я знаю, что вы можете отслеживать нормальные операции, используя стандартный 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);
}

ура!

1 Ответ

0 голосов
/ 31 августа 2018

AFAIK, кажется, что сложно отследить состояние перезапуска ВМ, которое не возвращает идентификатор операции.

При входе в текущие библиотеки управления 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();

Для получения более подробной информации вы можете обратиться к этой статье .

...