1

AmazonCloudWatchを使用してCPU使用率を取得するのに少し問題があります。AmazonCloudWatch.GetMetricStatistics()を使用しようとすると、例外メッセージとして次のメッセージが表示されます。

タイプ「Amazon.CloudWatch.AmazonCloudWatchException」の例外がスローされました。

そしてこれは内部例外です:

{"リモートサーバーがエラーを返しました:(400)不正なリクエスト。"}

これが私が電話をかけるために使用しているコードです:

public static String getCPUStats(String Endpoint, String InstanceID) 
    {
        try
        {
            AmazonCloudWatchConfig cloudConfig = new AmazonCloudWatchConfig();
            cloudConfig.ServiceURL = Endpoint;

            string AWSAccessKey = Sql.ToString(appConfig["AWSAccessKey"]);
            string AWSSecretKey = Sql.ToString(appConfig["AWSSecretKey"]);

            AmazonCloudWatch client = AWSClientFactory.CreateAmazonCloudWatchClient(AWSAccessKey, AWSSecretKey, cloudConfig);

            GetMetricStatisticsRequest request = new GetMetricStatisticsRequest();
            request.Dimensions.Add(new Dimension { Name = "InstanceId", Value = InstanceID });
            request.StartTime = DateTime.UtcNow.AddMinutes(-5);
            request.EndTime = DateTime.UtcNow;
            request.Namespace = "AWS/EC2";
            request.Statistics.Add("Maximum");
            request.Statistics.Add("Average");
            request.MetricName = "CPUUtilization";
            request.Period = 60;

            GetMetricStatisticsResponse r = client.GetMetricStatistics(request);

            if (r.GetMetricStatisticsResult.Datapoints.Count > 0)
            {
                Datapoint dataPoint = r.GetMetricStatisticsResult.Datapoints[0];
                return "CPU maximum load: " + dataPoint.Maximum;

            }

            return "No data available.";
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
    }

いくつかの補足事項-アクセスキー、シークレットアクセスキー、およびエンドポイントは、AmazonEC2Clientを作成するために正常に機能するため、問題はないと確信しています。

私はドキュメントをかなり調べて調べましたが、これを解決することに成功していません。何か案は?本当にありがとう!

4

2 に答える 2

1

残念ながら、これを理解することはできませんでした-アマゾンウェブサービスの代わりにMicrosoftAzureを使用することにしました:(

于 2012-06-18T19:41:59.507 に答える
0

一度に 1 つの統計しか要求できないと思います。したがって、またはいずれrequest.Statistics.Add("Maximum");かを削除してみてくださいrequest.Statistics.Add("Average");

于 2012-06-01T09:33:37.600 に答える