web-dev-qa-db-ja.com

logstash.confファイルに複数のインデックスを作成する方法は?

次のコードを使用して、logstash.confにインデックスを作成しました

output {  
    stdout {codec => rubydebug}  
    elasticsearch {  
        Host => "localhost"  
        protocol => "http"  
        index => "trial_indexer"   
    }
} 

別のインデックスを作成するには、通常、上記のコードでインデックス名を別のインデックスに置き換えます。同じファイルに多くのインデックスを作成する方法はありますか?私はELKが初めてです。

16
kaks

いずれかのフィールドの値に基づいて、インデックス名にパターンを使用できます。ここでは、インデックスに名前を付けるためにtypeフィールドの値を使用します。

output {  
    stdout {codec => rubydebug}  
    elasticsearch {  
        Host => "localhost"  
        protocol => "http"  
        index => "%{type}_indexer"   
    }
} 

同じESホストまたは異なるESホストのいずれかに複数のelasticsearch出力を使用することもできます。

output {  
    stdout {codec => rubydebug}  
    elasticsearch {  
        Host => "localhost"  
        protocol => "http"  
        index => "trial_indexer"   
    }
    elasticsearch {  
        Host => "localhost"  
        protocol => "http"  
        index => "movie_indexer"   
    }
} 

または、いくつかの変数に基づいてドキュメントを異なるインデックスにルーティングすることもできます。

output {  
    stdout {codec => rubydebug}
    if [type] == "trial" {
        elasticsearch {  
            Host => "localhost"  
            protocol => "http"  
            index => "trial_indexer"   
        }
    } else {
        elasticsearch {  
            Host => "localhost"  
            protocol => "http"  
            index => "movie_indexer"   
        }
    }
} 

[〜#〜] update [〜#〜]

Logstash 2および5では、構文が少し変更されています。

output {  
    stdout {codec => rubydebug}
    if [type] == "trial" {
        elasticsearch {  
            hosts => "localhost:9200"  
            index => "trial_indexer"   
        }
    } else {
        elasticsearch {  
            hosts => "localhost:9200"  
            index => "movie_indexer"   
        }
    }
} 
51
Val