【发布时间】:2018-01-04 16:38:30
【问题描述】:
下面的代码可以检索 Azure 虚拟机的 CPU 百分比。 我想要网络输入、网络输出、磁盘读取字节、磁盘写入字节、磁盘读取操作、磁盘写入操作的指标。我为queryString输入了什么似乎并不重要,我总是得到cpu百分比。如何获取其他指标?
private void test()
{
string vmName = "myVM";
string resourceId = "/subscriptions/{subscriptionId}/resourceGroups/ResourceGroupWest/providers/Microsoft.Compute/virtualMachines/" + vmName;
var subscriptionId = "mySubscriptionID";
var clientId = "myClientID";
var secret = "myKey";
var tenantId = "myTenantID";
resourceId = resourceId.Replace("{subscriptionId}", subscriptionId);
MonitorClient readOnlyClient = AuthenticateWithReadOnlyClient(tenantId, clientId, secret, subscriptionId).Result;
string queryString = "name.value eq 'CpuPercentage'";
ODataQuery<MetadataValue> odataQuery = new ODataQuery<MetadataValue>(queryString);
var vals = readOnlyClient.Metrics.List(resourceId, odataQuery );
foreach (MetricValue v in vals.Value[0].Timeseries[0].Data)
{
if (v.Average != null)
{
totalAverage += v.Average.Value;
}
}
totalAverage = totalAverage / vals.Value[0].Timeseries[0].Data.Count;
}
private static async Task<MonitorClient> AuthenticateWithReadOnlyClient(string tenantId, string clientId, string secret, string subscriptionId)
{
// Build the service credentials and Monitor client
var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, secret);
var monitorClient = new MonitorClient(serviceCreds);
monitorClient.SubscriptionId = subscriptionId;
return monitorClient;
}
【问题讨论】:
-
您是否了解过 Azure 本身提供的功能?有很多资源可以为您提供所描述的内容。
-
你能发个链接吗?我真的不在乎我是如何获得这些数据的。我很难找到示例代码。
-
好吧,我不能给你一个具体的起点,因为我已经有一段时间没有做过类似的事情了。但是我做了一些小的谷歌搜索,发现了这样的东西:docs.microsoft.com/en-us/azure/virtual-machines/windows/…。如果这不是您要寻找的东西,请在重新发明轮子之前进行更多研究。
-
不要忘记关闭或删除您的问题;)
-
我希望能得到更多回复。我不会忘记关闭它。
标签: c# azure virtual-machine metrics