はじめに
どうも!生産技術部で製品の検査工程を担当しているエンジニアです。脱Excel Elastic Stack(docker-compose)でcsvログを分析・可視化 - Elastic Stackとはの続きになります。
対象読者
この記事では、Elastic Stackをそもそも知らない方、これから試そうと思っている方を対象としています。
この記事の内容
公式のブログに記載されていた保守性と再利用性にすぐれたLogstashパイプラインの作り方を実践してみました。パイプラインの数が増えても、メンテナンスできるように[input/filter/output]の3つのフォルダに分けました。
GitLabに設定ファイル一式を置いておきましたので参考にしてください。
リポジトリはこちら -> elastic-stack
分割方法
logstash.confをinput,filter,outputの3つに分割します。
input {
beats {
port => "5044"
}
}
filter {
csv {
columns => ["Step","TestName","Value1","Judge"]
separator => ","
}
}
output {
elasticsearch {
hosts => [ 'elasticsearch' ]
index => "%{[@metadata][beat]}-csv-%{+YYYY}-%{+MM}"
}
}
以下の_in,_filter,_outに分割し、拡張子を.cfg
とします。
input {
beats {
port => "5044"
}
}
filter {
csv {
columns => ["Step","TestName","Value1","Judge"]
separator => ","
}
}
output {
elasticsearch {
hosts => [ 'elasticsearch' ]
index => "%{[@metadata][beat]}-csv-%{+YYYY}-%{+MM}"
}
}
docker-composeの設定
pipelineフォルダを丸ごとマウントします。
logstash01:
build: ./logstash
container_name: logstash01
links:
- es01:elasticsearch
volumes:
- ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
- ./logstash/config/jvm.options:/usr/share/logstash/config/jvm.options
- ./logstash/config/log4j2.properties:/usr/share/logstash/config/log4j2.properties
- ./logstash/config/pipelines.yml:/usr/share/logstash/config/pipelines.yml
- ./logstash/pipeline/:/usr/share/logstash/pipeline/
- ./logstash/extra_patterns/date_jp:/opt/logstash/extra_patterns
networks:
- esnet
pipelineの設定
grob表現の{}
を使ってpath.configに3つのファイルを設定します。[input/filter/output]のディレクトリに分けたため、以下のように記述します。
- pipeline.id: filebeat-processing
path.config: "/usr/share/logstash/pipeline/{input/logstash_in,filter/logstash_filter,output/logstash_out}.cfg"
最後に
フィルタのみを変えたいシチュエーションなどでは、再利用性の面でもメリットがあると思いますが、今のところは恩恵を受けてないです。