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