📅  最后修改于: 2023-12-03 15:29:45.240000             🧑  作者: Mango
本篇示例将介绍如何使用 C# 和 Azure SDK 获取虚拟机的 CPU 使用情况。
在开始之前,您需要先进行以下准备:
打开命令提示符,执行以下命令安装 Azure SDK:
dotnet add package Microsoft.Azure.Management.Compute
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
进行身份验证。需要提供 tenantId
、clientId
和 secret
三个参数。
接下来,我们使用 ComputeManagementClient
获取指定虚拟机 vmName
的详细信息,并指定了返回结果类型为 InstanceViewTypes.InstanceView
。
最后,我们从虚拟机的状态信息中获取 CPU 使用率,并将其返回。