📜  c# azure get vm get cpu usage - C# Code Example(1)

📅  最后修改于: 2023-12-03 15:29:45.240000             🧑  作者: Mango

C# Azure Get VM Get CPU Usage Example

本篇示例将介绍如何使用 C# 和 Azure SDK 获取虚拟机的 CPU 使用情况。

准备工作

在开始之前,您需要先进行以下准备:

  • 保证已经安装了最新版本的 .NET Core SDK
  • 成功获取了 Azure 订阅,并授予了必要的访问权限。
安装 Azure SDK

打开命令提示符,执行以下命令安装 Azure SDK:

dotnet add package Microsoft.Azure.Management.Compute
获取 CPU 使用情况
using Microsoft.Azure.Management.Compute;
using Microsoft.Azure.Management.Compute.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Rest.Azure.Authentication;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;

public static class GetVmCpuUsage
{
    public static async Task<double> GetCpuUsageAsync(string subscriptionId, string resourceGroupName, string vmName, string clientId, string secret, string tenantId)
    {
        // Authenticate using a service principal with a client secret.
        var credentials = await ApplicationTokenProvider.LoginSilentAsync(
            tenantId: tenantId, 
            clientId: clientId, 
            secret: secret);

        // Get the VM details.
        var vmDetails = await new ComputeManagementClient(credentials) 
            { SubscriptionId = subscriptionId }
            .VirtualMachines
            .GetAsync(resourceGroupName, vmName, InstanceViewTypes.InstanceView);

        // Get the CPU usage percentage.
        var cpuPercentage = vmDetails.InstanceView.Statuses
            .FirstOrDefault(s => s.Code.StartsWith("PowerState"))
            ?.Message
            .Split(';')
            .FirstOrDefault(m => m.Contains("cpuPercentage"))
            ?.Replace("cpuPercentage=", string.Empty);

        return double.TryParse(cpuPercentage, NumberStyles.Any, CultureInfo.InvariantCulture, out var result) ? result : -1;
    }
}

首先,我们需要使用 ApplicationTokenProvider 进行身份验证。需要提供 tenantIdclientIdsecret 三个参数。

接下来,我们使用 ComputeManagementClient 获取指定虚拟机 vmName 的详细信息,并指定了返回结果类型为 InstanceViewTypes.InstanceView

最后,我们从虚拟机的状态信息中获取 CPU 使用率,并将其返回。

注意事项
  • 要想成功获取虚拟机的 CPU 使用情况,请确保已经安装了 Azure SDK,并正确提供了身份验证、订阅 ID、资源组名称和虚拟机名称等必要信息。
  • 如果无法获取 CPU 使用率,则可能是因为虚拟机处于关闭状态或出现了异常。
  • 本示例的代码片段已按 markdown 标明,可以直接复制到 markdown 文件中使用。