Logstash:複数の入力を処理します

Logstash:複数の入力を処理します

Pipleline Logstashの全体は、3つの部分に分かれて:

  • 入力プラグイン:抽出データ。これは、ログファイルから来ることができ、TCPまたはUDPリスナー一のプラグイン(例えばシスログ又はIRCのような)プロトコル固有の番号、(例えばRedisの、AQMP又はカフカなど)もキューイングシステム。この段階では、着信イベントのソースをマークするイベントについてのメタデータを使用しています。
  • フィルタプラグイン:プラグインの豊富なデータ変換
  • 出力プラグイン:処理されたイベントは、そのようなRedisの、AQMP又はカフカなどElasticSearchまたは他の文書データベース、またはキューイングシステムなど、他のコンテンツにロードされます。また、APIと通信するように構成することができます。PagerDutyのような出力Logstash何かに接続することができます。

ここでの入力は、複数の同時作業員はフィルタと出力を扱うことができ、複数の入力をサポートすることができます。

Logstashプロフィール

Logstash設定ファイルを次のように

# cat multi-input.conf

    input {
      file {
        path => "/Users/liuxg/data/multi-input/apache.log"
        start_position => "beginning"
        sincedb_path => "/dev/null"
        # ignore_older => 100000
        type => "apache"
      }
    }
     
    input {
      file {
        path => "/Users/liuxg/data/multi-input/apache-daily-access.log"
        start_position => "beginning"
        sincedb_path => "/dev/null"
        type => "daily"
      }
    }
     
    filter {
        grok {
            match => {
                "message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response:int} (?:-|%{NUMBER:bytes:int}) %{QS:referrer} %{QS:agent}'
            }
        }
     
        if[type] == "apache" {
            mutate {
                add_tag => ["apache"]
            }
        }
     
        if [type] == "daily" {
            mutate {
                add_tag => ["daily"]
            }
        } 
    }
     
     
    output {
        stdout {
            codec => rubydebug
        }
     
        if "apache" in [tags] {
            elasticsearch {
                index => "apache_log"
                template => "/Users/liuxg/data/apache_template.json"
                template_name => "apache_elastic_example"
                template_overwrite => true
          } 
        }
     
        if "daily" in [tags] {
            elasticsearch {
                index => "apache_daily"
                template => "/Users/liuxg/data/apache_template.json"
                template_name => "apache_elastic_example"
                template_overwrite => true
          } 
        }   
    }

問題の説明を容易にするために、二つの入力。別のログファイルにどの対応します。Apacheと毎日:入力の両方のために、異なるタイプを表すために使用されます。その形式が同じであるにも関わらず、彼らは同じ共通のGROKフィルタ使用し、我々はまだ個別にそれらに対処したいと思います。これを行うには、タグを追加します。あなたはまた、区別するためにフィールドを追加することができます。出力部において、出力フィルタ部によるタグは、異なるインデックスにそれらに設けられています。

ファイル名を指定して実行Logstash

あなたは、次のコマンドを実行できます。

./bin/logstash -f ~/data/multi-input/multi-input.conf

この例を実行する場合、上記のコマンドは、その格納位置変更マルチinput.confファイルに応じて変更する必要があります。

イベントが処理され、結果が表示さ最初によれば、毎日出力を見ることができます。その後、Apacheのデータ処理を開始しました。実用的なアプリケーションでは、我々は、このようなリスニングのポート他のビートからのデータなど、さまざまなデータソースを有していてもよいです。

私たちは、中Kibanaの最後のインデックスデータを見ることができます。

おすすめ

転載: www.cnblogs.com/sanduzxcvbnm/p/12076546.html