C# 使用Cloudwatch API的实例的CPU使用率
如何获取c#中实例的CPU使用率? 我已经读过了,但没法用C# 使用Cloudwatch API的实例的CPU使用率,c#,amazon-ec2,cpu-usage,C#,Amazon Ec2,Cpu Usage,如何获取c#中实例的CPU使用率? 我已经读过了,但没法用 NameValueCollection appConfig=ConfigurationManager.AppSettings var client = AWSClientFactory.CreateAmazonCloudWatchClient( appConfig["AWSAccessKey"], appConfig["AWSSecretKey"]
NameValueCollection appConfig=ConfigurationManager.AppSettings
var client = AWSClientFactory.CreateAmazonCloudWatchClient(
appConfig["AWSAccessKey"],
appConfig["AWSSecretKey"]
);
var dimension = new Dimension
{
Name = "InstanceId",
Value = "<i-ad20b4db>",
};
var request = new GetMetricStatisticsRequest();
request.MetricName = "CPUUtilization";
request.Period = 60;
request.Statistics.Add("Maximum");
request.Dimensions.Add(dimension);
request.Namespace = "AWS/EC2";
request.Unit = "Percent";
var currentTime = DateTime.UtcNow;
var startTime = currentTime.AddSeconds(-5);
string currentTimeString= currentTime.ToString("yyyy-MM-ddTHH:mm:ssZ");
string startTimeString= startTime.ToString("yyyy-MM-ddTHH:mm:ssZ");
request.StartTime = Convert.ToDateTime( startTimeString);
request.EndTime = Convert.ToDateTime(currentTimeString);
var response = client.GetMetricStatistics(request);
if ( response.GetMetricStatisticsResult.Datapoints.Count > 0)
{
var dataPoint = response.GetMetricStatisticsResult.Datapoints[0];
Console.WriteLine( "Instance: {0} CPU Max load: {1}", dimension.Value, dataPoint.Maximum);
}
var client=AWSClientFactory.CreateAmazonCloudWatchClient(
appConfig[“AWSAccessKey”],
appConfig[“AWSSecretKey”]
);
变量维度=新维度
{
Name=“InstanceId”,
Value=“”,
};
var请求=新的GetMetricStatisticsRequest();
request.MetricName=“CPUUtilization”;
请求。期间=60;
请求。统计。添加(“最大值”);
请求。维度。添加(维度);
request.Namespace=“AWS/EC2”;
请求。单位=“百分比”;
var currentTime=DateTime.UtcNow;
var startTime=currentTime.AddSeconds(-5);
字符串currentTimeString=currentTime.ToString(“yyyy-MM-ddTHH:MM:ssZ”);
字符串startTimeString=startTime.ToString(“yyyy-MM-ddTHH:MM:ssZ”);
request.StartTime=Convert.ToDateTime(startTimeString);
request.EndTime=Convert.ToDateTime(currentTimeString);
var响应=client.GetMetricStatistics(请求);
如果(response.GetMetricStatisticsResult.Datapoints.Count>0)
{
var dataPoint=response.GetMetricStatisticsResult.Datapoints[0];
WriteLine(“实例:{0}CPU最大负载:{1}”,dimension.Value,dataPoint.Max);
}
以下是一个简单的概念证明,用于显示过去两天的CPU利用率。我认为每隔半小时就会有一个数据点,但是您可以通过更改GetMetricStatisticsRequest对象中Period属性的值来轻松地进行更改
AmazonCloudWatch cw = AWSClientFactory.CreateAmazonCloudWatchClient(accessKey, secretKey, new AmazonCloudWatchConfig().WithServiceURL("https://eu-west-1.monitoring.amazonaws.com"));
DataTable data = new DataTable();
try
{
Dimension dim = new Dimension() { Name = "InstanceId", Value = GetInstanceName(amazonInstance) };
System.Collections.Generic.List<Dimension> dimensions = new List<Dimension>() { dim };
string startTime = startTime = DateTimeOffset.Parse(DateTime.Now.AddDays(-2).ToString()).ToUniversalTime().ToString("s"); // "2010-09-29T11:00:00+01:00";
GetMetricStatisticsRequest reg = new GetMetricStatisticsRequest()
{
MeasureName = "CPUUtilization",
Period = 1800
Statistics = new System.Collections.Generic.List<string>() { "Average" },
Dimensions = dimensions,
Namespace = "AWS/EC2",
EndTime = DateTime.Now.ToUniversalTime().ToString("s"), //has to be in this format: 2010-09-29T14:00:00+01:00;
StartTime = startTime
};
var points = cw.GetMetricStatistics(reg).GetMetricStatisticsResult.Datapoints.OrderBy(p => p.Timestamp);
data.Columns.Add("Average");
data.Columns.Add("TimeStamp");
foreach (var p in points)
{
DataRow row = data.NewRow();
row["Average"] = Math.Round(p.Average, 0);
row["TimeStamp"] = DateTimeOffset.Parse(p.Timestamp).LocalDateTime.ToString("yyyy-MM-dd HH:mm");
data.Rows.Add(row);
}
}
catch (AmazonCloudWatchException ex)
{
if (ex.ErrorCode.Equals("OptInRequired"))
throw new Exception("You are not signed in for Amazon EC2.");
else
throw;
}
AmazonCloudWatch cw=AWSClientFactory.CreateAmazonCloudWatchClient(accessKey、secretKey、new AmazonCloudWatchConfig()。带有服务URL(“https://eu-west-1.monitoring.amazonaws.com"));
DataTable数据=新DataTable();
尝试
{
维度dim=new Dimension(){Name=“InstanceId”,Value=GetInstanceName(amazonInstance)};
System.Collections.Generic.List dimensions=new List(){dim};
字符串startTime=startTime=DateTimeOffset.Parse(DateTime.Now.AddDays(-2.ToString()).ToUniversalTime().ToString(“s”);/“2010-09-29T11:00:00+01:00”;
GetMetricStatisticsRequest reg=新的GetMetricStatisticsRequest()
{
MeasureName=“CPUUtilization”,
周期=1800
Statistics=new System.Collections.Generic.List(){“Average”},
尺寸=尺寸,
Namespace=“AWS/EC2”,
EndTime=DateTime.Now.ToUniversalTime().ToString(“s”),//必须采用以下格式:2010-09-29T14:00:00+01:00;
开始时间
};
var points=cw.GetMetricStatistics(reg).GetMetricStatisticsResult.Datapoints.OrderBy(p=>p.Timestamp);
数据。列。添加(“平均值”);
data.Columns.Add(“时间戳”);
foreach(以点为单位的var p)
{
DataRow row=data.NewRow();
行[“平均”]=数学四舍五入(p.Average,0);
行[“TimeStamp”]=DateTimeOffset.Parse(p.TimeStamp).LocalDateTime.ToString(“yyy-MM-dd-HH:MM”);
data.Rows.Add(行);
}
}
捕获(AmazonCloudWatchException ex)
{
如果(例如,ErrorCode.Equals(“OptInRequired”))
抛出新异常(“您没有登录AmazonEC2。”);
其他的
投掷;
}
以下是一个简单的概念证明,用于显示过去两天的CPU利用率。我认为每隔半小时就会有一个数据点,但是您可以通过更改GetMetricStatisticsRequest对象中Period属性的值来轻松地进行更改
AmazonCloudWatch cw = AWSClientFactory.CreateAmazonCloudWatchClient(accessKey, secretKey, new AmazonCloudWatchConfig().WithServiceURL("https://eu-west-1.monitoring.amazonaws.com"));
DataTable data = new DataTable();
try
{
Dimension dim = new Dimension() { Name = "InstanceId", Value = GetInstanceName(amazonInstance) };
System.Collections.Generic.List<Dimension> dimensions = new List<Dimension>() { dim };
string startTime = startTime = DateTimeOffset.Parse(DateTime.Now.AddDays(-2).ToString()).ToUniversalTime().ToString("s"); // "2010-09-29T11:00:00+01:00";
GetMetricStatisticsRequest reg = new GetMetricStatisticsRequest()
{
MeasureName = "CPUUtilization",
Period = 1800
Statistics = new System.Collections.Generic.List<string>() { "Average" },
Dimensions = dimensions,
Namespace = "AWS/EC2",
EndTime = DateTime.Now.ToUniversalTime().ToString("s"), //has to be in this format: 2010-09-29T14:00:00+01:00;
StartTime = startTime
};
var points = cw.GetMetricStatistics(reg).GetMetricStatisticsResult.Datapoints.OrderBy(p => p.Timestamp);
data.Columns.Add("Average");
data.Columns.Add("TimeStamp");
foreach (var p in points)
{
DataRow row = data.NewRow();
row["Average"] = Math.Round(p.Average, 0);
row["TimeStamp"] = DateTimeOffset.Parse(p.Timestamp).LocalDateTime.ToString("yyyy-MM-dd HH:mm");
data.Rows.Add(row);
}
}
catch (AmazonCloudWatchException ex)
{
if (ex.ErrorCode.Equals("OptInRequired"))
throw new Exception("You are not signed in for Amazon EC2.");
else
throw;
}
AmazonCloudWatch cw=AWSClientFactory.CreateAmazonCloudWatchClient(accessKey、secretKey、new AmazonCloudWatchConfig()。带有服务URL(“https://eu-west-1.monitoring.amazonaws.com"));
DataTable数据=新DataTable();
尝试
{
维度dim=new Dimension(){Name=“InstanceId”,Value=GetInstanceName(amazonInstance)};
System.Collections.Generic.List dimensions=new List(){dim};
字符串startTime=startTime=DateTimeOffset.Parse(DateTime.Now.AddDays(-2.ToString()).ToUniversalTime().ToString(“s”);/“2010-09-29T11:00:00+01:00”;
GetMetricStatisticsRequest reg=新的GetMetricStatisticsRequest()
{
MeasureName=“CPUUtilization”,
周期=1800
Statistics=new System.Collections.Generic.List(){“Average”},
尺寸=尺寸,
Namespace=“AWS/EC2”,
EndTime=DateTime.Now.ToUniversalTime().ToString(“s”),//必须采用以下格式:2010-09-29T14:00:00+01:00;
开始时间
};
var points=cw.GetMetricStatistics(reg).GetMetricStatisticsResult.Datapoints.OrderBy(p=>p.Timestamp);
数据。列。添加(“平均值”);
data.Columns.Add(“时间戳”);
foreach(以点为单位的var p)
{
DataRow row=data.NewRow();
行[“平均”]=数学四舍五入(p.Average,0);
行[“TimeStamp”]=DateTimeOffset.Parse(p.TimeStamp).LocalDateTime.ToString(“yyy-MM-dd-HH:MM”);
data.Rows.Add(行);
}
}
捕获(AmazonCloudWatchException ex)
{
如果(例如,ErrorCode.Equals(“OptInRequired”))
抛出新异常(“您没有登录AmazonEC2。”);
其他的
投掷;
}
请注意