elasticsearch - ELK Stack-Elasticsearch索引创建(logstash)

标签 elasticsearch logstash kibana logstash-grok logstash-configuration

我正在尝试使用ELK分析我们的日志文件。按照可用的文档,设法在我的电脑中设置堆栈。现在,我面临着 flex 搜索索引创建的问题。以前我使用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]}"
  }
}
并将 flex 搜索中的索引评估为
 "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文件感到满意,但是我建议用于 flex 搜索的索引未得到正确评估。
如果我使用头插件检查 flex 搜索,
http://localhost:9200/_plugin/head/
索引显示为
%{[@metadata][beat]}-
enter image description here
我不确定为什么现在不评估索引表达式。解决此问题的任何指示都将有所帮助。
提前致谢,

最佳答案

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

如果仅将elasticsearch输出保留为默认设置,则应该可以正常工作:
elasticsearch { hosts => "localhost:9200" }
如果将manage_template保留为false,则它也不会应用logstash-模板,并且字段映射可能会有些偏离,因此我建议再次将其保留为默认值(true)。

关于elasticsearch - ELK Stack-Elasticsearch索引创建(logstash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35733265/

相关文章:

elasticsearch - Logstash错误:解析xml文件

elasticsearch - ELK 上的通知系统

elasticsearch - Solr 集合和核心是否类似于 Elasticserarch 索引和类型?

多字段搜索的 Elasticsearch 语法错误

elasticsearch - Elasticsearch:合并术语查询和匹配查询

mysql - Mnesia DB Elasticsearch

redis - NLog 输出 `message` 属性中的所有字段

Java 实体未映射到 ElasticSearch GeoPoint 属性

mysql - 将多个MySQL数据库插入ElasticSearch

elasticsearch - 分布式跟踪日志记录并与 Logstash、Kibana 和 ElasticSearch 集成