如何实施Logstash过滤器以处理不同的日志文件格式/类型

时间:2018-12-06 00:01:27

标签: logstash filebeat

我正在摄取许多日志,包括 / var / log / syslog / var / log / messages ,还有一些通用事件格式(CEF)的专有日志)以及其他各种格式的专有日志。这些日志的条目从运行在各个节点上的Filebeat拍摄到Logstash,例如:

filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /var/log/messages
      - /var/log/syslog
      - /var/log/acme/audit.log
      - /var/log/acme/debug.log
      - /var/log/acme/console.log

我为这些更专有的日志编写了dissect过滤器。每个过滤器本身都能正常工作,将消息字段重新映射,将键值对爆炸,直至达到我想要的效果。

我不知道该怎么做,将Logstash配置为同时激活所有这些dissect过滤器,方法是通过按文件系统路径(或来源)在正确的dissect代码日志上运行一个日志),或者注意到一个dissect子句失败,然后尝试使用另一个子句。

可以按照我暗示的方式在Logstash中完成此操作吗?如果不是,那么Filebeat中是否有配置可以在日志条目到达Logstash之前对其进行区分,以使Logstash为不同的日志条目运行不同的筛选器?

1 个答案:

答案 0 :(得分:1)

(不知道为什么baudsp没有将他的评论作为答案,但我将使其更加完整。)

该解决方案在Elastic文档中 https://www.elastic.co/guide/en/beats/filebeat/current/exported-fields-log.html。用来说明在任何给定情况下哪些字段可用的方法日志是:

  1. 在Logstash处触发没有定义过滤器的日志条目。
  2. 在Kibana中创建索引模式,并检查其与数据关联的字段列表。
  3. 上面#2中的列表中以及Elastic文档的导出字段列表中的所有内容都可以在过滤器中编码为(即:在条件表达式中使用)。