使用 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 => ***
}
}
我想使用源文件中的文件名作为我的 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 => ***
}
}