【问题标题】:logstash not reading logtype field from beatslogstash 没有从 beats 中读取 logtype 字段
【发布时间】:2016-10-27 12:55:01
【问题描述】:

我在一个节点上运行 logstash filebeat 和 elasticsearch。

我正在尝试让 logstash 识别标记为“syslog”的日志并将它们转储到名为“syslog”的索引中,但它似乎看不到标签,因为它们都进入了“未分类”索引(我的捕获所有默认索引)

这是我的节拍配置

/etc/filebeat/filebeat.yml
filebeat:
  prospectors:
    -
      paths:
        - /var/log/messages
      fields:
        type: syslog
output:
  logstash:
    hosts: ["localhost:9901"]

这是我的logstash配置文件

/etc/logstash/conf.d/logstash_server_syslog.conf
input {
    beats {
        port => "9901"
    }
}

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

output {
  if [type] == "syslog" {
    elasticsearch {
      hosts => ["10.0.0.167:9200", "10.0.0.168:9200"]
      index => "syslog"
    }
  } else {
    elasticsearch {
      hosts => ["10.0.0.167:9200", "10.0.0.168:9200"]
      index => "uncategorized"
    }
  }
}

【问题讨论】:

    标签: elasticsearch logstash elastic-stack filebeat


    【解决方案1】:

    查看输出(带有 stdout{} 节)可以确认这一点,但我猜你错过了the doc 的这一部分:

    默认情况下,您指定的字段 [在“字段”配置中] 将分组在一个 输出文档中的字段子字典。存储自定义 字段作为顶级字段,请将 fields_under_root 选项设置为 true。

    【讨论】:

      【解决方案2】:

      使用 document_type 配置选项在 Filebeat 中设置自定义 type 字段。

      filebeat:
        prospectors:
          - paths:
              - /var/log/messages
            document_type: syslog
      

      这会将 @metadata.type 字段设置为与 Logstash 一起使用,而自定义字段则不会。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多