gpt4 book ai didi

azure - 以编程方式获取 VM 实例网络和内存信息

转载 作者:行者123 更新时间:2023-12-03 01:52:51 25 4
gpt4 key购买 nike

此问题适用于连续网络作业。

主要问题

我们如何“查看”或以编程方式“记录”运行连续 Web 作业的虚拟机的当前内存和网络状态?

背景:

我们的网络作业正在抓取一些 API,但我们不断收到 500 个错误。我们认为虚拟机为 API 请求触发了太多线程 - 然后由于网络限制 - 当响应返回时,太多响应同时返回,从而超出了虚拟机的网络限制。

附带问题:

您将如何使用 MS Azure 进行 Web 抓取 - 并确保不会使其运行的 VM 过载(就内存 + 网络而言)?

(似乎对于后台处理,这些虚拟机是为 CPU 计算而构建的 - 而不是用于 Web/API 抓取)

最佳答案

我目前仍在使用监控(经典)API。我还没有找到该 API 的“非经典”版本,但我也没有花太多时间寻找。由于 Web 作业作为 Web 应用程序的一部分运行,因此您需要使用 Microsoft.WindowsAzure.Management.Monitoring.Metrics Namespace 中提供的工具来监视 Web 应用程序。 。

我发现 API 有点令人困惑,但花了一些时间与 PG 合作才使其正确。我在 MSPFE github 页面上提供了一些示例代码:https://github.com/mspfe/AzureMetricsAPISampleKit 。运行此解决方案中的“测试”将向您展示如何使用该库。

您首先需要通过获取网络应用程序列表来识别网络应用程序:

var webSpaceList = _webSiteClient.WebSpaces.List();

然后收集可用指标:

foreach (var website in websiteList)
{
MetricDefinitionListResponse wsMetricListResponse = _metricsClient.MetricDefinitions.List(website.WebsiteResourceId, null, null);
website.MetricDefinitionsList = wsMetricListResponse.MetricDefinitionCollection;
website.MetricNamesList = new List<string>();

foreach (var metric in website.MetricDefinitionsList.Value)
{
website.MetricNamesList.Add(metric.Name);
}

MetricValueListResponse wsValueResponse = _metricsClient.MetricValues.List(website.WebsiteResourceId, website.MetricNamesList, "",
_timeGrain, _startDateTime, _endDateTime);
website.MetricValueList = wsValueResponse.MetricValueSetCollection;
}

从那里您应该有指标定义和值。抱歉,如果这段代码有点过时......但它应该可以工作。

关于azure - 以编程方式获取 VM 实例网络和内存信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32376871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com