2

内部メトリクスをAmazon の CloudWatchサービスに適切に公開するために、しばらく苦労してきました。CloudWatch のMetricDatumクラスにマッピングして公開するさまざまなタイプの内部メトリクスがあります。

MetricDatumインスタンスにはdouble valueと があり、 、、および/の値StatisticSetを受け入れます。Httpd 200 ページ カウンターなどのカウンターの場合は、 を使用し、 および をカウンターの値に設定する方が適切です。たとえば、ELB の統計を見ると、それが Amazon が公開するために行っていることです。これにより、結果をグラフ化するときに、合計、平均、およびその他のグラフ ビューが正しく機能します。sampleCountsumminimummaximumStatisticSetsampleCountsum

StatisticSet問題は、カウンターの値が 0 の場合です。これは、CloudWatch が 0 のaを発行することを許可していないためです。ELB がsampleCount行うことは、グラフに穴を作成するその期間に何も発行しないことです。INSUFFICIENT_DATAカウンターが一定期間 0 の場合に警告が表示されるため、これは面倒です。通知がオンになっていてERROR、いつ に戻るかを知りたい場合OKは、INSUFFICIENT_DATA to OKアラートで晩中起きられます。

米国東部 (バージニア北部) リージョンで INSUFFICIENT DATA 状態のアラームが 1 件あります。

質問:INSUFFICIENT_DATA CloudWatch メトリクスを適切に発行して、警告が表示されないようにする方法を教えてくださいsampleCount

4

1 に答える 1

1

が0StatisticSetのは発行できませんが、は であるため、非常に小さい で発行できます。ofはグラフ上で 0 のように見えますが、それでもグラフの穴を適切に埋めており、アラームは発生しません。sampleCountsampleCountdoublesampleCount0.000000001INSUFFICIENT_DATA

double sampleCount = numSamples;
// our values come in as value and numSamples but StatisticSet wants a sum
double sum = value * numSamples;
if (numSamples == 0) {
    // special case here, CloudWatch does not allow a 0 sample count so we have to
    // set it to be slightly more
    sampleCount = 0.000000001D;
    // but sum can be 0
}
StatisticSet statisticSet =
    new StatisticSet().withMinimum(min)
            .withMaximum(max)
            .withSampleCount(sampleCount)
            .withSum(sum);

余談ですが、このロジックの一部をSimpleMetrics ライブラリにコーディングしました。このライブラリは、メトリックを簡単に追跡して公開できるように設計されています。

于 2013-10-31T00:11:33.567 に答える