C# 使用Cloudwatch API的实例的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"]

如何获取c#中实例的CPU使用率? 我已经读过了,但没法用


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。”);
其他的
投掷;
}
请注意