1

AmazonCloudWatch를 사용하여 CPU 사용률을 가져 오는 데 약간 문제가 있습니다. 내가 AmazonCloudWatch.GetMetricStatistics()를 사용하려고 할 때, 나는 예외 메시지이 얻을 :AWS : AmazonCloudWatch.GetMetricStatistics()에서 400 개의 잘못된 요청 오류가 발생했습니다.

Exception of type 'Amazon.CloudWatch.AmazonCloudWatchException' was thrown.

그리고 이것은 내부 예외을 위해 : 여기

{"The remote server returned an error: (400) Bad Request."}

나 '코드입니다 전화를 걸 때 사용 :

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

일부 메모 - 액세스 키, 비밀 액세스 키 및 endp oint는 AmazonEC2Client를 만드는 데 잘 작동하므로 문제가 없다고 확신합니다.

나는 꽤 많은 검색을하고 문서를 보았지만이 문제를 성공적으로 해결하지 못했습니다. 어떤 아이디어? 정말 고마워!

+0

제품의 마이크로 소프트 애저를 사용하기로 결정 결국 그입니다 "실제"Amazon 오류 메시지가 AWSSDK에서 손실되어 일반 .NET 400 (일명 "BadRequest")로 변환됩니다 ... 일부 DynamoDB 코드에서 이와 동일한 문제를 해결하려고합니다 ... 유일한 대답이라고 생각합니다. 피들러를 태우고 응답을 봅니다. – Scrappydog

답변

1

을 제거하려고 - 우리가 대신 디버깅 도전 아마존 웹 서비스 :(

+0

나는 같은 생각을 갖기 시작하고있다. 포럼이나 이메일 지원에서 큰 도움을 얻지 못했습니다. AWS는 귀하가 비용을 지불하기를 원한다면 도움을 요청할 것입니다. 필자는 AWS를 테스트하고 사용하고자하는 개발자입니다. – andrebruton

0

한 번에 하나의 통계 만 요청할 수 있다고 생각합니다. 그래서 우리가이 일을 알아낼 수 없었다, 불행하게도 어느 request.Statistics.Add("Maximum"); 또는 request.Statistics.Add("Average");

+0

"평균"하나를 꺼 냈습니다.하지만 불행히도 동일한 결과가 있습니다. ( –

+0

흠 .. 나는 C#에 익숙하지 않지만 startTime을 확인할 수 있습니까? 형식을 선택하고 다음과 같이 확인합니다. 2012-06-02T10 : 00 : 00+ 08:00. 이 형식으로 변경하지 않는 경우. – Josnidhin

+0

감사합니다.하지만 startTime이 문자열이 아닌 DateTime 객체를 기대하기 때문에 그렇게 할 수 있다고 생각하지 않습니다. 제가 아는 한 DateTime 객체는 형식을 가질 수 없습니다. 모든 정보를 담고 있습니다. DateTime 파싱 가능한 문자열 만이 이와 같은 형식을 가질 수 있습니다. (비록 내가 이것에 틀리면 나에게 알린다) –