はじめに
Logstashのconfがめちゃくちゃ長い。私が見た時で3000行くらい。。。
修正する度にうんざりするので、ある程度の粒度で分割した。
注意点
logstashのconfを分割するときによく出てくるのがMultiple Pipelinesであるが、
Multiple Pipelinesの場合、各Pipelineごとにリソース割り当てを調整しないといけないため、ここではMultiple Pipelinesは使用しない。
Multiple Pipelines
https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html
分割した場合、Logstashどのように読み込むか
Logstashは、処理をINPUT/FILTER/OUTPUTの3つに分けることが出来る。
設定ファイルに記載されている内容をLogstashが勝手にINPUT/FILTER/OUTPUTどれに当てはまるか識別してくれる。
読み込み順序は、INPUT→FILTER→OUTPUTの順番になる。
さらにINPUT/FILTER/OUTPUT内で設定ファイルが複数ある場合、設定ファイル名の英数文字を昇順で読む。
例えば、FILTER処理の中で共通処理をかませてから各処理を実行することも出来る。
./
├── 1-common.conf
└── 何かの処理.conf
必ず1-common.conf
を実行してから、何かの処理.conf
が実施されるようになる。
構成
FILTERの処理を分割し可読性を上げることにした。今回FILTER内で処理の依存関係はないので、設定ファイル名は気にしていない。
confのディレクトリ構成
./config
├── input.conf
├── category_A_filter.conf
├── category_B_filter.conf
├── category_C_filter.conf
└── output.conf
起動
/${logstah_home}/bin/logstash --path.config=./config/*
設定ファイルを全て読み込ませるように起動している。上記の例はconfの設定のみにフォーカスしている。他起動オプションは各自で足すこと。