如何监控AWS Kinesis Firehose中JSON事件与Parquet转换情况?
可行的每日监控方案
一、JSON事件流全链路监控(上游→SQS→Lambda→Firehose)
- SQS队列层面:直接用CloudWatch Metrics,重点盯
NumberOfMessagesReceived(每日接收的总JSON事件数)、NumberOfMessagesDeleted(Lambda处理成功的事件数)、ApproximateNumberOfMessagesVisible(待处理积压量)。如果要精准统计每日总量,用CloudWatch Insights写查询按天聚合:SELECT SUM(NumberOfMessagesReceived) AS total_json_events FROM SCHEMA("AWS/SQS", "QueueName") WHERE QueueName = '你的队列名称' AND time > ago(1d) - Lambda处理层面:靠CloudWatch Metrics跟踪
Invocations(调用次数)、Errors(处理失败次数)、BatchItemFailures(批量里的单条失败事件数)。另外可以在Lambda代码里加个自定义埋点,每次处理批量时把当前批次的事件数上报到CloudWatch自定义指标JsonEventsProcessedPerBatch,方便按天累加总处理量。 - Firehose入站层面:看CloudWatch Metrics里的
IncomingRecords和IncomingBytes,统计每日进入Firehose的JSON事件总数和数据量,和SQS、Lambda的统计数据交叉比对,确保链路没丢数据。
二、Parquet转换与S3存储监控
- Firehose转换环节:盯CloudWatch Metrics的
DataConversionSuccess(转换成功的原始事件数)、DataConversionFailed(转换失败数),直接反映JSON转Parquet的成功率。另外OutgoingRecords是Firehose写入S3的Parquet对应的原始事件计数(单个Parquet包含多个事件,这个指标是按原始事件算的),和IncomingRecords对比就能验证转换的完整性。 - S3存储层面:
- 用CloudWatch Metrics跟踪S3桶的
NumberOfObjects(每日新增的Parquet文件数)、BucketSizeBytes(每日新增数据量),直观了解存储产出情况。 - 用Athena统计每日Parquet里的事件总数:先给S3的Parquet存储路径建Athena表,然后写SQL查询当日的事件数:
这个数值要和Firehose的SELECT COUNT(*) AS total_parquet_events FROM 你的Athena表名 WHERE date >= date_trunc('day', current_date - interval '1' day) AND date < date_trunc('day', current_date)OutgoingRecords对齐,确保最终存储的事件没少。
- 用CloudWatch Metrics跟踪S3桶的
三、每日汇总与异常告警
- CloudWatch仪表盘:把上面所有关键指标(JSON总事件数、Lambda失败数、Firehose转换失败数、Parquet总事件数、S3新增文件数)放到一个自定义仪表盘里,设置每日自动刷新,打开就能看全链路情况。
- 每日监控简报:用CloudWatch Events触发Lambda,每天固定时间(比如凌晨1点)执行:
- 查询CloudWatch Metrics和Athena的统计数据
- 整理成简洁的表格或文字格式
- 通过SNS推送到邮箱或Slack频道,形成每日自动简报
- 异常告警:给关键指标设CloudWatch告警规则,比如JSON事件数和Parquet事件数差值超过0.1%、Lambda错误率超过1%、Firehose转换失败数大于0时,立即触发SNS告警,第一时间排查问题。
内容的提问来源于stack exchange,提问作者Ajay Kumar
相关产品推荐
相关产品推荐

