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の最後のインデックスデータを見ることができます。