在logstash实例运行时,将条目复制到Elastic Search中

时间:2015-02-10 04:14:16

标签: logstash

我一直在尝试将日志从logstash发送到elasticsearch.Suppose我正在运行一个logstash实例,当它运行时,我对logstash实例正在监视的文件进行了更改,然后更改了之前的所有日志保存在elasticsearch中的内容会再次保存,因此会形成重复的内容。

此外,当logstash实例关闭并再次重新启动时,日志会在elasticsearch中重复。

我该如何解决这个问题? 如何只将文件中最新添加的条目从logstash发送到elasticsearch? 我的logstash实例命令如下: bin / logstash -f logstash-complex.conf

,配置文件为:

input
 {
  file
 {

     path => "/home/amith/Desktop/logstash-1.4.2/accesslog1"

  }
}

filter
 {
  if [path] =~ "access"
 {
    mutate 
{
 replace =>
 { "type" => "apache_access" } }
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
  elasticsearch {
    host => localhost 
    index => feb9
  }
  stdout { codec => rubydebug }
}

3 个答案:

答案 0 :(得分:4)

我得到了解决方案。 我正在打开文件,添加一条记录并保存,因为每次保存时,logstash都将同一文件视为不同的文件,因为它为同一文件注册了不同的inode编号。

解决方案是在不打开文件的情况下向文件追加一行,但运行以下命令。

echo"要添加到文件的字符串" >>文件名

答案 1 :(得分:1)

[ELK堆叠]

我想要一些自定义配置
it("should call setSelectedGender", function () {
    spyOn(controller, 'setSelectedGender').and.callThrough();
    var value = controller.setSelectedGender("Male");
    //how do I validate the if condition and compare it 
});

所以第一步是进行备份:/etc/logstash/conf.d/vagrant.conf 这导致logstash在/etc/logstash/conf.d/vagrant.conf.bk中的每个条目的elasticseach中添加2个条目 同样如果我在ES中的<file>.log;中有3个文件我在/etc/logstash/conf.d/*.conf.*

中每行有8个条目

答案 2 :(得分:0)

正如你在问题中提到的那样。

  

当logstash实例关闭并再次重新启动时,日志会在elasticsearch中重复。

所以,你可能已经删除了.since_db。请看here。 尝试具体说明since_dbstart_position。例如:

input
{
    file
    {
        path => "/home/amith/Desktop/logstash-1.4.2/accesslog1"
        start_position => "end"
        sincedb_path => /home/amith/Desktop/sincedb
    }
}