以编程方式获取虚拟机实例网络&记忆信息

时间:2015-09-03 13:21:26

标签: azure azure-webjobs

此问题适用于Continuous Web Jobs。

主要问题

我们如何“查看”或以编程方式“记录”当前存储器&运行连续Web作业的VM的网络状态?

背景

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

附带问题:

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

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

2 个答案:

答案 0 :(得分:2)

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

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

首先需要通过获取它们的列表来识别Web应用程序:

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;
        }

从那里你应该有度量标准定义和值。很抱歉,如果此代码有点过时......但它应该可以使用。

答案 1 :(得分:0)

Azure WebJobs在Azure App Service的Web应用程序(以前称为Websites)中运行。因此,您的容量由Web App实例的大小(和数量)决定,无论是免费套餐还是其中一个付费套餐。并且您将根据Web App实例来衡量您的利用率。

关于如何使用Azure进行网络搜索的问题,这里无法回答:这是一个基于意见的问题,没有正确答案。