使用 Logstash "%{[source]}" 仅显示 Elasticsearch 索引的文件名

Use Logstash "%{[source]}" to show the file name only for the Elasticsearch Index

我想使用源文件中的文件名作为我的 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 仅用作索引。可以使用源来完成吗?

您可以为此使用 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 => ***
    }
}