使用Logstash“%{[source]}”仅显示Elasticsearch Index

时间:2017-05-18 15:59:25

标签: elasticsearch logstash logstash-configuration filebeat

我想使用源文件中的文件名作为我的elasticsearch条目的索引,因为我们将使用FileBeats和LogStash将多个不同的日志文件记录到Elasticsearch。

目前我有:

input
{
  beats {
    port => 5044
  }
}

filter {
    json {
    source => "message"
    }   
}

output {
    elasticsearch {
        hosts => "localhost:9200"
        manage_template => false
        index => "%{[source]}"
        document_type => "%{[@metadata][type]}"
        user => ***
        password => ***
    }
}

这为我提供了“C:\ logs \ test-20170518.json”。我希望 test-20170518 仅用作索引。可以使用源来完成吗?

1 个答案:

答案 0 :(得分:3)

您可以使用grok过滤器插件。试试这个

input
{
  beats {
    port => 5044
  }
}

filter {
    json {
        source => "message"
    }  
    grok {
        match => [
            "source",
            "C:\\logs\\%{DATA:myIndex}.json"
      ]
    } 
}


output {
    elasticsearch {
        hosts => "localhost:9200"
        manage_template => false
        index => "%{[myIndex]}"
        document_type => "%{[@metadata][type]}"
        user => ***
        password => ***
    }
}