elasticsearch 麋鹿堆叠-Elasticsearch索引创建(logstash),elasticsearch,logstash,kibana,logstash-grok,logstash-configuration,elasticsearch,Logstash,Kibana,Logstash Grok,Logstash Configuration" /> elasticsearch 麋鹿堆叠-Elasticsearch索引创建(logstash),elasticsearch,logstash,kibana,logstash-grok,logstash-configuration,elasticsearch,Logstash,Kibana,Logstash Grok,Logstash Configuration" />

elasticsearch 麋鹿堆叠-Elasticsearch索引创建(logstash)

elasticsearch 麋鹿堆叠-Elasticsearch索引创建(logstash),elasticsearch,logstash,kibana,logstash-grok,logstash-configuration,elasticsearch,Logstash,Kibana,Logstash Grok,Logstash Configuration,我正在用麋鹿来分析我们的日志文件。根据可用的文档,我成功地在我的电脑中设置了堆栈。现在我面临着创建弹性搜索索引的问题。以前我使用filebeat->logstash->elasticsearch->kibana组合,并使用下面的logstash.conf文件将数据发送到elasticsearch input { beats { port => 5044 type => "log" } } output { elasticsearch {

我正在用麋鹿来分析我们的日志文件。根据可用的文档,我成功地在我的电脑中设置了堆栈。现在我面临着创建弹性搜索索引的问题。以前我使用filebeat->logstash->elasticsearch->kibana组合,并使用下面的logstash.conf文件将数据发送到elasticsearch

input {
  beats {
   port => 5044
   type => "log"
  }
}

output {
  elasticsearch {
   hosts => "localhost:9200"
   manage_template => false
   index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
   document_type => "%{[@metadata][type]}"
  }
}
弹性搜索中的索引被评估为

 "filebeat-*" 
从表情

  index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
现在,我将logstash.conf更改为基于实际日志文件

input { 

file
{
    path => "C:\logs\application.log"
    start_position => "beginning"
    codec => 
    multiline {
      charset => "ISO-8859-1"
      pattern => "^%{TIMESTAMP_ISO8601}"
      max_lines => 1000
      negate => true
      what => "previous"
    } 
}

}

filter {
 mutate {
     gsub => [ "message", "\r", "" ]
   }

   grok {
    patterns_dir => "./patterns"
    match => {"message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL1:loglevel} %{THREAD:thread} %{IP5:remoteipaddress} %{JAVA:logclass} %{GREEDYDATA:details}"}
  add_field => [ "received_at", "%{@timestamp}" ]
  add_field => [ "received_from", "%{host}" ]

  }
   date {
            match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
            remove_field => [ "timestamp" ]
        }


}

output {

  elasticsearch { 
                hosts => "localhost:9200"
    manage_template => false
     index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
     document_type => "%{[@metadata][type]}"
                }
                file {
     path => "C:\logs\output.txt"
  }
}
在本例中,logstash对conf文件很满意,但我为弹性搜索建议的索引没有得到正确的评估

如果我使用head插件检查elastic search

http://localhost:9200/_plugin/head/
索引显示为

%{[@metadata][beat]}-

我不确定为什么现在没有对索引表达式求值。任何解决这个问题的建议都会很有帮助

提前感谢,,
San

某些logstash插件使用元数据来传输不希望存储在文档中的字段。在第一个示例中,beats输入设置某些元数据,稍后在elasticsearch输出中使用这些元数据来设置索引和类型。由于文件输入没有设置这些元数据字段,logstash将输出变量名而不是空字符串,因此它将索引设置为“%{[@metadata][beat]}-2016.04.05”,日期是已知的,但元数据字段beat是未知的

如果您只是将elasticsearch输出保留为默认值,它应该可以正常工作:

elasticsearch{
hosts=>“本地主机:9200”
}


如果将manage_模板保留为false,它也不会应用
logstash-
模板,字段映射可能有点不正确,因此我建议再次将其保留为默认值(true)。

既然您知道应该调用什么索引,只需将其放在elasticsearch outoput中:

Since you know what the index should be called, just put it in the `elasticsearch` output:

output {
  elasticsearch { 
    hosts => "localhost:9200"
    manage_template => false
    index => "filebeat-%{+YYYY.MM.dd}"
    document_type => "whatever_type_filebeat_put_in"
  }
}