0

是否有已知的科学方法可以通过 Cloud Watch 将 JSON 数据记录到 Elasticsearch 实例中以及结构化的 JSON 中

也就是说——我在执行 Amazon Lambda 函数期间记录 JSON 数据。

该数据可通过 Amazon 的 Cloud Watch 服务获得。

我已经能够使用functionbeat将此数据导入弹性搜索实例,但数据以非结构化消息的形式出现。

        "_source" : {
          "@timestamp" : "xxx",
          "owner" : "xxx",
          "message_type" : "DATA_MESSAGE",
          "cloud" : {
            "provider" : "aws"
          },
          "message" : ""xxx xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx    INFO    {
  foo: true,
  duration_us: 19418,
  bar: 'BAZ',
  duration_ms: 19
}
""",

我想要做的是获取一个索引到弹性的文档,该文档具有一个foo字段、duration_us字段、bar字段等。而不是一个具有纯文本message字段的文档。

似乎有几种不同的方法可以做到这一点,但我想知道使用弹性的默认工具是否有一个很好的路径来处理这种事情,或者我是否注定要再做一次一次性的黑客攻击。

4

1 回答 1

1

Functionbeat 是一个很好的起点,可以让您尽可能保持“无服务器”。

要处理 JSON,您可以使用decode_json_fields处理器

问题是你message不是真正的 JSON。我能想到的可能解决方案:

  1. 一个dissect处理器,它提取 JSON 消息以将其传递给decode_json_fields- 两者都在 Functionbeat 中。我想知道是否trim_chars不能被滥用——修剪除花括号外的任何可能的字符。
  2. 如果这还不够,您可以在Elasticsearch 的 Ingest 管道中进行所有处理,您可能会在其中将其与Grok 处理器JSON 处理器缝合在一起。
  3. 如果可以使您的生活更简单,请仅记录 JSON 消息;可能将日志级别移动到 JSON 结构中。
于 2020-12-06T23:05:47.230 回答