how to get available ram and cpu usage via AWS API?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
You will need AmazonCloudWatch API for gathering this statistics. Unfortunately, it does not provide ram usage information. One of solutions could be creating your own "RAMUsage" metric and implementing ram usage monitoring service, which will run on all EC2 instances and add this information to CloudWatch.
Here is a sample of receiving "CPUUtilization" metric for last 5 minutes using AWS API.
var client = AWSClientFactory.CreateAmazonCloudWatchClient(
<AWSAccessKey>,
<AWSSecretKey>);
var dimension = new Dimension
{
Name = "InstanceId",
Value = <InstanceId>,
};
var request = new GetMetricStatisticsRequest();
request.Dimensions.Add(dimension);
var currentTime = DateTime.UtcNow;
var startTime = currentTime.AddMinutes(-5);
request.StartTime = startTime.ToString(
AWSSDKUtils.ISO8601DateFormat,
CultureInfo.InvariantCulture.DateTimeFormat);
request.EndTime = currentTime.ToString(
AWSSDKUtils.ISO8601DateFormat,
CultureInfo.InvariantCulture.DateTimeFormat);
request.Namespace = "AWS/EC2";
request.Statistics.Add("Maximum");
request.Statistics.Add("Average");
request.MeasureName = "CPUUtilization";
request.Period = 300;
var response = client.GetMetricStatistics(request);
if (response.IsSetGetMetricStatisticsResult() &&
response.GetMetricStatisticsResult.Datapoints.Count > 0)
{
var dataPoint = response.GetMetricStatisticsResult.Datapoints[0];
Console.WriteLine(
"Instance: {0} CPU Average load: {1} CPU Max load: {2}",
instanceID,
dataPoint.Average,
dataPoint.Maximum);
}