JSON 形式の CloudWatch メトリクスストリームの出力 - Amazon CloudWatch

JSON 形式の CloudWatch メトリクスストリームの出力

JSON 形式を使用する CloudWatch メトリクスストリームでは、各 Firehose レコードには、改行文字 (\n) で区切られた複数の JSON オブジェクトが含まれます。各オブジェクトには、1 つのメトリクスの 1 つのデータポイントが含まれます。

使用される JSON 形式は、AWS Glue および Amazon Athena との完全な互換性があります。Firehose 配信ストリームと AWS Glue テーブルの形式が正しい場合は、S3 に格納する前に、その形式を Parquet 形式または Optimized Row Columnar (ORC) 形式に自動的に変換できます。形式の変換の詳細については、「Converting Your Input Record Format in Firehose」を参照してください。AWS Glue の正しい形式の詳細については、JSON 出力フォーマットにはどの AWS Glue スキーマを使用すればよいですか? を参照してください。

JSON 形式では、unit の有効な値は、MetricDatum API 構造体の unit の値と同じです。詳細については、「MetricDatum」を参照してください。timestamp フィールドの値は、1616004674229 のようなエポックミリ秒単位の値です。

この形式の例を次に示します。この例では、JSON は読みやすいようにフォーマットされていますが、実際にはフォーマット全体が 1 行になっています。

{ "metric_stream_name": "MyMetricStream", "account_id": "1234567890", "region": "us-east-1", "namespace": "AWS/EC2", "metric_name": "DiskWriteOps", "dimensions": { "InstanceId": "i-123456789012" }, "timestamp": 1611929698000, "value": { "count": 3.0, "sum": 20.0, "max": 18.0, "min": 0.0, "p99": 17.56, "p99.9": 17.8764, "TM(25%:75%)": 16.43 }, "unit": "Seconds" }

JSON 出力フォーマットにはどの AWS Glue スキーマを使用すればよいですか?

AWS Glue テーブルの StorageDescriptor を JSON 表現した例を次に示します。これはその後 Firehose で使用されます。StorageDescriptor の詳細については、「StorageDescriptor」を参照してください。

{ "Columns": [ { "Name": "metric_stream_name", "Type": "string" }, { "Name": "account_id", "Type": "string" }, { "Name": "region", "Type": "string" }, { "Name": "namespace", "Type": "string" }, { "Name": "metric_name", "Type": "string" }, { "Name": "timestamp", "Type": "timestamp" }, { "Name": "dimensions", "Type": "map<string,string>" }, { "Name": "value", "Type": "struct<min:double,max:double,count:double,sum:double,p99:double,p99.9:double>" }, { "Name": "unit", "Type": "string" } ], "Location": "s3://amzn-s3-demo-bucket/", "InputFormat": "org.apache.hadoop.mapred.TextInputFormat", "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat", "SerdeInfo": { "SerializationLibrary": "org.apache.hive.hcatalog.data.JsonSerDe" }, "Parameters": { "classification": "json" } }

前の例は、JSON 形式で Amazon S3 に書き込まれたデータの場合です。次のフィールドの値を指定された値に置き換えて、Parquet 形式またはOptimized Row Columnar (ORC) 形式でデータを格納します。

  • Parquet:

    • inputFormat: org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat

    • outputFormat: org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat

    • SerDeInfo.serializationLib: org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe

    • parameters.classification: parquet

  • ORC:

    • inputFormat: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat

    • outputFormat: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat

    • SerDeInfo.serializationLib: org.apache.hadoop.hive.ql.io.orc.OrcSerde

    • parameters.classification: orc