Logstash 将所有内容放入所有 Elasticsearch 索引中

Posted

技术标签:

【中文标题】Logstash 将所有内容放入所有 Elasticsearch 索引中【英文标题】:Logstash puts everything into all Elasticsearch indexes 【发布时间】:2017-05-10 07:32:05 【问题描述】:

我在/etc/logstash/conf.d 下有 4 个文件。这 4 个文件用于读取 tomcat 的日志和 apache 的日志,监听 log4j 的 3456 端口和读取 CSV 文件。

一切正常,但是当 Logstash 解析我的 CSV 文件时,它会将 CSV 文件的相关数据放入 tomcat 的日志索引、apache 的日志索引、log4j 索引和 CSV 文件索引(如我所愿)。

有我的 CSV 文件的配置文件:

input 
   file 
     path => "/exports/export4hadoop_FULL.csv"
     start_position => "beginning"
     sincedb_path => "/dev/null"
   


filter 
    csv 
      columns => ["idTopic", "idContenu", "typeContenu", "titre", "date", "tag", "message", "typetag", "idGroupTmp"]
      separator => ";"
    
    ruby 
      code => "
        b = event.get('idGroupTmp').split(',')
        arr = Array.new
        for c in b
            arr.push(c)
        end
        event.set('idGroups', arr)
      "
    


output 
  elasticsearch 
    hosts => "bigdatam1:9200"
    index => "collabore_import"
  

我确实将"collabore_index" 指定为"elasticsearch" 下的索引...

【问题讨论】:

【参考方案1】:

Logstash 会将配置文件合并成一个大文件。因此,根据您对其他类型日志的了解,您可能没有正确“分离”输出。

output 
  if ([type] == "csv") 
    elasticsearch 
      hosts => "bigdatam1:9200"
      index => "collabore_import"
    
  

并在输入中相应地设置type

input 
   file 
     path => "/exports/export4hadoop_FULL.csv"
     start_position => "beginning"
     sincedb_path => "/dev/null"
     type => "csv"
   

【讨论】:

谢谢!它工作正常!但我不明白为什么其他配置的文件有效,而这个没有..

以上是关于Logstash 将所有内容放入所有 Elasticsearch 索引中的主要内容,如果未能解决你的问题,请参考以下文章

ELK架构下利用Kafka Group实现Logstash的高可用

ELK架构下利用Kafka Group实现Logstash的高可用

如何使用Jquery将具有某个类的所有元素的内容放入一个变量中

filebeat、logstash过滤器实例

我想将数组的内容放入 h3 元素中,然后将其放入其容器中

为啥 JOptionPane 中的 JScrollPane 不显示其所有内容?