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

标签 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 中的最终日志记录时间包裹。

有更好的方法吗?

最佳答案

我们已经使用 lambda 完成了类似的解决方案。

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

正如您所提到的,您有某些限制来验证此解决方案是否适合您。

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

关于java - 将日志数据从 Kinesis 写入 Cloudwatch 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45802912/

相关文章:

javascript - 如何使用 Javascript 读取 JSON 数组以获取值(如果存在)

java - 如何同时进行pdf书写和复印?

java - 如何在我的代码中实现ASyncTask来进行数据库操作

amazon-web-services - 拒绝除访问 S3 存储桶内私有(private)文件夹的用户之外的所有用户的访问

java - Docker+Log4j最佳实践

java - 请正确初始化log4j系统。在运行 Web 服务时

java - Eclipse 如何对短语/正则表达式的命中执行如此快速的搜索

java - 获取已使用的总磁盘空间和剩余磁盘空间?

ruby-on-rails - 在Rails应用程序中将CarrierWave与Amazon Elastic Transcoder一起使用

grails - 如何解决此错误消息 "log4j:ERROR Property missing when configuring log4j: grails"