web-dev-qa-db-ja.com

Logstashで複数の異種入力を処理する方法は?

技術ログとビジネスログなど、まったく異なる2種類のログがあるとします。

  • 生の技術ログは、gelf出力を使用してgraylog2サーバーにルーティングされます。
  • jsonビジネスログは、専用のelasticsearch_http出力を使用してelasticsearchクラスターに保存されます。

たとえば、Syslog-NGを使用すると、構成ファイルでは、ディスパッチする前に個別に処理できるいくつかの異なる入力を定義できます。 Logstashができないようです。 1つのインスタンスを2つの特定の構成ファイルで開始できる場合でも、すべてのログは同じチャネルを使用し、同じ処理を適用しています...

さまざまな種類のログがあるのと同じ数のインスタンスを実行する必要がありますか?

92
David

さまざまな種類のログがあるのと同じ数のインスタンスを実行する必要がありますか?

番号! 1つのインスタンスのみを実行して、異なるタイプのログを処理できます。

Logstash構成ファイルでは、異なる type を使用して各入力を指定できます。次に、フィルターで if を使用して異なる処理を区別できます。また、出力では、異なる宛先への「if」出力を使用できます。

input {
    file {
            type => "technical"
            path => "/home/technical/log"
    }
    file {
            type => "business"
            path => "/home/business/log"
    }
} 
filter {
    if [type] == "technical" {
            # processing .......
    }
    if [type] == "business" {
            # processing .......
    }
}
output {
    if [type] == "technical" {
            # output to gelf
    }
    if [type] == "business" {
            # output to elasticsearch
    }
}

これがあなたを助けることを願っています:)

182
Ben Lim

複数のファイル入力にタグを使用しました:

input {
    file {
        type => "Java"
        path => "/usr/aaa/logs/stdout.log"
        codec => multiline {
            ...
        },
        tags => ["aaa"]
    }

    file {
        type => "Java"
        path => "/usr/bbb/logs/stdout.log"
        codec => multiline {
                ...
        }
        tags => ["bbb"]
    }
}
output {
    stdout {
        codec => rubydebug
    }
    if "aaa" in [tags] {
        elasticsearch {
            hosts => ["192.168.100.211:9200"]
            index => "aaa"
            document_type => "aaa-%{+YYYY.MM.dd}"
        }
    }

    if "bbb" in [tags] {
        elasticsearch {
            hosts => ["192.168.100.211:9200"]
            index => "bbb"
            document_type => "bbb-%{+YYYY.MM.dd}"
        }
    }
}
14
Robin Wang

LogstashはInputセクションで3つ以上のファイルを読み込むことはできないと思います。以下を試してください

input {
    file {
            type => "technical"
            path => "/home/technical/log"
    }
    file {
            type => "business"
            path => "/home/business/log"
    }
 file {
            type => "business1"
            path => "/home/business/log1"
    }
} 
0
KM Prak