0

私のLoadBalancer名前はapp/test123/123abcとします。123abcは一意のIDです。これがロードバランサARNの終わりです。AWS CloudWatch次元値が含まれています

私は現在、これを行うことにより、CloudWatchの統計情報を取得しています

GetMetricStatisticsRequest oRequest = new GetMetricStatisticsRequest() 
      .withStartTime(startTime) 
      .withNamespace("AWS/ApplicationELB") 
      .withPeriod(oneHour) 
      .withDimensions(new Dimension().withName("LoadBalancer").withValue("app/test123/123abc")) 
      .withMetricName("HTTPCode_Backend_2XX") 
      .withStatistics("Sum") 
      .withEndTime(endTime); 

私は実際にcontainsルールである必要がありますどのような...私はtest123に基づいて私のロードバランサを見てみたいので、含まれていないので、 URLのユニークな部分。

これは可能ですか?

何か

GetMetricStatisticsRequest oRequest = new GetMetricStatisticsRequest() 
      .withStartTime(startTime) 
      .withNamespace("AWS/ApplicationELB") 
      .withPeriod(oneHour) 
      .withDimensions(new Dimension().withName("LoadBalancer").withValue.contains("test123")) 
      .withMetricName("HTTPCode_Backend_2XX") 
      .withStatistics("Sum") 
      .withEndTime(endTime); 

答えて

0

....のように私はこれを行うための直接的な方法はないと思います。私は考えることができる一つの回避策:

  • DescribeLoadBalancers APIを使用して、アカウント内のすべてのELBsのリストを取得します。
    • レスポンスには改行があるため、ELBの数に応じて複数のコールを行う必要があります。
    • 対応するCLIコマンドはhereです。
  • 返されたLoadBalancerから、LoadBalancerArnフィールドを使用して必要なものを除外します。これを実現するには、正規表現や単純なString操作を使用することができます。
  • ご質問に当初言及し​​たとおりにGetMetricStatisticsRequestと電話してください。
0

解決策:listMetricsを検索し、必要なものを見つけて.withDimensions(oDim)フィルタとして使用してください。

List<Metric> oMetricList = new ArrayList<Metric>(); 
try 
{ 
    oMetricList = client.listMetrics().getMetrics(); 
} 
catch (Exception e) 
{ 
    System.out.println(e.getMessage()); 
    return null; 
} 

for (Metric oMetric : oMetricList) 
{ 
    for (Dimension oDim : oMetric.getDimensions()) 
    { 
     if (oDim.getName().contains(dimensionName) && oDimsgetValue().contains(lbName)) 
     { 
      return oDim; 
     } 
    } 
} 
関連する問題