filebeat 自定义处理器来改变日志事件

问题描述 投票:0回答:1

我正在浏览 filebeat 文档,其中它具有处理输入日志事件的有前景的功能 - https://www.elastic.co/guide/en/beats/filebeat/current/configuration-processors.html 我应该使用它能够改变我的logevetns。

支持的处理器有:

  • 添加云元数据
  • 解码_json_字段
  • drop_event drop_fields
  • include_fields

不幸的是,它没有提到如何添加自定义处理器,以便我 可以按照我想要的方式改变日志事件。假设我想以格式处理日志,

timestamp a:1,b:2,c:100

{ "timestamp" : timestamp, "message" : { "a": 1, "b" : 2, "c": 100}}

Logstash 可能是一种解决方案,但它只是从 filebeat 发送到 Logstash,然后再发送到 Elasticsearch 的开销。

filebeat
1个回答
0
投票

您可以通过脚本处理器来完成此操作,您需要提供自定义脚本(javascript)代码来形成新的(已处理)字段。

例如,这是一个示例脚本处理器,用于根据您编写的内容创建新字段:

processors:
  - script:
      when:
        has_fields:
          - "timestamp"
      lang: javascript
      source: |-
        function process(event) {
          var timestamp = event.Get("timestamp");
          var messageObj = {};
          for (var kv of timstamp.split(",")) {
            var kvSplit = kv.split(":");
            messageObj[kvSplit[0]] = kvSplit[1];
          }
          var jsonObj = {timestamp: timestamp, message: messageObj}
          // avoiding collision with existing "message" field, you can use that as well, 
          // and maybe you can rename this field to "message" later after this processor
          event.Put("new_message", JSON.stringify(jsonObj)); // stringifying it, you can try without it.
          return event;
        }
© www.soinside.com 2019 - 2024. All rights reserved.