将日志数据从Kinesis写入Cloudwatch的最佳方法是什么?

时间:2017-08-21 17:44:16

标签: java amazon-web-services log4j aws-lambda amazon-kinesis

我正在使用资源受限的系统,无法利用文件系统和网络。我在这个系统中生成了一些日志,并将这些日志作为我的响应的一部分发布。这些日志与响应分离并发布到Kinesis。 我在JsonLayout中跟踪日志数据作为Kinesis的有效负载。

{
  "timeMillis" : 1503336276808,
  "thread" : "main",
  "level" : "ERROR",
  "loggerName" : "com.psr",
  "message" : "From tests",
  "endOfBatch" : false,
  "loggerFqcn" : "org.apache.logging.log4j.spi.AbstractLogger",
  "threadId" : 1,
  "threadPriority" : 5
}
{
  "timeMillis" : 1503336312411,
  "thread" : "main",
  "level" : "ERROR",
  "loggerName" : "com.psr",
  "message" : "more logs",
  "endOfBatch" : false,
  "loggerFqcn" : "org.apache.logging.log4j.spi.AbstractLogger",
  "threadId" : 1,
  "threadPriority" : 5
}

我希望将这些日志用于指标,并在将来轻松搜索。 Cloudwatch似乎是实现这些目标的完美目的地。

当前计划是使用AWS lambda并将有效负载直接记录到cloudwatch。这似乎不优雅和嘈杂,因为日志和日志组的时间将被lambda中的最终记录时间包装。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我们使用lambda做了类似的解决方案。

我们创建kinesis作为lambda的触发器,我们做一些清理并将数据插入到弹性搜索中。使用Kibana,我们搜索日志数据并对日志数据应用过滤。

正如您所提到的,您有一定的约束条件可以验证此解决方案适合您。

您还可以查找kinesis firehose与elasticsearch的集成