0

我正在尝试按照本教程设置 ELK Stack:https ://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14- 04

但是,Logstash 有一个问题:如果输出部分中有模式,则服务将停止,例如 index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"

但是,对于常量字符串,它可以正常工作:index => "nginx_web"

有没有办法跟踪从 filebeat 传入的数据以检查有问题的部分?

logstash 2.3.2,文件节拍 1.2.3

这是一个完整的logstash.conf:

input {
  beats {
    port => 5044
    ssl => true
    ssl_certificate => "/path/to/certs/logstash.crt"
    ssl_key => "/path/to/private/logstash.key"
  }
}

filter {
  grok {
    match => {
        "message" => "%{IPORHOST:hostname} %{IPORHOST:clientip} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{DATA:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{INT:response} (?:%{INT:bytes}|-) \"%{NOTSPACE:referrer}\" %{QS:useragent} %{NUMBER:resptime}"
    }
    remove_field => [ "message", "fields", "@timestamp", "input_type", "host", "request" ]
  }
  mutate {
    gsub => [ "useragent", "\"{1}", "" ]
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

提前致谢!

4

1 回答 1

1

您不应删除该@timestamp字段,因为它用于%{+YYYY.MM.dd}索引名称中的部分。

如果您绝对要删除该@timestamp字段,另一种方法是在删除该字段之前为索引名称添加一个新@timestamp字段。

在之前添加remove_field

add_field => { "index" => "beat-%{+YYYY.MM.dd}"}

然后%{index}在你的elasticsearch输出中使用。

于 2016-06-02T10:35:12.143 回答