我有几台安装了文件拍的Web服务器,并且我希望每个主机具有多个索引。
我当前的配置如下
input {
beats {
ports => 1337
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}"}
}
geoip {
source => "clientip"
}
}
output {
elasticsearch {
if [beat][hostname] == "luna"
{
hosts => "10.0.1.1:9200"
manage_template => true
index => "lunaindex-%{+YYYY.MM.dd}"
document_type => "apache"
}
}
}
但是上述conf结果
这是if语句发生的地方。有什么帮助吗?
我想以嵌套格式将上述内容作为
if [beat][hostname] == "lina"
{
index = lina
}
else if [beat][hostname] == "lona"
{
index = lona
}
等。有什么帮助吗?
最佳答案
要访问任何内部字段,您必须将其用%{}括起来。
试试这个
%{[beat][hostname]}
有关更多说明,请参见this。
更新:
不能将%{[beat] [hostname]}与==一起使用,请尝试
if "lina" in [beat][hostname]{
index = lina
}
关于elasticsearch - Logstash条件输出到elasticsearch(每个文件拍主机名的索引),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43914397/