AWSインテグレーションにより取得可能なEC2カスタムメトリックの粒度と、Mackerelの時系列データの仕様について

いつも Mackerel をご利用いただき、ありがとうございます。

Mackerelに保存される時系列データの仕様の丸め処理の結果、特定のケースにおいて、メトリックデータがNULL値に丸められる場合があります。この丸め処理の仕様が影響する範囲などについて以下にまとめておりますので、ご確認下さい。

【追記: 2017年 9月15日】時系列データの丸め処理の仕様変更について

時系列データベースを刷新し、下記でお知らせしている丸め処理の仕様を変更いたしました。 新しい仕様では、5分間隔で投稿されたホストメトリックも25時間以上経っても確認して頂けるようになっております。以下がアップデートのエントリーとなります。

mackerel.io

Mackerel の AWSインテグレーションの仕組みと、時系列データベースの丸め処理について

Mackerel には、mackerel-agent をインストールすることなく Mackerel との連携を設定することができるAWSインテグレーションという機能があり、その対応サービスにはEC2も含まれています。

AWSインテグレーション機能の内部的な仕組みとしては、「AWS CloudWatch API を Mackerel がリクエストし、受け取ったレスポンスをそのまま自身に投稿する」というものですが、対象となるEC2インスタンスの「詳細モニタリング」(※AWSにおける有償オプションです)を有効にしていない場合、AWSインテグレーションにより取得されるEC2カスタムメトリックのうちのいくつかのメトリック(詳細は後述しています)に関しては、その粒度が5分間隔となります。

例えば、15:00 から10分間に掛けてCPU使用率が50%のまま推移していたとする場合、Mackerelに投稿されるメトリックデータとしては以下の表の通りとなります(投稿時間についてはあくまで例示のものとなります)。

15:00 15:01 15:02 15:03 15:04 15:05 15:06 15:07 15:08 15:09
50% なし なし なし なし 50% なし なし なし なし

これとは別に、Mackerelに保存される時系列データは、現在の仕様上は時間が経つに連れて長い間隔に丸められます。

mackerel.io

間隔 保持期間
1分 25時間
5分 21日
1時間 90日
1日 90日以降

丸め処理では、有効データポイントの平均値が保存されますが、有効データポイントの数が一定割合に達しない場合、その期間のデータが欠損しているとみなされ、NULLが保存されます。また、ホストメトリックは、1分間隔の投稿を前提としているため、この一定割合が大きく設定されています。具体的には50%以上有効データポイントがない場合には、NULLで丸められます。

この仕様に基づき、「AWSインテグレーションにより連携されたEC2ホストのカスタムメトリック」(詳細モニタリングを有効にしていない場合・5分粒度のメトリックの場合)に関しては、25時間経過時の5分間隔への丸め処理の際に、NULL値が保存されることになり、データが見られなくなります。

これは、ホストメトリックが毎分投稿を前提としており、上記の丸め処理における一定割合が50%に設定されている関係上、5分間のうち3ポイント以上の有効データポイントが存在しない場合に、そのデータが欠損しているとみなされるためです。

これは、AWSインテグレーションの他、5分(もしくはそれ以上)の間隔でカスタムメトリック投稿を行うようなプラグインを自作しているような場合にも同様です。

改めて、当仕様が影響する範囲などについて以下にまとめておりますので、ご確認下さい。

Mackerelの丸め仕様が影響する範囲(2017-02-06 現在)

  • AWSインテグレーションにより連携されたEC2ホストのカスタムメトリックのうち、下記のグラフに含まれるメトリック。
    • CPU
    • CPU Credit
    • Disk OPS
    • Disk IO
    • Network Traffic
    • Network Packets
    • Status Check Failed
  • ただし、対象となるEC2インスタンスの「詳細モニタリング」(※AWSにおける有償オプションです)を有効にしている場合には問題ありません。
  • EC2以外のサービス(ELB(CLB/ALB)/RDS/Redshift/ElastiCache)のメトリックデータには影響ありません。
    • これらのメトリックはデフォルトで1分粒度のメトリックの取得・投稿が可能なため。
    • ただし、RDS の T2 インスタンスをご利用の場合に取得できる CPU クレジットに関するメトリックは除きます。
  • サービスメトリックについても影響ありません。
    • 毎分での投稿を前提としていないため。
  • 上記のほか、「5分間のうち3点以上のメトリックデータが存在し得ないような間隔」でのカスタムメトリック投稿(3分に1度の投稿など)を行うような仕組みを自作しているような場合も同様の挙動となります。
    • Mackerel のホストメトリックは、毎分のメトリック投稿を前提としています。

Mackerelの時系列データの今後について

データ粒度と丸め処理、両方の観点で、今後改善を予定しており、現在新時系列データシステムの開発を進めているところです。今後共Mackerelをよろしくお願いいたします。